将数据推送到裸git仓库时,如何自动将数据推送到git-repo?
gitrepo - the name of my bare repo, I push to this repo from my desktop
sandbox - the name of a git repo, should automatically contain up-to-date data
每次推送到gitrepo后,沙箱存储库应自动包含最新数据。
我考虑过不使用裸仓库,而直接将其推送到沙箱,而将其推送到非裸git仓库是不可能的。因此,人们推荐的解决方案是一个接收后挂钩,该挂钩将使数据在/ etc / puppet / environments / sandbox /下可用。
[root@puppet environments]# cat gitrepo/hooks/post-receive
#!/bin/sh
cd /etc/puppet/environments/sandbox/
git pull origin
[root@puppet environments]#
不幸的是,这个钩子也没有任何作用。我看过http://bare-vs-nonbare.gitrecipes.de/提供的示例(http://utsl.gen.nz/git/post-update),但我简直不敢相信自动将回购提交推到另一个回购应该需要86行代码。
当您使用各种git钩子中的某些(或什至全部)钩子(肯定包括)时post-receive
,环境变量GIT_DIR
将设置为.
(!),这意味着,如果您使用cd /etc/puppet/environments/sandbox
并运行任何其他git
命令,它将在repo中查找存储库/etc/puppet/environments/sandbox
,即使那是一个非公开的仓库,它的git管理的内容实际上也在/etc/puppet/environments/sandbox/.git
。
如果您简单地添加以下内容,则简单的测试钩可能会开始为您服务(使其更难为他人使用):
unset GIT_DIR
在使用git命令之前。
(请注意,git pull
如果最近一次的推送是例如对side-project
分支的推送,添加标签的操作或其他任何使沙盒的分支保持不变的操作,那么盲目地执行a都是有效的,但会导致过度杀伤。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句