我正在从svn存储库导入代码,结构如下:
Repo/
branches/
tags/
存储库没有主干。
代码保存在子目录ProjectName中,因此在签出时我看到了
Repo/
ProjectName/
Files
执行时:
git svn clone -t tags -b branches https://servername/svn/Repo GitRepo
我在GitRepo上获得了一个git存储库并且所有内容都正确导入,问题是无论何时我在git中检出文件,它都会将它们检出到ProjectName子目录中,如:
GitRepo/
ProjectName/
Files
我的问题是,有没有办法告诉git svn以这样的方式克隆回购:
GitRepo/
Files
所以,我要问的是,我是否可以告诉git使用仅在检出分支作为存储库的根时出现的文件夹。
答案 0 :(得分:3)
是的,您可以这样做,但您需要手动指定主干,分支和标记位置(因为它们在您的情况下是非标准的)。
像这样创建你的回购:git svn init https://servername/svn/Repo GitRepo
然后打开.git / config文件以及url,fetch,branches和tag行,使它看起来如下所示:
[svn-remote "svn"]
url = https://servername/svn/Repo
fetch = ProjectName:refs/remotes/trunk
branches = branches/*:refs/remotes/branches/*
tags = tags/*:refs/remotes/tags/*
这里的重要一行是fetch = ProjectName:refs/remotes/trunk
,它在远程和本地主干上的ProjectName之间创建了一个链接。
答案 1 :(得分:2)
原来我需要:
[svn-remote "svn"]
url = https://servername/svn/Repo
branches = branches/*/*:refs/remotes/branches/*/*
tags = tags/*/*:refs/remotes/tags/*/*
<。>在.git / config
分支和标签字符串中的第二个/ *是我之前缺少的重要部分。
感谢ChrisA指出我正确的方向。