我想使用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