Warm tip: This article is reproduced from serverfault.com, please click

其他-git-svn失败,更新参考头ref / remotes / origin / trunk:命令返回错误:128

(其他 - Git-svn failed with update-ref HEAD refs/remotes/origin/trunk: command returned error: 128)

发布于 2020-12-09 14:27:27

我正在尝试将14.4k提交和12年的项目从SVN迁移到git。

由于这是进行基本浏览器研究时首先使用的工具,因此我尝试使用git-svn由于确实很大,因此我尝试从最近的历史中进行迁移,如下所示:

 git svn clone -r 13800 --username=myUsername http://<URL>/collectionOfRepositories/repository1/ProjectA/ --authors-file "authors-transform.txt" --trunk trunk --tags tags --branches branches projectA-git

svn存储库如下所示:

ProjectA/
    branches/
    shelving/
    tags/
    trunk/
ProjectB/
    branches/
    shelving/
    tags/
    trunk/

我知道它是相当标准的,也是SVN的推荐体系结构之一。

运行此命令时,我得到的结果是:

App_Data
Checking svn:mergeinfo changes since r13800: 30 sources, 0 changed
r13800 = 9ca186bbeee33b2e3f6a5adc9d13288042afddd9 (refs/remotes/origin/aBranch                                                                                                                                                                                               )
fatal: refs/remotes/origin/trunk: not a valid SHA1
update-ref HEAD refs/remotes/origin/trunk: command returned error: 128

请注意,这是在第一次提交时发生的。

我发现似乎正是我的问题。 这个答案有3个建议,第一个建议已在我当前的命令中使用,第三个建议将我引向subgit工具的其他问题,这将导致我具体询问另一个问题。第二个建议是建议使用此命令来修复存储库:

$ git update-ref refs/heads/master refs/remotes/git-svn
fatal: refs/remotes/git-svn: not a valid SHA1

我不知道“ git-svn”是从哪里来的,所以我想将其改编成这样的mu case:

$ git branch --all
  remotes/origin/myBranch #written in red
$ git update-ref refs/heads/master refs/remotes/origin/myBranch

$ git branch --all
* master #written in green
  remotes/origin/myBranch #written in red

除了文件夹中的.git存储库之外,我没有任何文件,执行git log此操作时仅提交一次。此外,ProjectA还应该拥有大约20个分支机构。我是否想以某种方式恢复失败的命令?

提出另一种答案

Reasons:

    You didn't specify Subversion layout when it was not standard (trunk-tags-branches). Specifically for the error - you have no /trunk.
    You didn't fetch from revision old enough to span at least one commit into trunk (for example, using -r option).
    Combination of the above

我认为我的体系结构是正确的,并且600个修订版本就足够了,所以...

还:我在Windows环境上,我在gitbash和/或powershell中运行了所有这些命令。因此,我不能使用svn-all-fast-export / svn2git @Vampire。

我究竟做错了什么 ?

Questioner
Amon
Viewed
11
Amon 2020-12-14 18:16:32

我没有直接解决问题,但我想我理解为什么会发生。我相信这个答案(我在原始问题中提到)实际上是正确的,因为它没有使用足够老的修订版。

当我尝试从某个修订版本克隆时,该修订版本可能已经足够老,可以用于主干,但不能用于所有分支和标签

我认为修订版本号对于所有分支和标记必须足够旧,否则,当git svn尝试克隆它们时,它找不到任何修订版本,因此会崩溃。

通过省略该--revision选项并进行了完整的迁移,我能够解决我的问题