2017-07-13 80 views
0

我的團隊同意從svn遷移到git。所以我創建了一個倉庫xxwin,然後我跑了類似的東西:爲什麼git svn製作新的分支,我該如何解決?

git svn clone --stdlayout --no-metadata --authors-file=users.txt svn://hostname/path xxwinRepository 
cd xxwinRepository 
git remote add origin https://bitbucket.org/xxxxx/xxwin.git 
git push 

它花了很長時間,但它似乎工作正常。

然後有一位開發人員說他自遷移以來對svn做了一些更改。

不要重新啓動我的想我可能只是運行

git svn fetch 
git push 

這似乎已經推動一切新的分支機構。不幸的是,在我意識到發生了什麼之前,這發生了幾次。現在我們有上百個分支機構..

例如,我們有一個分支叫v2_5_working在SVN,現在Git中有分支叫origin/v2_5_workingxxwin/origin/v2_5_workingxxwin/xxwin/origin/v2_5_working

有一些方法可以輕鬆地合併所有這些分支?如果有下一次是否有辦法讓它合併爲git svn fetch的一部分?

回答

0

您在git svn clone命令中使用了--no-metadata標誌。這意味着創建的git提交沒有任何鏈接到相應的svn提交,並且git無法知道開發人員對svn所作的新提交應該放在git的某個分支之上。

只有在您打算進行一次性轉換時才使用--no-metadata,而不是如果開發繼續在svn上進行。引用documentation

這樣在每次提交結束時都會刪除git-svn-id:行。

此選項只能用於一次性導入,因爲git svn無法在沒有元數據的情況下再次獲取。此外,如果您失去$ GIT_DIR/svn/* /。rev_map。文件,git svn將無法重建它們。

git svn log命令也不會在使用它的存儲庫上工作。使用這個與useSvmProps選項相沖突(希望)顯而易見的原因。

不推薦使用此選項,因爲它很難在現有文檔,錯誤報告和歸檔中追蹤對SVN修訂號的舊引用。如果你打算最終從SVN遷移到Git,並確定要刪除SVN歷史記錄,請考慮使用git-filter-branch 1。 filter-branch還允許重新格式化元數據,以便讀取和重寫非「svn.authorsFile」用戶的作者信息。

+0

此外,如果您決定重做轉換,那麼有一些更快的工具可以搜索svn2git。 – 1615903

相關問題