Deployment 使用自定义本地修补程序管理软件

Deployment 使用自定义本地修补程序管理软件,deployment,release-management,patch,Deployment,Release Management,Patch,我正试图找到一种在生产中部署带有自定义补丁的软件的方法。基础软件是开源的,有自己的repos SVN,我们有一些补丁只为一种服务选择,而不是为另一种服务选择,因此我们在一台服务器上有base+PATCH A+PATCH B,在另一台服务器上有base+PATCH A+PATCH C 一切都将作为包部署,这非常简单。我考虑的问题是:我们如何存储修改?以下是我思考的一些方法: 我尝试过在构建时使用Cotton/patch series+从上游下载特定版本。这很有效,直到我们需要将补丁移植到新版本。因

我正试图找到一种在生产中部署带有自定义补丁的软件的方法。基础软件是开源的,有自己的repos SVN,我们有一些补丁只为一种服务选择,而不是为另一种服务选择,因此我们在一台服务器上有base+PATCH A+PATCH B,在另一台服务器上有base+PATCH A+PATCH C

一切都将作为包部署,这非常简单。我考虑的问题是:我们如何存储修改?以下是我思考的一些方法:

我尝试过在构建时使用Cotton/patch series+从上游下载特定版本。这很有效,直到我们需要将补丁移植到新版本。因为Cutter需要一个树的副本来修改补丁,所以修复这些东西需要很长时间。另外,在不同的服务器上部署不同的版本意味着我们需要不同的构建脚本。 我可以将存储库克隆到本地git/hg中,并通过本地修改创建一个分支。这对于向前移植补丁非常好,我可以在我的分支上制作本地发布标签,但不幸的是,我丢失了关于单独补丁的信息。当然,我可以看到上游的差异,但我失去了不同局部修改的清晰分离。 我尝试了堆叠git/hgmq,但据我所知,他们不容易导出补丁系列。它们适合存储正在进行的工作。我可以像BitBucket一样,在存储库中创建补丁队列以导出它们,但是每个补丁队列都将分别分配给一个分支,例如,在使用patchA的每个本地分支中都需要进行相同的修改。
你有没有其他的想法、文章、标准化的方法?我提到的方法的其他优点和缺点?

我知道你问这个问题已经很久了,但你的答案就在这里:

我可以将存储库克隆到本地git/hg并创建一个分支 经过局部修改。这对于向前移植补丁非常有用 我可以在我的分支上制作本地发布标签,但不幸的是我 丢失有关单独修补程序的信息。我能看出两者的区别 当然是上游,但我失去了不同地方的清晰分离 修改

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

在我看来,Git提交本质上与通过电子邮件发送的补丁是一样的。也就是说,它用主题行和说明更改原因的描述性正文封装了单个更改。当然,它还包含对所有相关文件的更改

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