假设,我有以下设置:
我想将所有的更新从上游复制到镜像(大概使用一些cronjob,或者像Jenkins中的定期任务,即复制应该从另一台机器上完成,而不是镜像驻留的机器)。我的分支和上游的分支总是不同的,所以不应该发生冲突(否则脚本会失败,但是它不能覆盖任何本地分支)。所有的“头”都应该更新。
我发现这个脚本几乎可以满足我的需要,但是它似乎只适用于“对称”的情况(也就是写信给所有的回复),而修复它可能需要太多的“潜入”才行。
我会感激一个可行的解决方案(当然,我不希望有人会为我再写300行脚本,但也许它已经写好了,或者它实际上比我想的要容易)或者一些关于修复上面提到的脚本的提示。
发布于 2015-04-09 04:57:38
是的,你找到的那个脚本看起来不错,但是它对你的需求来说有点太大了,考虑到你只想提取一个存储库。您应该能够用更少的代码行来完成这一任务。
假装这是一个新项目,这就是您将在服务器上运行的将承载同步脚本的内容:
git clone git@github.com:some_user/some_project.git
git remote add mirror ssh://git@git.some_url.com/some_project.git这将完成只读应用程序的初始克隆。然后,它将备份位置设置为另一个称为“镜像”的远程设备。你可以随便叫它。
然后,这里是一个bash脚本,它只在原点更改时更新同步位置。您可以将它放在一个简单的cron任务上:
#! /bin/bash
cd /path/to/git/repo/
if [ "`git pull origin`" == "Already up-to-date." ]
then
echo "Nothing to update!"
else
git push mirror
fi我在我的Github和我的私人Gitlab服务器上的一个项目上测试了这个。成功了!
https://stackoverflow.com/questions/29529474
复制相似问题