2010-07-23 59 views
1

我试图找到一种方法在生产环境中使用自定义修补程序部署软件。基础软件是开源的,拥有自己的回购站(SVN),我们有一些补丁只能选择一种服务,而不是其他补丁(所以我们在一台服务器上安装了基本版+ patchA + patchB,基本版+ patchA + patchC在另一个)。使用自定义本地修补程序管理软件

一切都将作为包部署,这很简单。我正在考虑的问题是:我们如何存储修改?这些是我想到的一些方法:

  • 我试过使用被子/补丁系列+从上游下载特定版本修建时。这很好,直到我们需要将修补程序移植到新版本。由于被子需要修改修补程序的树的副本,因此修复东西需要很长时间。而且,在不同的服务器上部署不同的版本意味着我们需要有不同的构建脚本。
  • 我可以将存储库克隆到本地git/hg中,并通过本地修改创建一个分支。对于向前移植补丁非常好,我可以在我的分支上创建本地发布标签,但不幸的是,我失去了有关单独补丁的信息。当然,我可以在上游看到差异,但我失去了不同本地修改的明显分离。
  • 我试过堆叠的git/hg-mq,但据我所见,它们不能轻松导出补丁系列。它们适用于存储正在进行的工作。我可以执行与BitBucket相同的技巧,并在“存储库内部”创建修补程序队列以导出它们,但随后每个修补程序队列将分别分配给一个分支(例如,在使用patchA的每个本地分支中都需要进行相同的修改) 。

您有任何其他的想法,文章,标准化的方式吗?其他专业人士&缺点我提到的方式?

回答

0

我知道这是因为你问了一个很长一段时间,但你有了答案就在这里:

我可以克隆库到本地的git/Hg和创建一个分支 的局部修改。这对移植修补程序非常有用,它可以转发 ,我可以在我的分支上创建本地发行标签,但不幸的是,我的 会丢失有关单独修补程序的信息。我可以在上游看到差异到 当然,但我失去了清晰分离的不同本地 修改。

通过Git的“提交”机制,您仍然可以清楚地区分不同的本地修改。

我看到它的方式,Git“commit”与通过电子邮件发送的补丁本质上是一样的。也就是说,它使用主题行和描述性主体文本来说明更改原因,从而封装了一个更改。当然,它也包含所有相关文件的更改。

如果您确实需要将更改发送到外部系统(例如上游),但信息仍然存在,git format-patch命令(及其堂兄git send-email)将实际以此格式输出。