我有一些shell的東西設置,動態定義別名取決於什麼樣的VC repo CWD包含 - 例如,'d'運行'svn diff'或'git diff',具體取決於。 (基於this blog post,如果有人感興趣...)以編程方式告訴git-svn和git repos之間的區別?
我想定義一些別名,取決於我是否在git repo與git-svn repo中。有沒有簡單的方法來分辨兩者之間的差異?
我有一些shell的東西設置,動態定義別名取決於什麼樣的VC repo CWD包含 - 例如,'d'運行'svn diff'或'git diff',具體取決於。 (基於this blog post,如果有人感興趣...)以編程方式告訴git-svn和git repos之間的區別?
我想定義一些別名,取決於我是否在git repo與git-svn repo中。有沒有簡單的方法來分辨兩者之間的差異?
在決定哪些存儲庫完全是git-svn存儲庫時,應該小心一點。存儲庫可能包含多個svn存儲庫。如果svn庫與-s或--std佈局選項克隆,其中有實際是分支trunk
卡夫卡的解決方案纔有效。
Codelogic的答案只有在存在一個名爲svn
的svn存儲庫時纔會起作用 - 沒有要求那是真的。
最簡單的方法來檢查是否有是一個SVN遠程的配置是:
$ git config --get-regexp ^svn-remote
這將找到任何配置的git-svn庫,不管他們是所謂的。如果匹配,它將以狀態0退出,如果沒有匹配,則退出1。
但是,這並不意味着svn庫真的被使用。也可能是某人導入了一個svn存儲庫,但是使用是作爲子模塊或作爲子樹合併,甚至根本不存在。如果混帳SVN倉庫元數據已被打開,你可以看到,如果任何SVN版本已在當前HEAD通過使用像這樣使用:
$ git rev-list -1 --grep='git-svn-id' HEAD
但是,這也許有點太令人費解。你決定。
您可以使用git config
命令的輸出來區分git和git-svn回購。
git config --get svn-remote.svn.url
應該返回被同步到的svn URL,如果有的話。
還有一個叫trunk的分支和一個叫做trunk @ [REV]的分支。然而,我認爲代碼學方法更簡單,更清潔。
謝謝 - rev-list位對我而言太複雜;在我自己摸索一點之後,我可能會做'如果[-d .git/svn]'並從那裏開始。我意識到它不會處理一般情況,但它涵蓋了我的全部。 再次感謝。 – genehack 2009-01-02 21:19:48