我想使用git克隆一個svn存儲庫,但不幸的是,其中svn checkout
得到回購與所有外部組件,git svn clone
只得到了倉庫,但不會的外部。我如何通過git svn
從svn倉庫獲取外部?我不想做任何花哨的東西,只需與外部的完成回購。混帳SVN - 克隆回購了所有的外部
回答
git-svn不支持外部,但你可以嘗試SmartGit而不是git-svn。它支持svn:externals,將它們轉換爲.gitsvnextmodules文件並顯示爲模塊。唯一的限制:您應該使用SmartGit克隆存儲庫,而不是打開已經存在的git-svn存儲庫。
是否有任何命令行工具我可以使用? – wowpatrick 2012-07-17 13:47:12
不幸的是沒有命令行,只有UI – 2012-07-17 13:55:45
後續問題:[SmartGit是否支持git-svn?](http://stackoverflow.com/q/16128118/86967) – nobar 2015-07-29 22:01:10
我一直在使用git作爲訪問SVN存儲庫的前端。 SVN中的結構通常非常簡單,因此頂層目錄中包含外部數據,並且子目錄中沒有外部數據。另外,外部組件沒有真正改變很多,一旦他們在加入因此,假如是這樣的:。
git svn clone X
cd X
我已經成功獲得所有的外部使用以下命令:
git svn show-externals | \
perl -ne 'if (/^\/(.*) (.*)/) { print "git svn clone $1 $2\n"; }' | \
bash
我猜更復雜的外部結構需要更復雜的perl腳本。另外,如果您的外部變更,您需要再次做類似的事情。
我發現上述技術非常有用 - 除了我必須扭轉$ 2和$ 1(本地目錄和遠程) – tutuDajuju 2013-11-13 07:01:41
@tutuDajuju很高興聽到它的幫助。感謝您的評論。我也注意到了這一點,但我沒有花時間去調查爲什麼在某些情況下排序會發生變化。 – 2013-11-14 03:55:20
也許克隆語法在版本之間更改?今天它是克隆$ url [$ target_dir](dir是可選的) – tutuDajuju 2013-11-14 10:36:48
我不能評論,所以我在這裏發佈的解決方案,在我的情況下工作
git svn show-externals | \
awk '/^\// { print "git svn clone "$3" ."$1" "$2":HEAD" }' | \
bash
- 1. 混帳克隆SSH回購
- 2. 混帳SVN克隆混亂
- 3. 克隆git-svn回購獲得所有的svn部分從原始svn回購
- 4. SVN使用「混帳SVN克隆」
- 5. 克隆/鏡像SVN回購
- 6. 未能通過命令來克隆回購 「混帳svn的克隆-s SVN + SSH:// repo_url」
- 7. 混帳SVN克隆致命錯誤
- 8. 混帳svn的克隆或svn2git意外停止
- 9. 混帳克隆得到git的除外
- 10. 混帳:克隆Gitosis的管理員回購本地
- 11. 如何克隆一個克隆的git回購
- 12. 恢復的git - svn的克隆:「混帳SVN取」從頭開始
- 13. 克隆的git回購securly
- 14. SBT混帳克隆掛起私人回購
- 15. 混帳克隆回購協議向遠程機器
- 16. gitlab:混帳克隆HTTPS大回購失敗
- 17. 克隆Github回購
- 18. 混帳克隆錯誤
- 19. Gitolite混帳克隆錯誤
- 20. 混帳克隆問題
- 21. 混帳:回購
- 22. 克隆git回購
- 23. 開關svn:外部回購?
- 24. 混帳svn的克隆與失敗無法截斷文件在
- 25. 混帳svn的克隆顯示錯誤消息
- 26. 嘗試使用混帳svn的克隆命令
- 27. jenkins工作區外克隆git回購
- 28. Mercurial - 克隆克隆另一個回購
- 29. 克隆私人Github回購
- 30. git克隆覆蓋了一個現有的同名回購
有https://github.com/andrep/git-svn-clone-externals – unhammer 2017-01-31 09:17:31