--chmod 不适用于索引过滤器
--chmod not working with index-filter
我想使用 filter-b运行ch 将所有文件设置为不可执行,因为大多数用户使用 Windows。我在 运行 Git Bash 中执行以下命令:
git filter-branch --index-filter 'for file in $(git ls-files)
do
git update-index --chmod=-x -- $file
done' -- HEAD~1..HEAD
但是,我收到一条错误消息:
Rewrite bc4368aec16cce1c1faa7363dde9ac74ac28da6a (1/1)
error: .gitignore: does not exist and --remove not passed
fatal: Unable to process path .gitignore
error: LICENSE.md: does not exist and --remove not passed
fatal: Unable to process path LICENSE.md
error: README.md: does not exist and --remove not passed
fatal: Unable to process path README.md
因为我在 Windows,我什至无法将 --tree-filter 与 chmod 一起使用(至少这对我不起作用)。当我使用 --filter-tree 而不是 --filter-index 时它起作用了,但我正在尝试使用 --filter-index 因为它应该更快。
尽管您的问题侧重于 git filter-branch
进行重写,但值得考虑使用 BFG - 虽然它不是开箱即用的,但添加 [=12] 是一个非常小的调整=] 将所有文件设置为不可执行的清理器:
https://github.com/rtyley/bfg-repo-cleaner/compare/non-executable
您可以非常轻松地构建自定义版本的 BFG:
https://github.com/rtyley/bfg-repo-cleaner/blob/master/BUILD.md
使用上面的 non-executable
分支,您可以 运行 BFG 而无需任何额外的命令行开关,因为清洁器是硬连线的(遵循 BFG 的所有 usage instructions , 这只是核心位):
$ java -jar bfg-custom.jar my-repo.git
这将在任何大型存储库上执行比 git filter-branch
(有或没有 --filter-index
)快几百倍 - 例如,我在linux-kernel 项目(~500k 提交),在 5 分钟内完成。
完全披露:我是 BFG Repo-Cleaner 的作者。
我想使用 filter-b运行ch 将所有文件设置为不可执行,因为大多数用户使用 Windows。我在 运行 Git Bash 中执行以下命令:
git filter-branch --index-filter 'for file in $(git ls-files)
do
git update-index --chmod=-x -- $file
done' -- HEAD~1..HEAD
但是,我收到一条错误消息:
Rewrite bc4368aec16cce1c1faa7363dde9ac74ac28da6a (1/1)
error: .gitignore: does not exist and --remove not passed
fatal: Unable to process path .gitignore
error: LICENSE.md: does not exist and --remove not passed
fatal: Unable to process path LICENSE.md
error: README.md: does not exist and --remove not passed
fatal: Unable to process path README.md
因为我在 Windows,我什至无法将 --tree-filter 与 chmod 一起使用(至少这对我不起作用)。当我使用 --filter-tree 而不是 --filter-index 时它起作用了,但我正在尝试使用 --filter-index 因为它应该更快。
尽管您的问题侧重于 git filter-branch
进行重写,但值得考虑使用 BFG - 虽然它不是开箱即用的,但添加 [=12] 是一个非常小的调整=] 将所有文件设置为不可执行的清理器:
https://github.com/rtyley/bfg-repo-cleaner/compare/non-executable
您可以非常轻松地构建自定义版本的 BFG:
https://github.com/rtyley/bfg-repo-cleaner/blob/master/BUILD.md
使用上面的 non-executable
分支,您可以 运行 BFG 而无需任何额外的命令行开关,因为清洁器是硬连线的(遵循 BFG 的所有 usage instructions , 这只是核心位):
$ java -jar bfg-custom.jar my-repo.git
这将在任何大型存储库上执行比 git filter-branch
(有或没有 --filter-index
)快几百倍 - 例如,我在linux-kernel 项目(~500k 提交),在 5 分钟内完成。
完全披露:我是 BFG Repo-Cleaner 的作者。