【发布时间】:2012-03-01 10:50:19
【问题描述】:
正如标题中的问题所述。
一点背景: 我们公司正在外包,但我们希望外包人员拥有最新的代码并使用最佳实践(如源代码控制)。现在我们也在做内部开发。出于保密原因,我们不想让他们访问我们的内部源代码控制,但我们将在一些项目上进行合作。
有没有办法,当我从我们这边推送时,我可以同时更新我们内部的 git 设置和外包商的 git 存储库?
【问题讨论】:
标签: git version-control git-push
正如标题中的问题所述。
一点背景: 我们公司正在外包,但我们希望外包人员拥有最新的代码并使用最佳实践(如源代码控制)。现在我们也在做内部开发。出于保密原因,我们不想让他们访问我们的内部源代码控制,但我们将在一些项目上进行合作。
有没有办法,当我从我们这边推送时,我可以同时更新我们内部的 git 设置和外包商的 git 存储库?
【问题讨论】:
标签: git version-control git-push
是的,您可以这样做。在您的内部存储库中使用一个挂钩来触发(保存的凭据)推送到远程存储库。
另一种方法是不时运行批处理同步脚本。
第三种可能不太有效的方法是使 git commit 在本地被挂钩以提交到两个 repos。我不推荐这种方法。
【讨论】:
其实我以前也做过。我的 .git/config 文件如下所示:
[remote "github"]
url = git@github.com:mattborn/raplets.git
push = +:
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "personal"]
url = ssh://mtborn@mattborn.net/~/raplets.git
push = +:
fetch = +refs/heads/*:refs/remotes/mirror/*
[remote "origin"]
# Push as equally authoritative
url = git@github.com:mattborn/raplets.git
url = ssh://mtborn@mattborn.net/~/raplets.git
push = +:
fetch = +refs/heads/*:refs/remotes/origin/*
我认为这不一定是个好主意……但我已经做到了。
【讨论】:
git-clone 之外,我还必须每次都通过 git-remote 设置。
如果您使用 codebasehq,您可以设置一个镜像存储库,当您更新原始存储库时,该镜像存储库将更新另一个存储库。或者,正如 Borealid 在他的回答中所说,您可以设置一个同步两个存储库的定期任务。
【讨论】: