diff options
| author | Takashi Kokubun <takashikkbn@gmail.com> | 2024-05-28 17:45:21 -0700 |
|---|---|---|
| committer | Takashi Kokubun <takashikkbn@gmail.com> | 2024-05-28 17:46:44 -0700 |
| commit | 0e96dd93c51337a01fa29b563c2d330c472b03b7 (patch) | |
| tree | 26d20a9fa700220949796f1b52b6cb783970ddf1 | |
| parent | 4d34fb54b0e21af3802cddb669f34fe446ed5f3d (diff) | |
merger.rb: Don't ask "conflicts resolved?" if not needed
| -rwxr-xr-x | tool/merger.rb | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/tool/merger.rb b/tool/merger.rb index 7ab163eb37..a690b47da3 100755 --- a/tool/merger.rb +++ b/tool/merger.rb @@ -163,6 +163,17 @@ class << Merger = Object.new execute('git', 'add', '.') && execute('git', 'commit', '-F', file) end + def has_conflicts? + changes = IO.popen(%w[git status --porcelain -z]) { |io| io.readlines("\0", chomp: true) } + # Discover unmerged files + # AU: unmerged, added by us + # DU: unmerged, deleted by us + # UU: unmerged, both modified + # AA: unmerged, both added + conflict = changes.grep(/\A(?:.U|AA) /) {$'} + !conflict.empty? + end + private # Prints the version of Ruby found in version.h @@ -281,15 +292,17 @@ else f.flush f.close - Merger.interactive('conflicts resolved?', f.path) do - IO.popen(ENV['PAGER'] || ['less', '-R'], 'w') do |g| - g << Merger.stat - g << "\n\n" - f.open - g << f.read - f.close - g << "\n\n" - g << Merger.diff + if Merger.has_conflicts? + Merger.interactive('conflicts resolved?', f.path) do + IO.popen(ENV['PAGER'] || ['less', '-R'], 'w') do |g| + g << Merger.stat + g << "\n\n" + f.open + g << f.read + f.close + g << "\n\n" + g << Merger.diff + end end end |
