rebase_pusher 0.1.0 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 210c9f95029d1cae3b877543d0ff198a4265c821be7259f5408f58a4418448e6
4
- data.tar.gz: 8c7f2eb6e24a355cdb253847085850002e825788b3452abe4ad6a05773b47943
3
+ metadata.gz: c227c7874dd6e4cf6fcab7351ed5090ca1736e6f6ef4d1f1f4e21fe6e655c74e
4
+ data.tar.gz: 8ae3f18aa6ead9e2b533f5433d8b0dd1707631b3b4ab18486625facf78fcfd6b
5
5
  SHA512:
6
- metadata.gz: e0923d87a648c7fd793bc13d8156248ae2f025f02f1e016e06aa83c8253020711ed25bff2f491612342698215a1eff1d9352000a163ec13afebe6636e159353e
7
- data.tar.gz: 1c1a9cfb77237650ff34a277b967a7bb353c868604f86c42d6e35a8f851e27a3226620d65b6ab668594677120b00ebbfcefbf5f5f0b4658c274069cacb2452dd
6
+ metadata.gz: 71049930e742049c27b7f087e6db0009865018942817849740d2286691c63bd7a2052977303fd24c43a30c2cd68a06c87f5aeef467b55dddd2d4310b77a71ea4
7
+ data.tar.gz: 27f8adc215aa56d3de8e9739ca9e868017a6c5f74e8c1b2a6f2458887953ce4b83b52cf2be03de8535dac168d57958141b3fc99a6c0e6707f2db6f80824452ed
data/bin/rebase_push CHANGED
@@ -15,6 +15,7 @@ OptionParser.new do |opts|
15
15
 
16
16
  Example:
17
17
  rebase_push -t reset
18
+ rebase_push -t reset --ignore branch1,branch2,branch3
18
19
  rebase_push -t rebase
19
20
  rebase_push -t force_push # this is slow, calm down
20
21
  rebase_push -t reset && rebase_push -t rebase
@@ -34,6 +35,10 @@ OptionParser.new do |opts|
34
35
  opts.on("-v", "--verbose", "Run verbosely") do |v|
35
36
  options[:verbose] = v
36
37
  end
38
+
39
+ opts.on("--ignore branch1,branch2", Array, "Specify ignored branches") do |branches|
40
+ options[:ignored_branches] = branches.uniq
41
+ end
37
42
  end.parse!
38
43
 
39
44
  RebasePusher.new(options).run
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RebasePusher
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/rebase_pusher.rb CHANGED
@@ -23,12 +23,12 @@ class RebasePusher
23
23
  end
24
24
 
25
25
  def run
26
- io.puts "skipped branches: #{branches - my_branches}"
26
+ io.puts "skipped branches: #{branches - to_operate_branches}"
27
27
  sh("git checkout --quiet #{default_branch}")
28
28
 
29
29
  case options[:operation_type]
30
30
  when :rebase
31
- my_branches.each do |branch|
31
+ to_operate_branches.each do |branch|
32
32
  io.print "." if !options[:verbose]
33
33
  sh("git rebase --quiet #{default_branch} #{branch}")
34
34
  end
@@ -36,7 +36,7 @@ class RebasePusher
36
36
  io.puts if !options[:verbose]
37
37
  io.puts "all my branches are rebased"
38
38
  when :reset
39
- my_branches.each do |branch|
39
+ to_operate_branches.each do |branch|
40
40
  io.print "." if !options[:verbose]
41
41
  sh("git branch --force #{branch} #{branch}@{u}")
42
42
  end
@@ -46,7 +46,7 @@ class RebasePusher
46
46
  when :force_push
47
47
  # https://git-scm.com/docs/git-push
48
48
  # refspec: <src>:<dst>
49
- my_branches.each do |branch|
49
+ to_operate_branches.each do |branch|
50
50
  io.print "." if !options[:verbose]
51
51
  sh("git push origin --quiet --force-with-lease --force-if-includes #{branch}:#{branch}")
52
52
  end
@@ -56,22 +56,26 @@ class RebasePusher
56
56
  else
57
57
  raise "NOT SUPPORTTED"
58
58
  end
59
-
59
+ ensure
60
60
  sh("git checkout --quiet #{original_branch}")
61
61
  end
62
62
 
63
63
  private
64
64
 
65
- # Ensure I never touch other people's branch
66
- def my_branches
67
- @my_branches ||= branches.select do |branch|
65
+ def to_operate_branches
66
+ @to_operate_branches ||= branches.select do |branch|
68
67
  merge_base_commitid = sh("git merge-base #{default_branch} #{branch}").chomp
68
+ # Make sure I never touch other people's branch
69
69
  author_emails = sh("git log --format='%ae' #{merge_base_commitid}..#{branch}").split("\n").uniq
70
70
 
71
- !author_emails.empty? && author_emails.all? { |email| email == my_email }
71
+ !ignored_branches.include?(branch) && !author_emails.empty? && author_emails.all? { |email| email == my_email }
72
72
  end
73
73
  end
74
74
 
75
+ def ignored_branches
76
+ options[:ignored_branches] || []
77
+ end
78
+
75
79
  def default_branch
76
80
  @default_branch ||= sh("git rev-parse --abbrev-ref origin/HEAD").chomp
77
81
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rebase_pusher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - lijunwei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-27 00:00:00.000000000 Z
11
+ date: 2023-05-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: git rebase and push for all my branches
14
14
  email: