列出单词消失的文件
List files in which a word has disappeared
所以,假设我有两个分支 old_release
(包含旧版本)和 new_release
(包含新版本)。旧版本中有一个工具叫cook
,我想它仍然在新版本中,但它被重命名了。我需要弄清楚它被重命名为什么。
我想要一个必须满足条件的文件列表;
- 文件存在于
old_release
和 new_release
中。
- 在
old_release
的版本中找到了字符串 cook
。
- 在
new_release
的版本中找不到字符串 cook
。我需要这个条件,因为大部分代码都没有更新,并且将包含对 cook
. 的失效引用
- 我的仓库很大,签出一个分支需要很长时间。我想要一个避免这种情况的解决方案。
我目前的解决方案是这样的;
git checkout old_release
grep cook . -R -l -I > old_release_cooks.txt
sort -o old_release_cooks_sorted.txt old_release_cooks.txt
git checkout new_release
grep cook . -R -l -I > new_release_cooks.txt
sort -o new_release_cooks_sorted.txt new_release_cooks.txt
vim -d old_release_cooks_sorted.txt new_release_cooks_sorted.txt
这满足了我除第 4 点之外的所有要求。它要求我至少进行一次结帐。严格来说,我猜它不会创建不同的文件列表,但差异足够接近。
有没有办法在不签出的情况下获取此列表?
Checkout-free one-liner in bash 使用 git grep
并使用 comm
:
评估其结果
word='cook' rel1='old_release' rel2='new_release'; comm -1 -2 <(git grep -l '\b'"$word"'\b' "$rel1" | sed 's/^[^:]*://' | sort;) <(git grep -L '\b'"$word"'\b' "$rel2" | sed 's/^[^:]*://' | sort;)
编辑:进行调整,使您的条件 1 也得到满足(文件必须存在于两者中)
EDIT2:简化表达式
所以,假设我有两个分支 old_release
(包含旧版本)和 new_release
(包含新版本)。旧版本中有一个工具叫cook
,我想它仍然在新版本中,但它被重命名了。我需要弄清楚它被重命名为什么。
我想要一个必须满足条件的文件列表;
- 文件存在于
old_release
和new_release
中。 - 在
old_release
的版本中找到了字符串cook
。 - 在
new_release
的版本中找不到字符串cook
。我需要这个条件,因为大部分代码都没有更新,并且将包含对cook
. 的失效引用
- 我的仓库很大,签出一个分支需要很长时间。我想要一个避免这种情况的解决方案。
我目前的解决方案是这样的;
git checkout old_release
grep cook . -R -l -I > old_release_cooks.txt
sort -o old_release_cooks_sorted.txt old_release_cooks.txt
git checkout new_release
grep cook . -R -l -I > new_release_cooks.txt
sort -o new_release_cooks_sorted.txt new_release_cooks.txt
vim -d old_release_cooks_sorted.txt new_release_cooks_sorted.txt
这满足了我除第 4 点之外的所有要求。它要求我至少进行一次结帐。严格来说,我猜它不会创建不同的文件列表,但差异足够接近。
有没有办法在不签出的情况下获取此列表?
Checkout-free one-liner in bash 使用 git grep
并使用 comm
:
word='cook' rel1='old_release' rel2='new_release'; comm -1 -2 <(git grep -l '\b'"$word"'\b' "$rel1" | sed 's/^[^:]*://' | sort;) <(git grep -L '\b'"$word"'\b' "$rel2" | sed 's/^[^:]*://' | sort;)
编辑:进行调整,使您的条件 1 也得到满足(文件必须存在于两者中)
EDIT2:简化表达式