繁体   English   中英

使用 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/*/* (并且也一起使用)并再次运行clone命令以查看是否有任何其他分支被拾取但他们不是。

可以再次运行clone还是我必须从头开始并删除 git repo?

如果我在克隆后运行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如何通过 git-svn 使用嵌套分支的副本。

事实上,无需重新克隆整个存储库就可以做到这一点,这对于大型 subversion 存储库可能需要数小时。 我通过编辑.git目录中的config文件来正确设置我的分支和标签。

如果你做一个普​​通的git svn fetch ,什么都不会发生。 诀窍是欺骗/强制 Git 重新获取所有修订:

git svn fetch 0:HEAD

此命令导致所有标签/分支都被引入,而无需经历冗长乏味的主干导入,它足够聪明,可以跳过在初始运行中已经导入的主干修订。 我现在在我现有的 Git 存储库中有我的 SVN 标签/分支,而没有新的克隆。

您可以多次指定 --branches 标签。 从文档

这些是 init 的可选命令行选项。 这些标志中的每一个都可以指向相对存储库路径 (--tags=project/tags) 或完整 url (--tags= https://foo.org/project/tags )。 您可以指定多个 --tags 和/或 --branches 选项,以防您的 Subversion 存储库在多个路径下放置标签或分支。 选项 --stdlayout 是将主干、标签、分支设置为相对路径的一种简写方式,这是 Subversion 的默认设置。 如果还给出了任何其他选项,则它们优先。

在您的情况下,请尝试:

git svn clone \
  --branches=branches/team/releases/* \
  --branches=branches/development/user1/* \
  --branches=branches/development/user2/* \

...等等。

可以再次运行 clone 还是我必须从头开始并删除 git repo?

一般来说,你应该从头开始尝试。 该工具并不是一个更新脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM