我正在尝试修改我的bash提示符,如果我在git-svn repo中打印出来。我看到git svn repos有一个.git / svn文件夹,所以我可以查看:
# Find the top level git folder
_git_dir=`git rev-parse --show-toplevel 2> /dev/null`
# Find svn folder
_gsvn_check=`cd $_git_dir; ls .git/svn 2> /dev/null`
但后来我注意到我的普通git repo有一个.git / svn文件夹。有没有办法确定你是在git-svn?
答案 0 :(得分:3)
如果在任何存储库中运行任何.git/svn
命令,则可以创建git svn
目录 - 例如只需运行git svn info
,Carl Norum suggests即可创建它。但是,稍微好一点的测试可能是.git/svn
存在并且非空,例如。
[ -d .git/svn ] && [ x != x"$(ls -A .git/svn/)" ] && echo Looks like git-svn
如果您想要更严格的测试,可以查看HEAD
的历史记录,查看包含git-svn-id
的任何提交消息 - 基本上就是git svn info
在放弃之前所做的事情。例如:
[ x != x"$(git log -n 1 --grep='^\s*git-svn-id' --oneline)" ] && echo "git-svn!"
...但听起来好像对你的用例来说可能太慢了。
git-svn.perl
中的源代码描述了git-svn
存储库的不同版本的布局:
...所以如果你想小心捕捉所有不同的版本,你可以为所有这些编写测试。
答案 1 :(得分:1)
您应该可以使用git svn info
。 git-svn存储库的示例输出:
Path: .
URL: svn+ssh://url/path/to/something/trunk
Repository Root: svn+ssh://path/to/something
Repository UUID: c22683c8-8Bcb-47f9-aeb8-1c337d8f7a2d
Revision: 12345
Node Kind: directory
Schedule: normal
Last Changed Author: somebody
Last Changed Rev: 12345
Last Changed Date: 2012-01-24 16:38:36 -0800 (Tue, 24 Jan 2012)
对于常规的git repo:
Unable to determine upstream SVN information from working tree history