我没有太多svn经验,但我习惯使用git。
我有以下svn存储库结构和修订版。
https://server/svn/solution/trunk/solution.sln @ r100
https://server/svn/solution/trunk/project1/project1.csproj @ r150
https://server/svn/solution/trunk/project2/project2.csproj @ r160https://server/svn/solution/branches/solution.sln @ r100
https://server/svn/solution/branches/project1/project1.csproj @ r200
https://server/svn/solution/branches/project2/project2.csproj @ r350
当我克隆存储库
时git svn clone https://server/svn/solution --stdlayout
我得到了一切
(master)$ git branch -a
* master
remotes/project1
remotes/project2
remotes/trunk
当我想为远程分支创建本地分支时
(master)$ git checkout -b local-project1 project1
当我结帐分支是project1时,我得到的一切。分支不包含任何来自
的内容为了解决这个问题,我尝试了以下方法:
(local-project1)$ git checkout master
Switched to branch 'master'.
(master)$ git branch local-project1 -D
Deleted branch local-project1 (was 1111a11).
(master)$ git checkout -b local-project1
Switched to new branch 'local-project1'.
(local-project1)$ pwd
/c/workingcopies/solution
(local-project1)$ cd project1
(local-project1)$ pwd
/c/workingcopies/solution/project1
(local-project1)$ git branch --set-upstream local-project1 remotes/project1
Branch local-project1 set up to track local ref refs/remotes/project1.
(local-project1)$ git svn fetch
(local-project1)$ git reset --hard ae8e9b1a ;# go to last commit of the remote branch
fetch从存储库中的分支获取最后一个修订版,HEAD设置为最后一次提交,但我仍然只在分支中获得project1,而不是解决方案。任何建议和帮助表示赞赏。
答案 0 :(得分:1)
问题是你没有标准的svn布局。标准布局将在每个分支的分支下具有目录,如此。
repo/
+-- trunk
| +-- solution.sin
| +-- project1/project1.csproj
| +-- project2/project2.csproj
+-- branches/
+-- branch01/
+-- solution.sin
+-- project1/project1.csproj
+-- project2/project2.csproj
您将拥有一个名为“branches”的主干和分支,它位于与trunk相同的目录中。
我不确定是否可以告诉git正确处理这个问题。我有一些想法:您可以编辑.git / config以使git在最顶层目录中查找分支,但是当它尝试创建一个名为trunk的分支时它可能会感到困惑。它已经有一个主干。