1

我尝试将 Git 存储库迁移到 Perforce。我尝试过的是(例如)

  1. 克隆git clone https://github.com/mbostock/d3.git
  2. 将目录更改为新文件夹
  3. 提交与git p4 submit

片刻后失败并显示错误消息

fatal: Not a valid object name HEAD~1036
Command failed: git cat-file commit HEAD~1036

我还没有找到迁移适用的 Git。我正在使用 Git 1.9.5。我究竟做错了什么?

4

2 回答 2

3

git-p4 实际上是为克隆现有的 p4 存储库而设计的,然后将其镜像到/从 git。您正在尝试创建一个新的 p4 分支,这是 git-p4 无法直接执行的。所以这有点复杂。

尝试以下操作:

1.在p4某处创建一个空分支。

您需要一个客户指向您的新位置,//depot/foo:

$ p4 client whatever....

您还需要创建一个空文件来让 p4 满意:

$ touch P4EMPTY
$ p4 -c your_client_name add P4EMPTY
$ p4 submit -d 'Add empty file'

2. 克隆它:

$ cd /path/to/git/dir
$ git p4 clone //depot/foo

3. 获取您要导出的存储库:

$ git remote add mycode git://whatever.git
$ git fetch mycode
$ git checkout -b upstream mycode/master

4. 根据 p4 repo 对其进行 rebase:

$ git p4 rebase p4/master

5. 提交:

# We don't want to edit the commit message, so skip that part
$ git config git-p4.skipSubmitEdit true
$ P4CLIENT=your_client_name git p4 submit

或者类似的东西...... :-)

于 2015-04-07T16:24:37.710 回答
1

Perforce 的 Git Fusion 产品可以将 Git 存储库导入 Perforce。

有关如何实现此目的的信息位于此处:

http://www.perforce.com/perforce/doc.current/manuals/git-fusion/chapter_dyn_ngj_3l.html#section_ecm_qdq_nj

使用 Git Fusion 的另一个优点是用户不需要在他们的机器上安装任何东西。

希望这会有所帮助,珍!

于 2015-04-08T15:21:55.807 回答