summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2019-07-27 11:31:07 +0800
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2019-07-27 15:47:32 +0800
commit58bb7f0ca1468629a379c74f637bdb04e1e5dfe7 (patch)
tree3625383d240a68e6b6b9ee7b6fb81e1bf57d6669 /tool
parent012d39c4e658f251f691c8a1dba462c937dbac67 (diff)
Skip the some of commits when sync default gems from upstream.
* Skip failed to sync commits because it needs to pick manually. * Skip empty commit.
Diffstat (limited to 'tool')
-rw-r--r--tool/sync_default_gems.rb24
1 files changed, 21 insertions, 3 deletions
diff --git a/tool/sync_default_gems.rb b/tool/sync_default_gems.rb
index 408614f8b8..33703d0492 100644
--- a/tool/sync_default_gems.rb
+++ b/tool/sync_default_gems.rb
@@ -259,14 +259,30 @@ def sync_default_gems_with_commits(gem, range)
puts commits.map{|commit| commit.join(": ")}.join("\n")
puts "----"
+ failed_commits = []
+
commits.each do |sha, subject|
puts "Pick #{sha} from #{$repositories[gem.to_sym]}."
- `git cherry-pick #{sha}`
- unless $?.success?
+ skipped = false
+ result = IO.popen(%W"git cherry-pick #{sha}").read
+ if result =~ /nothing\ to\ commit/
+ `git reset`
+ skipped = true
+ puts "Skip empty commit #{sha}"
+ end
+ next if skipped
+
+ if result.empty?
+ failed_commits << sha
+ `git reset` && `git checkout .` && `git clean -fd`
+ skipped = true
puts "Failed to pick #{sha}"
- break
end
+ next if skipped
+
+ puts "Update commit message: #{sha}"
+
prefix = "[#{($repositories[gem.to_sym])}]".gsub(/\//, '\/')
suffix = "https://github.com/#{($repositories[gem.to_sym])}/commit/#{sha[0,10]}"
`git filter-branch -f --msg-filter 'sed "1s/^/#{prefix} /" && echo && echo #{suffix}' -- HEAD~1..HEAD`
@@ -275,6 +291,8 @@ def sync_default_gems_with_commits(gem, range)
break
end
end
+
+ puts failed_commits
end
def sync_lib(repo)