缺少分支使用 git-svn clone 克隆非标准 svn 存储库
Missing branches cloning a non-standard svn repository using git-svn clone
我是一个完整的 git 新手,我想使用 git-svn 克隆我的 svn 存储库。但是clone命令后分支不见了运行.
回购布局如下:
trunk/
branches/team/releases/release-1
branches/team/releases/release-2
...
branches/development/user1/feature1
branches/development/user1/feature2
branches/development/user2/feature3
branches/development/user2/feature4
...
tags/release1
tags/release2
我使用的命令是:
git svn clone --trunk=/trunk --branches=branches/*/* --tags=tags/*/* --prefix=svn/ --authors-file=authors.txt <my-repo> <git-repo-name>
我已经尝试将分支选项修改为 /branches/development/user1/*
和 /branches/development/user1/*/*
(并同时使用两者)并再次 运行ning clone
命令以查看是否任何额外的分支都会被拾取,但它们不会。
可以再次 运行 clone
还是我必须从头开始并删除 git 存储库?
如果我 运行 git branch -r
克隆后我能看到的是:
svn/development/user1
svn/development/user1
svn/team/releases
svn/trunk
note that all the tags are present but omitted for brevity
如何获取丢失的分支?
这不是 Cloning a Non-Standard Svn Repository with Git-Svn or how to use nested branches through git-svn 的副本。
您可以多次指定 --branches 标签。 From the docs:
These are optional command-line options for init. Each of these flags can point to a relative repository path (--tags=project/tags) or a full url (--tags=https://foo.org/project/tags). You can specify more than one --tags and/or --branches options, in case your Subversion repository places tags or branches under multiple paths. The option --stdlayout is a shorthand way of setting trunk,tags,branches as the relative paths, which is the Subversion default. If any of the other options are given as well, they take precedence.
对于你的情况,尝试:
git svn clone \
--branches=branches/team/releases/* \
--branches=branches/development/user1/* \
--branches=branches/development/user2/* \
...等等
可以再次 运行 克隆还是我必须从头开始并删除 git 存储库?
一般来说,您应该从头开始尝试。该工具不是更新脚本。
事实上,无需重新克隆整个存储库就可以做到这一点,这对于大型 Subversion 存储库来说可能需要花费很多时间。我通过编辑 .git
目录中的 config
文件来正确设置我的分支和标签。
如果你做一个普通的git svn fetch
,什么都不会发生。诀窍是 trick/force Git 重新获取所有修订:
git svn fetch 0:HEAD
此命令会导致所有 tags/branches 被引入,而无需经过冗长乏味的 t运行k 导入,跳过 t运行 就足够聪明了k 个修订已在初始 运行 中导入。现在我的 SVN tags/branches 在我现有的 Git 存储库中,没有新的克隆。
我是一个完整的 git 新手,我想使用 git-svn 克隆我的 svn 存储库。但是clone命令后分支不见了运行.
回购布局如下:
trunk/
branches/team/releases/release-1
branches/team/releases/release-2
...
branches/development/user1/feature1
branches/development/user1/feature2
branches/development/user2/feature3
branches/development/user2/feature4
...
tags/release1
tags/release2
我使用的命令是:
git svn clone --trunk=/trunk --branches=branches/*/* --tags=tags/*/* --prefix=svn/ --authors-file=authors.txt <my-repo> <git-repo-name>
我已经尝试将分支选项修改为 /branches/development/user1/*
和 /branches/development/user1/*/*
(并同时使用两者)并再次 运行ning clone
命令以查看是否任何额外的分支都会被拾取,但它们不会。
可以再次 运行 clone
还是我必须从头开始并删除 git 存储库?
如果我 运行 git branch -r
克隆后我能看到的是:
svn/development/user1
svn/development/user1
svn/team/releases
svn/trunk
note that all the tags are present but omitted for brevity
如何获取丢失的分支?
这不是 Cloning a Non-Standard Svn Repository with Git-Svn or how to use nested branches through git-svn 的副本。
您可以多次指定 --branches 标签。 From the docs:
These are optional command-line options for init. Each of these flags can point to a relative repository path (--tags=project/tags) or a full url (--tags=https://foo.org/project/tags). You can specify more than one --tags and/or --branches options, in case your Subversion repository places tags or branches under multiple paths. The option --stdlayout is a shorthand way of setting trunk,tags,branches as the relative paths, which is the Subversion default. If any of the other options are given as well, they take precedence.
对于你的情况,尝试:
git svn clone \
--branches=branches/team/releases/* \
--branches=branches/development/user1/* \
--branches=branches/development/user2/* \
...等等
可以再次 运行 克隆还是我必须从头开始并删除 git 存储库?
一般来说,您应该从头开始尝试。该工具不是更新脚本。
事实上,无需重新克隆整个存储库就可以做到这一点,这对于大型 Subversion 存储库来说可能需要花费很多时间。我通过编辑 .git
目录中的 config
文件来正确设置我的分支和标签。
如果你做一个普通的git svn fetch
,什么都不会发生。诀窍是 trick/force Git 重新获取所有修订:
git svn fetch 0:HEAD
此命令会导致所有 tags/branches 被引入,而无需经过冗长乏味的 t运行k 导入,跳过 t运行 就足够聪明了k 个修订已在初始 运行 中导入。现在我的 SVN tags/branches 在我现有的 Git 存储库中,没有新的克隆。