git - 自动将推送的文件从一个 GitHub 存储库复制到另一个

标签 git github github-api githooks

我有两个 GitHub 存储库。

我想在将文件推送到第一个存储库时自动(可能使用 Hook 和/或 github API)将文件提交并推送到第二个存储库。

第二个存储库不是第一个存储库的克隆,它们的文件夹布局不一定相同,只有一堆文件是相同的。

最简单的方法是什么?

如果我不需要安装 http 服务器或学习 perl,我将获得加分 :)

最佳答案

如果您正在寻找稳健且易于维护的东西,我鼓励您围绕 GitHub Webhooks 开发一个解决方案.是的,它需要你部署一个 HTTP 服务器,比如 Node.js server ,并且它需要少量的开发(您的要求相当具体),但我认为如果您需要可靠且维护成本低的东西,它会有所返回。如果您认为这种文件镜像方法仍然是正确的做法,并考虑了这些方法和设置工作,那就是这样。

让源存储库(在 GitHub 上)为 S1S2 ...(非重叠)文件集镜像 F1, F2 ..., 被发送到目标仓库 T (也在 GitHub 上),其中相应的文件被认为是只读的。您的要求不寻常,因为 SnT 听起来它们不是彼此克隆的,它们甚至可能没有任何共同的提交,在这种情况下这不是推/取场景。您还不能保证源文件更新每次提交都会发生一次,或者甚至分组但与非复制更改隔离,因此这与挑选提交无关。

复制的触发器是将某些文件推送到 S1S2 ...,而不是对这些存储库的任何开发人员克隆的提交,因此客户端 -侧钩无济于事(而且维护起来可能很尴尬)。 GitHub 当然不允许通用 Hook ,因此 Webhooks 是您最好的解决方案。您可以考虑另一个定期从 S1 pull 的轮询克隆 ...,执行逻辑然后提交给 T,但这与 Webhooks 相比听起来很尴尬,后者将为您提供可靠的交付、重放能力,体面的审计跟踪等。

好处是有很多已经构建的基础设施来支持这种类型的设置,因此您需要编写的实际代码可能会非常少。假设您使用 Node.js 类型设置:

  • 部署 github-webhook-handler .这个很酷的小库是 GitHub Webhooks 的预构建处理程序,处理 HMAC X-Hub-Signature 验证并为所有 Webhooks 事件提供简单的事件监听器 Hook 。每个 S 可以有一个端点,或者将它们扇形展开可能更容易。
  • 有一些将 Sn 映射到 Fn 的本地文件(将其保存在 Git 存储库中)。
  • X-GitHub-Event: push 注册一个处理程序,并检查 repository/namecommits[]/modified[]与您本地 map 匹配的路径。
  • 部署 node-github , GitHub APIv3 的实现用于 Node.js。
  • 对于每个匹配的文件:

这种方法允许您在不需要 T 的本地克隆的情况下做任何事情。您可能会发现使用本地克隆更好,我会先看看 API 方法有多简单。

enter image description here

关于git - 自动将推送的文件从一个 GitHub 存储库复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30400104/

相关文章:

java - 如何在 JGit 中运行 "git rebase -i --root"?

git - 对于特定提交,Git-merge 和 Git-cherry-pick 之间有什么区别?

html - 为什么 Markdown 要点由额外的换行符分隔?

Github 个人访问 token ,用于访问私有(private)仓库的 :/repos/:user/:repo/contents

github - github搜索限制结果

git - 如何使用 GitHub API V3 列出公共(public)存储库的所有版本

git - 我可以使用 SVN 或 Mercurial 只提交部分代码吗?

git - 如何更有效地使用 Magit?

github - 在github上打开时如何更改Visual Studio的版本

git - 使用 git 进行审批流程?