用于跟踪远程项目的GIT用法,但保持本地更改的私密性

时间:2010-06-17 20:21:32

标签: git

在工作中,我们使用git为开源项目做贡献,并保留本地专有更改(我们也许可它)。而我想要做的是设置一个裸存储库,它是上游存储库的克隆。然后我们的开发人员将从中克隆并使用更多的cvs / svn开发模型推回它 - 如果Joe在分支中处理某些事情然后离开,我们就像Hank一样通过检查分支来接管它。 / p>

我最困惑的是跟踪远程回购的最佳方法。我们内部的裸仓库的主人应该是上游的主人副本吗?或者我们应该把它放在另一个分支上。此外,由于我们的共享仓库是裸机,我们如何从上游引入最新的变化?如果我是正确的,我会将上游作为远程添加到我的个人结账处,拉出来,然后将其推回我们的共享仓库?

如果可能,我们希望限制可以将上游更改引入共享仓库的用户,但所有开发人员都应该可以自由访问共享仓库中的其他分支。

我是否因为我希望我们的git repo能够工作而对我产生太大的影响?

感谢。

3 个答案:

答案 0 :(得分:0)

我的建议是使用像git这样的CI服务器。例如Hudson有一个插件,允许合并所有分支,构建和测试它,并在一切都是绿色时将其推送到掌握。

您还可以运行任意命令,因此您可以拥有一个依赖项目,该项目在成功完成后将外部主服务器推送到分支上的内部存储库后触发。

然后,您可以决定手动合并此分支,或让另一个hudson作业合并它,并在绿色时将其推送到内部主服务器。

答案 1 :(得分:0)

我建议如下:

  • UPSTREAM的GIT(又名上游)分支:
  • 公司的共享回复(又名 companygit )分支机构:
    • 专有:公司的发展部门
  • LOCAL GIT REPO分支机构:
    • upstream_master:track upstream / master
    • 专有:跟踪companygit / proprietary

因此,新工作人员将克隆 companygit git到他的计算机,然后添加上游(git remote add)并从那里拉_upstream_master_分支。在本地,他有_upstream_master_分支,它直接跟踪上游/主远程(公司技术不应该真正关心,我相信),以及专有分支,它遵循 companygit的分支。

有一段时间,他可以'git pull upstream_master',checkout专有,然后'git merge upstream_master'(祈祷没有冲突:)),合并新的上游提交,然后推送到 companygit

为了将您的特定更新推送到上游,我会为每个相关提交使用'git cherry-pick'。

答案 2 :(得分:0)

这是一个解决方案:在某个地方有一个非裸存储库,它具有内部中央存储库和上游主服务器的远程控制。然后你可以有一个cron工作'git pull upstream master; git push internal master:upstream'。这将拉出上游代码,然后使用新代码更新内部服务器上的“上游”分支。

从那里,每个人都可以上下游,还有其他两个标签 - 可能是“已发布”和“内部”或其他什么? - 代表你在内部完成的工作,全部来自中央仓库。如果确保要发布的任何内容最终都发布在已发布的分支上,则可以将其推送到github或其他内容以供上游人员合并(如果需要)。一般来说,您将有人定期将上游合并到已发布和已发布到内部,以便上游更改得到正确传播。