自动同步2个可写的git存储库

时间:2016-05-31 08:28:35

标签: git synchronization

我正在一个小型办公室工作,我们正在使用 git 在Windows共享中央存储库,我们可以在那里推送和推送。 为了能够在家,旅行等地工作,我们希望有可能从外部世界到达中央仓库"。我们的互联网连接非常非常慢,所以不可能只有一个中央存储库"内部"或"外部"。

我的简单尝试如下:

  • 在内部WIN网络共享中创建一个中央存储库:git init --bare
  • 在外面做一个"" (例如github或外部WIN共享或其他任何内容)
  • 在内部回购电话git remote add EXTERNALREPO <pathToIt>
  • 并每隔x分钟/小时运行批处理,说git fetch --tags EXTERNALREPOgit push --tags EXTERNALREPO

当工作&#34;内部&#34;时,克隆/推/拉内部仓库,在路上时,使用外部仓库。

问题:这是要走的路,有更好的方法,还是我完全错了?

相关:

  1. Two-way git mirror - 我不认为我们需要锁定,因为我们不是那么多人。
  2. Safe master-master setup with git? (writable git mirror)
  3. How to keep 2 git repositories in sync automatically - 据我所知,只要运行所有挂钩,推送就会持续,因为使用Windows共享,CLIENT必须运行它,所以它不会是一个解决方案。
  4. 更新1 :我现在想出了一个稍微调整好的配置。

    • 内部Windows共享上的内部存储空间:git init --bare
    • 外部Windows共享上的EXTERNAL repo:git init --bare
    • 两个回购:

      git config receive.denyNonFastForwards 1
      git config receive.denyDeletes 1
      git remote add {INTERNAL|EXTERNAL} file:///...
      
    • 每x秒/分钟/小时,首先在内部调用git push --all {INTERNAL|EXTERNAL}git push --tags {INTERNAL|EXTERNAL},然后在外部存储库

1 个答案:

答案 0 :(得分:0)

  1. &#34; Windows共享中的存储库&#34; The Bad&amp; Ugly Idea(tm)
  2. 在INTERNAL中使用post-* hook,以便在发生时推送到EXTERNAL
  3. DVCS中的伪CVCS非常丑陋(每个人都可以将本地旅行回购带到工作场所并从中同步)