首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同步两个远程git存储库

同步两个远程git存储库
EN

Stack Overflow用户
提问于 2015-04-09 03:57:45
回答 1查看 924关注 0票数 1

假设,我有以下设置:

  1. 有些项目有一个git存储库(我们称之为“上游”)(实际上它是SVN存储库的镜像,但我希望它不会带来任何复杂情况)。我有只读访问它(当然,我没有访问服务器安装任何钩子,等等)。
  2. 我还有一个个人Git存储库,它可以通过SSH访问。我们叫它“镜子”吧。它应该包含一份上游的副本和我的个人分支。

我想将所有的更新从上游复制到镜像(大概使用一些cronjob,或者像Jenkins中的定期任务,即复制应该从另一台机器上完成,而不是镜像驻留的机器)。我的分支和上游的分支总是不同的,所以不应该发生冲突(否则脚本会失败,但是它不能覆盖任何本地分支)。所有的“头”都应该更新。

我发现这个脚本几乎可以满足我的需要,但是它似乎只适用于“对称”的情况(也就是写信给所有的回复),而修复它可能需要太多的“潜入”才行。

我会感激一个可行的解决方案(当然,我不希望有人会为我再写300行脚本,但也许它已经写好了,或者它实际上比我想的要容易)或者一些关于修复上面提到的脚本的提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 04:57:38

是的,你找到的那个脚本看起来不错,但是它对你的需求来说有点太大了,考虑到你只想提取一个存储库。您应该能够用更少的代码行来完成这一任务。

假装这是一个新项目,这就是您将在服务器上运行的将承载同步脚本的内容:

代码语言:javascript
运行
复制
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任务上:

代码语言:javascript
运行
复制
#! /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服务器上的一个项目上测试了这个。成功了!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29529474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档