如何使用git-svn将svn分支集成到git分支中?
我没有太多 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 克隆 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,而不是解决方案。如有任何建议和帮助,我们将不胜感激。
i have not much svn experience but i am used to work with git.
I have the following svn repository structure and revisions.
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
When i clone the repository
git svn clone https://server/svn/solution --stdlayout
I get everything
(master)$ git branch -a
* master
remotes/project1
remotes/project2
remotes/trunk
When i want to create a local branch for a remote one
(master)$ git checkout -b local-project1 project1
all i get when i checkout the branch is project1. The branch does not contain anything from
To solve the problem i tried the following:
(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
The fetch gets the last revision from the branch in the repository and the HEAD is set to the last commit but i still only get project1 in the branch, not the solution. Any advice and help is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是你没有标准的 svn 布局。标准布局在每个分支的分支下都有目录,如下所示。
相反,您有一个主干和一个名为“branches”的分支,位于与主干相同的目录中。
我不确定是否可以告诉 git 正确处理这个问题。我有一些想法:您可以编辑 .git/config 以使 git 在最顶层目录中查找分支,但是当它尝试创建一个名为 trunk 的分支而它已经有一个 trunk 时,它可能会感到困惑。
The problem is that you do not have a standard svn layout. A standard layout would have directories under branches for each branch, like so.
You instead have a trunk and a branch called "branches" located in the same directory as trunk.
I'm not sure if git can be told to handle this properly. I have some ideas: You could edit .git/config to make git look for a branch in the topmost directory, but then it might be confused when it tries to make a branch called trunk while it already has a trunk.