From 58bb7f0ca1468629a379c74f637bdb04e1e5dfe7 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 27 Jul 2019 11:31:07 +0800 Subject: [PATCH] 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. --- tool/sync_default_gems.rb | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 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? - puts "Failed to pick #{sha}" - break + 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}" + 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)