diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-07-27 11:31:07 +0800 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-07-27 15:47:32 +0800 |
commit | 58bb7f0ca1468629a379c74f637bdb04e1e5dfe7 (patch) | |
tree | 3625383d240a68e6b6b9ee7b6fb81e1bf57d6669 /tool | |
parent | 012d39c4e658f251f691c8a1dba462c937dbac67 (diff) | |
download | ruby-58bb7f0ca1468629a379c74f637bdb04e1e5dfe7.tar.gz |
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.rb | 24 |
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) |