所以我从其他一些开发人员那里继承了一个相当大的代码库,代码存储在各种git存储库中。
有时,很难知道特定代码片段可能存在于哪个项目中,或者该代码片段是否存在于git中。
我希望能够做的是为一些特定的文本grep所有项目。
我正在使用gitosis,因此所有git存储库都存储在/ home / git / repositories中,结构如下:
/home/git/repositories
|- project1
|- HEAD
|- branches
|- config
|- description
|- hooks
|- info
|- objects
|- refs
|- project2
|- ...
我已经尝试过对象目录中的东西执行递归grep,如下所示:
grep -Hr "text" /home/git/repositories/*/objects
这当然无法正常工作,因为对象存储在git的自定义格式中。
做什么?
答案 0 :(得分:5)
将git grep
与ref或--no-index
:
cd /home/git/repositories
for i in *; do ( cd $i; git grep text HEAD ); done
答案 1 :(得分:3)
我知道它的旧问题但是如果你使用命令行,你可以将其添加到bash_profile
或bashrc
ggrep() {
find . -type d -name .git | while read line; do
(
cd $line/..
cwd=$(pwd)
echo "$(tput setaf 2)$cwd$(tput sgr0)"
git grep -n "$@"
)
done
}
上述功能的基本要点是搜索包含.git
的所有目录,然后首先输出该目录,然后输出该令牌发生的行号
然后转到/home/git/repositories
并使用
ggrep "InvalidToken"
它会像这样输出
/home/git/org/repo1
/home/git/org/repo2
/home/git/org/repo3
/home/git/org/repo3
lib/v3/Utility.pm:59: code => 'InvalidToken',
lib/v3/Utility.pm:142: code => "InvalidToken",
你也可以传递像ggrep -i "search"
这样的标志(用于不区分大小写的搜索)
答案 2 :(得分:0)
使用multi。它是通过多个存储库一次专门写入git grep
的。
$ ls
vim spring-framework gradle phantomjs
$ multi -i "fantastic"
vim
====================================================
runtime/doc/quotes.txt:VIM 4.5 is really a fantastic editor. It has sooooo many features and more
runtime/doc/quotes.txt:fantastic it is! (Tony Nugent, Australia)
spring-framework
====================================================
gradle
====================================================
subprojects/docs/src/docs/userguide/ant.xml: simply by relying on Groovy, and the fantastic <literal>AntBuilder</literal>.
subprojects/docs/src/docs/userguide/buildScriptsTutorial.xml: relying on Groovy. Groovy is shipped with the fantastic <literal>AntBuilder</literal>. Using Ant tasks
subprojects/docs/src/docs/userguide/ideSupport.xml: if you do this you have a fantastic IDE support for developing Gradle scripts. Of course if you use
phantomjs
====================================================
test/ghostdriver-test/fixtures/common/macbeth.html:<A NAME=1.3.55>Are ye fantastical, or that indeed</A><br>
test/ghostdriver-test/fixtures/common/macbeth.html:<A NAME=1.3.148>My thought, whose murder yet is but fantastical,</A><br>