Git:分发用户特定的文件

时间:2014-05-09 07:54:03

标签: git software-distribution

我有点被扔进了冷水......

我们的产品包含一般使用的文件和一些用户特定的文件。基于Git对开发周期的非常好的经验,我们正在考虑使用Git来分发给最终用户。

分发常用文件并不是什么大问题;可以通过特定分支完成。但我不知何故坚持使用特定于用户的文件。其中一个条件是不允许其他用户知道它们。到目前为止我理解Git的方式是每个地方都有完整的文件集,这是不允许的。

所以,问题:

  1. Git仍然是分发使用的工具吗?

  2. 如果是这样,我们如何实现特定于用户的文件分发? (请注意,系统更新将包含新的常规文件以及新的用户特定文件)

  3. 什么是帮助我解决这些问题的良好信息来源(除了在这里询问)?

  4. 如果Git不是我们目的的工具,我们应该看哪个方向?

  5. 提前感谢任何评论。

2 个答案:

答案 0 :(得分:1)

  

1 / Git仍然是分发使用的工具吗?

否:"分发"意味着"发布管理" (包装+交付出版物),而Git是严格意义上的(分布式)版本工具。

  

2 /如果是这样,我们将如何实现特定于用户的文件分发? (请注意,系统更新将包含新的常规文件以及新的用户特定文件)

您可以使用分支机构,结合值文件,让git在结帐时为您生成正确的最终文件( smudge 脚本)。 /> 您可以声明 content filter driver 能够识别当前分支。

smudge

(来自Pro Git book 7.2 Customizing Git - Git Attributes

但是这是一种构建正确发布文件的方法
是分发这些文件的方法:请参阅下一点。

  

3 /如果Git不是我们目的的工具,我们应该看哪个方向?

发布管理通常通过构建计划程序JenkinsHudsonTeamCity,...)进行。

您可以在这里:

  • 自动获取git repo的最新版本(上面的涂抹脚本将应用并生成正确的用户文件,具体取决于该调度程序中作业监控的分支)
  • 打包并分发这些文件:这是由您附加到作业的脚本完成的,并且该脚本可以使用任何语言,执行您想要的任何操作:

  • 生成一些可以轻松分发的内容(例如,一个简单的zip文件):这是打包步骤

  • 将该包复制到您需要复制的任何地方。

这种方法的另一个好处是,您不需要在生产服务器上使用Git,这意味着您可以减少一个"移动部件"在所述生产服务器上调试/更新/维护,保持简单(r)。

答案 1 :(得分:0)

您必须在分支 / 标记上使用 git服务器细粒度访问控制


Gitolite

  

Gitolite允许您在中央服务器上设置git托管,具有细粒度的访问控制和更强大的功能。


Gerrit

  

Gerrit是一个基于Web的代码审查系统,使用Git版本控制系统促进项目的在线代码审查。

     

Gerrit通过在并排显示中显示更改,并允许任何审阅者添加内联注释,使评论更容易。

     

Gerrit通过允许任何授权用户向主Git存储库提交更改来简化基于Git的项目维护工作,而不是要求所有批准的更改由项目维护人员手动合并。此功能可以更集中地使用Git。

注意:Gerrit已经创建用于代码审查,但它包含一个带有细粒度访问控制的内部git服务器,如果不需要审查,则只能用于此。此外,可以使用Web UI轻松配置Gerrit。