我们有一些开发人员推送到服务器上的远程裸仓库,并且想做一些事情,比如使用来自这个中央裸仓库的 git p4 自动推送以每晚执行一次。但是我遇到了一个障碍,因为您似乎无法在工作树之外运行 git p4 submit 。
处理这种情况的推荐方法是什么?
我对每隔几分钟运行一次并在 git 和 p4 之间进行双向同步的脚本执行类似操作。但是如果没有检出的 git 树和 p4 存储库,git-p4 就无法工作。总之,你最终得到了 3 个版本的源代码:
开发人员使用一个名为“dev”的分支推送到一个裸 git repo(保存在 gitolite 上)。然后每隔几分钟,就会有一个脚本执行以下操作:
陷阱
合并冲突。这些实际上很少发生,但可能会导致一些问题。
我必须在整个事情上添加一些锁定,以便开发人员在 (1) 和 (5) 之间进行更改时不会丢失更改。锁定只是创建一个锁定目录,然后在其中一个钩子脚本中使用它来延迟推送。
RCS 关键字。'git p4' 的较新版本现在可以处理 RCS 关键字,但最初它没有,所以整个事情偶尔会卡住,因为它们会导致合并冲突。
设置需要一段时间,但现在已经使用了 18 个月,有 100 多名开发人员,几乎没有发生任何事件。
不使用 git-p4 可能是最简单的,而只是签出 git 树,这也是一个强制签出,然后从那里编写所有脚本?即做一个git pull,解析输出以编辑适当的文件,添加新的,删除删除的,然后提交到perforce?