git提交不同的文件集来开发和掌握

时间:2012-11-24 16:08:29

标签: git version-control dvcs release-management git-flow

我最近开始开发一个新库,并使用Gi​​t进行版本控制。我决定关注非常受欢迎的博客文章A successful Git branching model来管理分支。我现在是时候发布我的第一个版本了,我想在管理特定文件集方面提供一些建议,如下所述。

在开发分支和功能分支上,我想要所有“支持文件”,例如用于编译的makefile和doxygen用于生成文档的readme.md文件。 (注意这些仅仅是几个例子。我还有更多“支持文件”。)

该博客文章还说,对master分支的提交是按照定义发布的。我希望该版本包含所有“二进制文件”(例如,包括编译产生的目标文件和包含文档的html文件)。这些文件应该提交给主分支,以便客户可以使用标记从存储库中克隆并获得所需的版本。

我不喜欢在发布中使用“支持文件”(因为我不想向客户提供他们不想要或不能使用的大量文件)。同样,我不希望在开发和功能分支中对“二进制文件”进行版本控制。因此,我想提交一组文件来开发,另一组文件要掌握。 (当然,还有一组文件对两个分支都是“通用的”。)但是,我对如上所述保持主数据库和开发分支不同步持怀疑态度。

我提出的模型听起来不错吗?如果是这样,我应该如何处理承诺开发和掌握的不同文件?有没有更好的方法来处理这种情况?

我已经浏览了所述博客页面上的每条评论,搜索了互联网,并在StackOverflow上进行了搜索。从搜索结果来看,这篇文章GIT repositories with some different files似乎是唯一一个接近我的问题的帖子。这些都没有帮助我找到解决方案。

2 个答案:

答案 0 :(得分:1)

IMO建议的解决方案并不好。您问题的常见解决方案是:

  • 版本控制所有“支持文件”。如果您关心这些文件是否被修改或删除,那么它们应该受版本控制
  • 如果它们只是由编译过程生成,则不对版本控制“二进制文件”。编译的代码和Makefile是重要的。如果用于编译代码,您可能会在二进制文件中使用'bin'文件夹。
  • 围绕要传递给客户端的包创建构建过程。您可以为他们可以访问的客户端构建一个包,也可以让它们自己运行“包脚本”。 “包脚本”可以克隆存储库,构建包,并通过在命令行上执行它来删除存储库。

要详细了解git分支模型以及它们如何应用于开发,请查看http://git-scm.com/book/en/Git-Branching

答案 1 :(得分:1)

使用git-flow,master分支保存最新版本的提示,该声明中的缺陷是当你处理需要编译的软件时。

在这种情况下,master分支是源发布分支,您可以从中创建实际版本。如果按照定义查看分支模型,您还需要主分支中的所有支持文件。这样,您始终可以创建最新版本的二进制文件。

在您的情况下,您说您不希望客户拥有一堆他们不需要的文件,这意味着您在发布后需要一些额外的工作。在git-flow术语中,在执行git flow release完成后,您需要执行额外的步骤来编译您的版本。汇编的结果不应受版本控制。使用原始的git-flow软件,您需要手动启动编译过程,如果您使用我的前叉git-flow (AVH Edition),您实际上可以使用钩子自动执行此操作。

我愿意说github上99%的需要某种编译的项目都在主分支中有所有支持文件。