所以我试图通过使用git-svn切换到git。我有一个名为 myrepo 的svn repo,我想从中克隆名为 myproject 的项目。问题在于运行以下命令:
git svn clone path-to-repo/myrepo/myproject --stdlayout --prefix=svn myproject
克隆整个仓库 myrepo 而不仅仅是myproject。我尝试使用-T,-t,-b以让git知道项目的布局,但没有任何成功。我总是得到以下输出:
Using higher level of URL: path-to-repo/myrepo/myproject => path-to-repo/myrepo
并尝试克隆那个。难道我做错了什么?可能是svn repo布局可能被破坏或git不兼容?
答案 0 :(得分:69)
您可以尝试--no-minimize-url
选项。
根据http://schacon.github.com/git/git-svn.html:
- 无最小化-URL
当跟踪多个目录(使用--stdlayout, - blank或--tags选项)时,git svn将尝试连接到Subversion存储库的根目录(或允许的最高级别)。如果整个项目在存储库中移动,则此默认设置允许更好地跟踪历史记录,但可能会导致读取访问限制到位的存储库出现问题。传递--no-minimize-url将允许git svn按原样接受URL,而不尝试连接到更高级别的目录。默认情况下,当只跟踪一个URL /分支时,此选项处于关闭状态(这样做不太好)。
答案 1 :(得分:2)
与此同时,我使用了通常的-s
开关:
git svn clone -s <svn_repo_url>
我还想要分享一些git-svn引用:
答案 2 :(得分:0)
.gitconfig hack可能会有所帮助,但我不知道如何重新填充: http://thread.gmane.org/gmane.comp.version-control.git/127528/focus=127776
答案 3 :(得分:0)
确保您指定了myproject
的完整路径,似乎克隆操作的 fetch 部分不能很好地处理部分路径。您可以在Windows的该路径中使用冒号(例如c:\ myproject)(但不能在源存储库路径中使用冒号)。
git svn clone path-to-repo/myrepo/myproject --stdlayout --prefix=svn myproject