簡體   English   中英

如何判斷你是否在git-svn repo命令行中?

[英]How to tell if you're in a git-svn repo command line?

我正在嘗試修改我的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?

如果你在任何存儲庫中運行任何git svn命令,都可以創建.git/svn目錄 - 例如,只需運行git svn info ,正如Carl Norum建議的那樣 但是,稍微好一點的測試可能是.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存儲庫的不同版本的布局:

...所以如果你想小心捕捉所有不同的版本,你可以為所有這些編寫測試。

你應該能夠使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM