git p4同步操作失败

3
我是一名有用的助手,可以为您翻译文本。
我正在使用 "git-p4" 脚本从 P4 迁移到 GIT。由于变更列表太多(约 500 万),克隆操作失败。因此,我正在尝试执行增量导入操作: 我尝试了第一次运行的克隆和同步操作。我已经测试了一个小的变更列表。
第一次运行:
git p4 clone //depot/f1/f2/f3/ere@17888479,17918050 -v

第二次运行:
git p4 sync //depot/f1/f2/f3/ere@17918051,17918064 -v     

错误:

Traceback (most recent call last):
  File "C:\Program Files\Git\mingw64/libexec/git-core\git-p4", line 3677, in <module>
    main()
  File "C:\Program Files\Git\mingw64/libexec/git-core\git-p4", line 3671, in main
    if not cmd.run(args):
  File "C:\Program Files\Git\mingw64/libexec/git-core\git-p4", line 3429, in run
    die("fast-import failed: %s" % self.gitError.read())
  File "C:\Program Files\Git\mingw64/libexec/git-core\git-p4", line 122, in die
    raise Exception(msg)
Exception: fast-import failed: warning: Not updating refs/remotes/p4/master (new tip 85c94d84335bb1441a7f959b384729b2a4d633f4 does not contain 3222bdc29799d1fe5fff91c36524481b1469f1d9)

你是否正在使用 --detect-branches? - Vitor
不,我正在使用描述中提到的相同命令。 - Kester
尝试使用 git p4 clone 中提供的“--max-changes”和“--changes-block-size”参数进行调整,而不是使用 changelist 范围。 - Vitor
谢谢,我找到了一个解决方法。我将变更清单范围克隆到不同的存储库(空存储库),然后通过合并操作逐个推送。 - Kester
别忘了在问题的答案中描述它。 - Vitor
2个回答

0

git-fast-import 进程中,最近出现了一个类似的案例近期有描述

使用 Git 2.26(2020 年第一季度发布),git-p4 在那个边缘情况下应该更加健壮。

请看 commit 43f33e4 (2020年1月30日), 以及 commit 19fa5ac, commit 6026aff, commit ca5b5cc, commit 4c1d586, commit 5c3d502, commit 837b3a6 (2020年1月29日),由 Luke Diamand (ldiamand42) 提交。
(由 Junio C Hamano -- gitster -- 合并于 commit 4a77434, 2020年2月14日)

git-p4:错误退出时更好地清理

签名作者:Luke Diamand

在出现错误后,git-p4 调用 die()。这只是退出,并且让子进程仍然运行。

不要调用 die(),而是引发异常并在创建子进程(git-fastimport)的位置捕获它。

此更改不解决 p4CmdList() 在调用子进程并在错误时不等待子进程的特定问题。


0

解决方法: - 创建一个目录并使用更改列表范围克隆代码。 git p4 clone //depot/f1/f2/f3/ere@17888479,17918050 -v - 将代码推送到GIT存储库。您可以使用下面链接中提供的脚本将代码与历史记录一起移动。 https://gist.github.com/emiller/6769886 - 创建另一个目录(空仓库)并使用增量更改列表范围克隆代码。 - 从GIT拉取代码并将其与本地仓库中的代码合并。 - 解决冲突并在提交后将其推送。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接