Har*_*lan 5 git perforce git-p4
我有一个 git 存储库,我想将其镜像到 Perforce 存储库。我已经下载了 git-p4 脚本(不提供弃用警告的较新版本),并且一直在使用它。我已经想出了如何从 Perforce 中提取更改,但是当我尝试从 git repo 同步更改时出现错误。这是我到目前为止所做的:
git clone git@github.com:asdf/qwerty.git
git-p4 sync //depot/path/to/querty
git merge remotes/p4/master (there was a single README file...)
Run Code Online (Sandbox Code Playgroud)
所以,我已经将原点复制到一个干净的新导演,得到了一个看起来很可爱的合并文件树,并git status
表明我是最新的。但:
> git-p4 submit
fatal: Not a valid object name HEAD~261
Command failed: git cat-file commit HEAD~261
Run Code Online (Sandbox Code Playgroud)
git 邮件列表上的这个线程似乎是相关的,但我无法弄清楚他们对所有 A、B 和 C 做了什么。有人可以澄清“无效的对象名称”是什么意思,以及我能做些什么来解决这个问题?我想要做的就是定期将源/主节点快照到 Perforce 中;不需要完整的历史记录。谢谢。
fatal: Not a valid object name
Run Code Online (Sandbox Code Playgroud)
应该意味着遥控器的 HEAD 指向了错误的引用。
换句话说,当您在 git 存储库中执行 P4 导入时,由于 SHA1 不正确,因此无法从该 git 存储库提交到 P4。为什么?我不知道。
这就是为什么,在您提到的线程中,用户:
--import-local
使用(“导入到refs/heads/
,而不是refs/remotes
”)将 P4 存储库克隆到 B 中,修复HEAD
B 的 引用 B 中导入的 p4 master 分支
将 B 克隆到 C,一个非裸存储库(它的工作树不为空,您可以在其中工作)
B 仅在初始导入时存在。
其余的工作是用 C 语言完成的(不存在 SHA1 不正确的问题):
git-p4 sync
remotes/p4/master
(除了 之外 还要在 C 中声明remotes/origin/*
)git-p4 submit