git-maintain 0.3.0 → 0.4.0.pre.3.ge7030b9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +12 -0
  3. data/lib/branch.rb +46 -14
  4. data/lib/repo.rb +1 -1
  5. metadata +5 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6594ab929337bee6a9a474f853a1178452693fbe3371b870d4463a34378bcce2
4
- data.tar.gz: bb48d81f0c1284be76177468c66700d39a6ccffaec0d841b47dcaea8b319e52f
3
+ metadata.gz: 42036590702a7e9e20d4a04c98ec5eec4acc5595abdb6828a676ec3a0ce235ee
4
+ data.tar.gz: c107094b1d94181c4f973e0f0e22ac4e28a98b3163222c48659f89ba623fc23d
5
5
  SHA512:
6
- metadata.gz: c336b76aa701aeb23a17c50249dda759722162d8966816c3e2dede05d6253fe06750ce4e01e5a2fbedd4841fe389abfc84829cb6535b80325d20ec75c1b29776
7
- data.tar.gz: a4e3b8450484e8b01d316545e1d44035ee2905eb3464991abb02a1a2d1e5db0fbd1dcdd794c302aff979f7c8e933c4f6daf5de87a61fa16eeed433e729268fcf
6
+ metadata.gz: 4c46eafa55c9264d8b0c519c060d2778d7f09551a885dc1afdb1b61ee53f48047900ac602f7b7c231bc93310b439bdd79d84540b75430c460777b6532f36c359
7
+ data.tar.gz: 4c0c3bdd430b6cadd0d430818326ff86606cb62469392f7b7af0bd1fd214fef6097050f76b8c14f51369a1e75530764c6103d90d2926a259e5f6648a5e2bf677
data/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+
2
+ * Handle bad Fixes tag
3
+ * Speed up steal feature by remembering last point checked
4
+ * Add Upstream commit tag when cherry picking commits
5
+
6
+ ------------------
7
+ 0.4.0 (2018-10-15)
8
+ ------------------
9
+
10
+ * Fix gemspec generation date
11
+ * Fix cp command
12
+
1
13
  ------------------
2
14
  0.3.0 (2018-10-09)
3
15
  ------------------
data/lib/branch.rb CHANGED
@@ -73,6 +73,11 @@ module GitMaintain
73
73
  optsParser.banner += "[-T]"
74
74
  optsParser.on("-T", "--no-travis", "Ignore Travis build status and push anyway.") {
75
75
  |val| opts[:no_travis] = true}
76
+ when :steal
77
+ optsParser.banner += "[-a]"
78
+ optsParser.on("-a", "--all", "Check all commits from master. "+
79
+ "By default only new commits (since last successful run) are considered.") {
80
+ |val| opts[:all] = true}
76
81
  end
77
82
  end
78
83
 
@@ -169,20 +174,44 @@ module GitMaintain
169
174
  end
170
175
 
171
176
  # Cherry pick an array of commits
172
- def cherry_pick(opts)
173
- if opts[:commits].length > 0 then
174
- @repo.runGit("cherry-pick #{opts[:commits].join(" ")}")
177
+ def cp(opts)
178
+ opts[:commits].each(){|commit|
179
+ @repo.runGit("cherry-pick #{commit}")
175
180
  if $? != 0 then
176
181
  puts "Cherry pick failure. Starting bash for manual fixes. Exit shell to continue"
177
182
  @repo.runSystem("bash")
178
183
  puts "Continuing..."
179
184
  end
180
- end
185
+ make_pretty(commit)
186
+ }
181
187
  end
182
188
 
183
189
  # Steal upstream commits that are not in the branch
184
190
  def steal(opts)
185
- steal_all(opts, "#{@stable_base}..origin/master")
191
+ base_ref=@stable_base
192
+
193
+ # If we are not force checking everything,
194
+ # try to start from the last tag we steal upto
195
+ if opts[:all] != true then
196
+ sha = @repo.runGit("rev-parse 'git-maintain/steal/last/#{@stable_base}' 2>&1")
197
+ if $? == 0 then
198
+ base_ref=sha
199
+ puts "# INFO: Starting from last successfull run:"
200
+ puts "# INFO: " + @repo.runGit("show --format=oneline #{base_ref}")
201
+ end
202
+ end
203
+
204
+ master_sha=@repo.runGit("rev-parse origin/master")
205
+ res = steal_all(opts, "#{base_ref}..#{master_sha}")
206
+
207
+ # If we picked all the commits (or nothing happened)
208
+ # Mark the current master as the last checked point so we
209
+ # can just steal from this point on the next run
210
+ if res == true then
211
+ @repo.runGit("tag -f 'git-maintain/steal/last/#{@stable_base}' origin/master")
212
+ puts "# INFO: Marking new last successfull run at:"
213
+ puts "# INFO: " + @repo.runGit("show --format=oneline #{master_sha}")
214
+ end
186
215
  end
187
216
 
188
217
  # List commits in the branch that are no in the stable branch
@@ -295,11 +324,12 @@ module GitMaintain
295
324
  `rm -f #{msg_path}`
296
325
  end
297
326
 
298
- def is_in_tree?(commit)
299
- fullhash=@repo.runGit("rev-parse #{commit}")
327
+ def is_in_tree?(commit, src_commit=commit)
328
+ fullhash=@repo.runGit("rev-parse --verify --quiet #{commit}")
300
329
  # This might happen if someone pointed to a commit that doesn't exist in our
301
330
  # tree.
302
331
  if $? != 0 then
332
+ puts "# WARNING: Commit #{src_commit} points to a SHA #{commit} not in tree"
303
333
  return false
304
334
  end
305
335
 
@@ -335,7 +365,7 @@ module GitMaintain
335
365
  # If this commit fixes anything, but the broken commit isn't in our branch we don't
336
366
  # need this commit either.
337
367
  if fixescmt != "" then
338
- if is_in_tree?(fixescmt) then
368
+ if is_in_tree?(fixescmt, commit) then
339
369
  return true
340
370
  else
341
371
  return false
@@ -435,12 +465,12 @@ module GitMaintain
435
465
 
436
466
  # If the commit doesn't apply for us, skip it
437
467
  if is_relevant?(orig_cmt) != true
438
- return
468
+ return true
439
469
  end
440
470
 
441
471
  if is_in_tree?(orig_cmt) == true
442
472
  # Commit is already in the stable branch, skip
443
- return
473
+ return true
444
474
  end
445
475
 
446
476
  # Check if it's not blacklisted by a git-notes
@@ -448,18 +478,18 @@ module GitMaintain
448
478
  # Commit is blacklisted
449
479
  puts "Skipping 'blacklisted' commit " +
450
480
  @repo.runGit("show --format=oneline --no-patch --no-decorate #{orig_cmt}")
451
- return
481
+ return true
452
482
  end
453
483
 
454
484
  do_cp = confirm_one(opts, orig_cmt)
455
- return if do_cp != true
485
+ return false if do_cp != true
456
486
 
457
487
  begin
458
488
  pick_one(commit)
459
489
  rescue CherryPickErrorException => e
460
490
  puts "Cherry pick failed. Fix, commit (or reset) and exit."
461
491
  @repo.runSystem("/bin/bash")
462
- return
492
+ return false
463
493
  end
464
494
 
465
495
  # If we didn't find the commit upstream then this must be a custom commit
@@ -474,9 +504,11 @@ module GitMaintain
474
504
  end
475
505
 
476
506
  def steal_all(opts, range)
507
+ res = true
477
508
  @repo.runGit("log --no-merges --format=\"%H\" #{range} | tac").split("\n").each(){|commit|
478
- steal_one(opts, commit)
509
+ res &= steal_one(opts, commit)
479
510
  }
511
+ return res
480
512
  end
481
513
  end
482
514
  end
data/lib/repo.rb CHANGED
@@ -126,7 +126,7 @@ module GitMaintain
126
126
  new_tags = local_tags - remote_tags
127
127
  if new_tags.empty? then
128
128
  puts "All tags are already submitted."
129
- # return
129
+ return
130
130
  end
131
131
 
132
132
  puts "This will officially release these tags: #{new_tags.join(", ")}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-maintain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0.pre.3.ge7030b9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Morey-Chaisemartin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-13 00:00:00.000000000 Z
11
+ date: 2019-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: github-release
@@ -58,12 +58,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
58
  version: '0'
59
59
  required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ">="
61
+ - - ">"
62
62
  - !ruby/object:Gem::Version
63
- version: '0'
63
+ version: 1.3.1
64
64
  requirements: []
65
- rubyforge_project:
66
- rubygems_version: 2.7.7
65
+ rubygems_version: 3.0.2
67
66
  signing_key:
68
67
  specification_version: 4
69
68
  summary: Your ultimate script for maintaining stable branches.