当前位置:  开发笔记 > 前端 > 正文

如何保持git repo的公共和私有版本同步?

如何解决《如何保持gitrepo的公共和私有版本同步?》经验,为你挑选了1个好方法。

我正在Github上发布一个开源的Rails应用程序(可能是麻省理工学院的许可证).我还想维护项目的私有分支/分支,我们将将其用作付费服务的一部分.

在这种情况下组织回购的最佳方法是什么?而且,当我有更新应该同时进行时,如何让项目保持同步?



1> Jakub Narębs..:

最简单的解决方案是在您的"私有"存储库中拥有私有分支,即只是不将其推送到公共存储库的分支.

为此,您可能需要指定要在config中推送到公共存储库的所有分支(而不是使用globbing镜像refspec +refs/*:refs/*),或者仔细推送要发布的分支并依赖于推送匹配分支的Git行为(那些是存在于远程端)将"push.default"设置为当前默认值"匹配".

如果您偶然推送您的私有分支,您可以使用"git push < remote >:refs/heads/< private-branch >" 将其删除在远程存储库中(除非它被配置为禁止此)(要记住这一点:push empty远程分支的价值).您可以使用远程端的钩子防止意外推送您的私有分支,请参阅contrib/examples中的例如update-paranoid示例钩子.


旁注: Junio C Hamano,git维护者,推送公共git存储库只指定一组分支:'maint','master','next','pu'(建议更新)和'html','man','去做'; 他没有发表短暂的,经常变化的特征分支.



示例设置:

    working repository  ---->  private repository (bare)  ---->  public repository  
    \------ private -------/     \------- protected ------------/     \------- public -----/

" 工作存储库 "是具有您提交的工作区域的存储库,您可以在其中提取更改并解决冲突; 您在哪里工作.假设它包含以下分支:"公共"包含可以发布到世界的更改,"私有",您希望不与他人共享或仅与选定的人员共享,也许某些功能分支如"票证 - 234'或'add-frobnicator',即使对于选定的组也看不到.此存储库是非裸的,因为它未发布.

它将具有类似于以下配置的推送到"私有"存储库.请注意,"匹配分支"行为在此处明确设置,请参阅git-pull手册页:

[remote "private"]
        url = user@example.com:/srv/private/git/repo.git
        push = +:

" 私有存储库 "是仅供选定人员使用的公共裸存储库,例如,它仅可通过SSH获取.它只有准备就绪的分支,即"公共"和"私人"分支; 这些分支在创建"私有"存储库时存在,或者从"工作"存储库中明确地推送("git push private ").从"工作"存储库推送仅推送(传输)匹配的分支,即仅"公共"和"私有"分支.

"私有存储库"具有post-update或者post-receive挂钩集,它将"公共"分支推送到"公共存储库"(见下文),如果它被推送到它(好吧,它可以无条件推送).

" 公共存储库 "是可供所有人使用的公共裸存储库,例如它托管在GitHub和/或Gitorious和/或repo.or.cz上,或者它可能通过git://使用git-daemon的协议提供.它只包含'public'分支,它使用update或者pre-receive接受分支的whilelist(这里只接受'public'分支),或者拒绝分支的黑名单(在这个例子中,推送/创建'private'分支将被拒绝) .推送到"私有"存储库时会自动更新.

根据您的需要,此设置可能过于复杂; 在您的情况下,可能不需要"私有"存储库.在这种情况下,"工作存储库"中用于直接推送到"公共存储库"的配置如下所示:

[repository "public"]
        url = ssh://example.com/srv/git/repo.git
        push = refs/heads/public:refs/heads/public

我希望这个例子有所帮助; 但请阅读文档,不要盲目使用.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有