如何正确使用带有Git钩子的CI脚本来压缩源

时间:2017-01-10 06:26:37

标签: git build continuous-integration branch githooks

我有一个feature分支和一个testing分支(用于初始回归)。我想为测试环境的testing分支提供工作副本。但是,我需要通过脚本压缩一些源代码(不是二进制,只是优化)。我可以通过post-receive Git钩子来制作这个脚本。

我正在尝试设计我的bash脚本(用于CI),因此它非常强大,并希望避免自动化导致Git冲突。我正在考虑拥有一个主存储库(origin)和一个测试环境存储库(ci_test),只是为了允许CI提交。

我正在考虑在宣传来源时推送ci_test/testing。 CI应该压缩,添加,提交,从origin/testing获取,必要时进行合并(将其完全iff冲突),然后推送到origin/testing

上面我的模型的问题是,当我尝试推送到ci_test/testing时,Git会抱怨,因为它有一个工作副本(有意义,因为它们可能无法同步)。有没有一种适当的(自动化的)方法来使用Git的持续集成脚本,以便它们仍然被跟踪?

1 个答案:

答案 0 :(得分:2)

  上面我的模型的问题是,当我尝试推送到ci_test / testing时,Git会抱怨,因为它有一个工作副本(有意义,因为它们可能无法同步)。 你可以: 确保你的ci_test是一个裸仓库,带有一个post-receive hook,它将: 检查你的分支机构测试 触发所有操作 或者,如果您是唯一一个推送到ci_testing远程仓库的人,请配置远程Git接受推送到非裸仓库。 这是可能的,因为Git 2.3+具有: git config receive.denyCurrentBranch updateInstead 使用Git 2.4+,您可以使用“push-to-checkout”挂钩设置远程ci_testing,该挂钩可以安装在服务器上,以准确定制用户推送到签出分支时发生的情况。