git - 尽管有 svn copy,如何 git svn clone 完整的历史记录

标签 git svn clone svn-copy

在我的公司,我们即将从 svn 切换到 git。我们使用的 SVN 非常大,没有 svn 布局,并且在每个版本拆分时我们都制作了一个 svn 副本。

SVN 存储库结构:

  • svnserver.company.de
    • 产品xy
      • 主要版本号 1
      • 主要版本号 2
      • 主要版本号 3
        • 次要版本号 3.0.0
        • 次要版本号 3.0.1
        • 次版本号 ...
      • 主要版本号 4
      • ....
    • 产品zw

我们想要什么或者我期望 git 做什么:

git svn clone 确实从一个子文件夹/副本中克隆所有文件,并包含这些文件的完整历史记录(就像乌龟通过取消选中“停止复制/重命名”所做的那样)。

git 在做什么:

git svn clone --prefix=origin/--username=spe --authors-file=authors.txt https://svnserver.company.de/repos/product/majorversionnumber/Master/Source产品

-> 确实从一个子文件夹/副本中克隆所有文件,但仅包含复制发生之前的历史记录。

问题:

git 是否等同于 svns“复制/重命名时停止”或如何在 svn 复制的情况下克隆完整历史记录?

到目前为止我发现了什么: Git-svn - import full history Work-around for failing "git svn clone" (requiring full history) https://github.com/githubtraining/zzz_deprecated-feedback/issues/43

老实说,如果他们和我们有同样的问题,我更不明白这些链接的解决方法。

最佳答案

好的,如果我理解正确的话,你的完整布局是这样的:

svnserver.company.de
  product xy
    majorversionnumber 1
      master
        <actual source starts here>
    majorversionnumber 2
    majorversionnumber 3
      master
        <actual source starts here>
      minorversionnumber 3.0.0
        master
          <actual source starts here>
      minorversionnumber 3.0.1
      minorversionnumber ...
    majorversionnumber 4
    ....
  product zw

这只是一个未经检验的有根据的猜测,但我会尝试这样的事情。首先,git svn init svn://svnserver.company.de。然后编辑 .git/config[svn-remote] 部分看起来像这样:

fetch = product xy/majorversionnumber 1/master:refs/remotes/origin/trunk
branches = product xy/{majorversionnumber 2,majorversionnumber 3}/master:refs/remotes/origin/branches/*
branches = product xy/majorversionnumber 3/{minorversionnumber 3.0.0,minorverionnumber 3.0.1}/master:refs/remotes/origin/branches/*

然后git svn fetch。您可以使用类似的命令 + 配置为 product zw 创建克隆。

有关详细信息,请参阅 git help svnCONFIGURATION 部分。

关于git - 尽管有 svn copy,如何 git svn clone 完整的历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358628/

相关文章:

svn - Maven 版本、subversion 分支和本地存储库

eclipse - Subclipse:有没有办法让团队>创建补丁使用相对路径?

mysql - 克隆 MySQL 行加上新的唯一 ID

ruby - 如何为外部迭代创建一个 "clone"的枚举器?

javascript - jQuery 函数不适用于克隆

git - 是否可以通过grgit插件仅提交一个文件进行gradle。

git - 我在 "create git repo here"上犯了一个灾难性的错误——我该如何纠正/撤消它?

linux - 如何撤销svn checkout

c# - Linux 上 Mono 中的 System.Speech

iphone - PhoneGap "git"命令行工具未安装