2015-02-23 92 views
4

這是一個來自本地測試回購的示例git-svn-id。什麼是git-svn-id?

git-svn-id: file:///tmp/svnrepo/branches/[email protected] 0f7bc949-3f51-4b04-a2a6-16f580a5904d 

什麼是最後一部分? 「@ 6」表示它是svn修訂版本號6,但之後看起來是一些散列。每一次提交似乎都是一樣的。

最後一部分是如何生成的?我假設它是一個適用於git倉庫第一次提交的散列算法。這樣,git-svn-id也可以保證該提交的總祖先與另一個git-svn-id相同或不同。

+1

這裏稍微解釋一下:http://www.git-tower.com/blog/an-introduction-to-git-svn/ – Martin 2015-02-23 22:08:43

回答

4

這是一個顛覆構造。在顛覆中,每個回購都有一個UUID。你可以通過svn info找到一個svn repo的UUID。在下面的例子中,「Repository UUID」行是repo的UUID。

$ svn info 
Path: . 
Working Copy Root Path: /tmp/svnco 
URL: file:///tmp/svnrepo 
Relative URL: ^/ 
Repository Root: file:///tmp/svnrepo 
Repository UUID: 0f7bc949-3f51-4b04-a2a6-16f580a5904d 
Revision: 6 
Node Kind: directory 
Schedule: normal 
Last Changed Author: ABird 
Last Changed Rev: 6 
Last Changed Date: 2015-02-23 16:54:45 -0500 (Mon, 23 Feb 2015) 

這裏是混帳svn的代碼,這似乎讀svn info輸出和保存UUID:https://github.com/git/git/blob/master/vcs-svn/svndump.c#L356


爲了解決一些我在這個問題的假設:在UUID不一體化任何關於git repo的血統的信息。從我的理解,有人可以git svn clone相同的回購,但不包括整個回購的歷史。如果這是兩個git-svn回購之間的情況,那麼svn回購中的同一點將成爲兩個回購中不同的sha1哈希。

+1

因爲我正要評論你的問題:[這個文件](https:/ /github.com/git/git/blob/master/contrib/svn-fe/svn-fe.txt#L53)也表示它是一個UUID。 – 2015-02-23 22:24:44