diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-18 02:23:59 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-18 02:23:59 +0900 |
| commit | 88262875fded2fc578e5bf6957dbf75068238538 (patch) | |
| tree | 7d99f6fc6b59ca0c13db0f5ddd39eef3d698672f | |
| parent | 8d219a9bd7b484b301185319c940975e1d788b3e (diff) | |
Fix `git cat-file` condition
When multiple files changed in the same directory to be removed, the
first file only was removed from changed set.
| -rwxr-xr-x | tool/sync_default_gems.rb | 6 | ||||
| -rwxr-xr-x | tool/test/test_sync_default_gems.rb | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/tool/sync_default_gems.rb b/tool/sync_default_gems.rb index 6ddb11b63c..e425965042 100755 --- a/tool/sync_default_gems.rb +++ b/tool/sync_default_gems.rb @@ -562,8 +562,8 @@ module SyncDefaultGems changed = changed.reject do |f| case when toplevels.fetch(top = f[%r[\A[^/]+(?=/|\z)]m]) { - remove << top unless - toplevels[top] = system(*%w"git cat-file -e", "#{base}:#{top}", err: File::NULL) + remove << top if toplevels[top] = + !system(*%w"git cat-file -e", "#{base}:#{top}", err: File::NULL) } # Remove any new top-level directories. true @@ -590,8 +590,6 @@ module SyncDefaultGems if picked system(*%w"git commit --amend --no-edit --", *remove, %i[out err] => File::NULL) end - remove = remove.map {|d| d + "/"} - changed.delete_if {|f| remove.any? {|d| f.start_with?(d)}} end unless ignore.empty? diff --git a/tool/test/test_sync_default_gems.rb b/tool/test/test_sync_default_gems.rb index 2d46d5b6bf..d2219cb673 100755 --- a/tool/test/test_sync_default_gems.rb +++ b/tool/test/test_sync_default_gems.rb @@ -188,6 +188,8 @@ module Test_SyncDefaultGems File.write("#@target/docs/NEWS.md", "= NEWS!!!\n") git(*%W"add --", "docs/NEWS.md", chdir: @target) File.write("#@target/docs/hello.md", "Hello\n") + git(*%W"add --", "docs/hello.md", chdir: @target) + git(*%W"commit -q -m", "It's a news", chdir: @target) out = assert_sync() assert_equal(@sha["src"], top_commit("src"), out) end |
