git p4从裸存储库提交?

时间:2012-07-06 22:21:16

标签: git perforce git-p4

我们有一些开发人员在服务器上推送远程裸仓库,并希望做一些事情,比如使用git p4从这个中央裸仓库自动推送每晚。但是我遇到了麻烦,因为看起来你不能在工作树之外运行git p4。

处理这类事情的推荐方法是什么?

2 个答案:

答案 0 :(得分:1)

我使用每隔几分钟运行一次的脚本做类似的事情,并在git和p4之间进行双向同步。但是如果没有签出的git树和p4 repo,git-p4就无法工作。总而言之,您最终得到了3个版本的资源:

  1. 裸git repo
  2. 签出了'git p4'的git repo,以便在
  3. 中完成工作
  4. p4结帐从...提交到p4。
  5. 开发人员使用名为'dev'的分支推送到一个简单的git repo(在gitolite上保存)。然后每隔几分钟就会有一个脚本:

    1. 更新签出的git树(git pull --rebase)
    2. 将最新的上游p4更改下拉到p4 / master(git p4 sync)
    3. 反对g4世界反对p4世界(git rebase p4 / master)
    4. 将git更改发送到p4(git p4 submit)
    5. 重写'dev'分支(git push origin + HEAD:dev)
    6. 陷阱

      1. 合并冲突。这些实际上很少发生,但可能会导致一些问题。

      2. 我必须在整个过程中添加一些锁定,以便开发人员在(1)和(5)之间进行更改时不会丢失更改。锁定只会创建一个锁定目录,然后在其中一个钩子脚本中使用它来延迟推送。

      3. RCS关键字。较新版本的'git p4'现在可以处理RCS关键字,但最初没有,所以整个事情偶尔会因为合并冲突而卡住。

      4. 设置需要一段时间,但现在已有超过18个月的开发人员,只有极少数事件。

答案 1 :(得分:0)

最简单的方法是不使用git-p4,但只是检查一下git树,这也是一个perforce checkout,并从那里编写脚本? 即执行git pull,解析输出以编辑适当的文件,添加新文件,删除已删除的文件,然后提交到perforce?