如何正确使用带有 Git 钩子的 CI 脚本来压缩源代码
How to properly use CI scripts with Git hooks to compress source
我有一个 feature
分支和一个 testing
分支(用于初始回归)。我想为测试环境的 testing
分支提供一个工作副本。但是,我需要通过脚本压缩一些源代码(不是二进制,只是优化)。我可以通过 post-receive Git 挂钩执行此脚本。
我正在尝试设计我的 bash 脚本(针对 CI),以便它相当健壮并且希望避免自动化导致 Git 冲突。我正在考虑拥有一个主存储库 (origin
) 和一个测试环境存储库 (ci_test
),只是为了允许 CI 提交。
我正在考虑在推广源代码时推送到 ci_test/testing
。 CI 应该压缩、添加、提交、从 origin/testing
获取,必要时合并(考虑他们的完整 iff 冲突),然后推送到 origin/testing
。
我上面的模型的问题是 Git 在我尝试推送到 ci_test/testing
时抱怨,因为它有一个工作副本(有道理,因为它们可能不同步)。是否有适当的(自动化的)方式将持续集成脚本与 Git 一起使用,以便它们仍然被跟踪?
The problem to my model above is that Git complains when I attempt to push to ci_test/testing
because it has a working copy (makes sense, because they may not be synced).
您可以:
确保您的 ci_test
是一个裸仓库,其中 post-receive
hook 会:
- 触发你的所有操作
或者,如果您是唯一推送到 ci_testing
远程仓库的人,请配置远程 Git 以接受推送到 non-bare 仓库。
这是可能的 since Git 2.3+ 与:
git config receive.denyCurrentBranch updateInstead
和 with Git 2.4+,您可以使用“push-to-checkout
”挂钩设置远程 ci_testing
,该挂钩可以安装在服务器上以准确自定义用户推送时发生的情况checked-out 分支。
我有一个 feature
分支和一个 testing
分支(用于初始回归)。我想为测试环境的 testing
分支提供一个工作副本。但是,我需要通过脚本压缩一些源代码(不是二进制,只是优化)。我可以通过 post-receive Git 挂钩执行此脚本。
我正在尝试设计我的 bash 脚本(针对 CI),以便它相当健壮并且希望避免自动化导致 Git 冲突。我正在考虑拥有一个主存储库 (origin
) 和一个测试环境存储库 (ci_test
),只是为了允许 CI 提交。
我正在考虑在推广源代码时推送到 ci_test/testing
。 CI 应该压缩、添加、提交、从 origin/testing
获取,必要时合并(考虑他们的完整 iff 冲突),然后推送到 origin/testing
。
我上面的模型的问题是 Git 在我尝试推送到 ci_test/testing
时抱怨,因为它有一个工作副本(有道理,因为它们可能不同步)。是否有适当的(自动化的)方式将持续集成脚本与 Git 一起使用,以便它们仍然被跟踪?
The problem to my model above is that Git complains when I attempt to push to
ci_test/testing
because it has a working copy (makes sense, because they may not be synced).
您可以:
确保您的
ci_test
是一个裸仓库,其中post-receive
hook 会:- 触发你的所有操作
或者,如果您是唯一推送到
ci_testing
远程仓库的人,请配置远程 Git 以接受推送到 non-bare 仓库。
这是可能的 since Git 2.3+ 与:git config receive.denyCurrentBranch updateInstead
和 with Git 2.4+,您可以使用“push-to-checkout
”挂钩设置远程 ci_testing
,该挂钩可以安装在服务器上以准确自定义用户推送时发生的情况checked-out 分支。