2011-03-09 49 views
6

我已經習慣了git,我非常喜歡它,但我的客戶之一是(仍然?)使用顛覆,我現在不是真的關於svn,但我知道有一個git-svn包。我可以使用git-svn,看起來像我使用SVN,如果是的話,怎麼樣?

我知道它有可能從svn獲取一個回購協議,但我可以使用git而不是svn並仍然提交,並「推」到中央svn服務器?

我想使用git而不是svn,如果我可以你可以指點我任何教程來做到這一點?

謝謝

編輯:

我其實不在乎獲取所有提交,只有10/20前一個就足以作爲應用程序處於工作狀態,這就是隻是做了改進,所以如果實際需要的話,我只會提取所有的提交歷史記錄。

+2

「看起來像我正在使用SVN」 - 如果其他svn用戶都知道你一直在使用git真的很重要,那麼請小心不要提交你的'。gitignore'文件或類似的東西,而且從來沒有'git svn dcommit'多次提交,因爲它們在svn日誌中相隔幾秒鐘。但除此之外,你可以將git看作是一個非常花哨的svn客戶端,沒有人會知道其中的差異。 – MatrixFrog 2011-03-10 03:22:38

回答

5

git-svn提供了Git和SVN的橋樑。它將在本地表現得像香草Git,但只要您嘗試向主控制器發送或從主控制器發出更改,它就會完全不同。

而不是推送,你將使用git commit本地提交,並且git svn dcommit推送您的本地提交到SVN。

git-svn documentation解釋瞭如何從SVN存儲庫中提取。請注意,它是極端慢(與正常的git相比),因爲它從SVN獲取每個修訂。請參閱文檔底部的示例。

這我已經使用了一個典型的方式:

  1. git svn clone http://svn.example.com/project -T trunk -b branches -t tags - 該網址是您SVN回購,並指定了-T,-b和-t切換到指定的子路徑的SVN目錄。然後,Git將使用這些SVN目錄查找分支和標籤,並將主幹作爲主幹。
  2. 代碼做一些更改
  3. git add...上演更改
  4. git commit...本地提交更改。
  5. git svn dcommit將本地提交推送到SVN。對於每個本地提交,Git都會在SVN服務器上進行這些單獨的提交。
+0

我試過了你的git svn clone命令,但是什麼也沒做,我以前檢查過svn repo(用svn)它好像沒有任何trunk,tags或branches文件夾,所有的代碼都在根目錄下想法? – 2011-03-09 16:06:56

+0

沒關係,我沒有指定任何參數來實現克隆 – 2011-03-09 16:16:13

+0

@EricP:這是處理它的方式,是的。 – vcsjones 2011-03-09 17:13:13

0

這是可能的,但我認爲最好的是一個變化的版本控制應用程序:)

得到SVN承諾的git(你有後已經混帳svn的初始化它當然)

git svn fetch

要取得git進入SVN信息

git commit git svn dcommit

+0

我不認爲我的客戶會接受從svn遷移到git :)但是我希望:D – 2011-03-09 16:01:57

相關問題