我应该如何构建我的插件开发以及如何将补丁应用于 svn 中的补丁?

Posted

技术标签:

【中文标题】我应该如何构建我的插件开发以及如何将补丁应用于 svn 中的补丁?【英文标题】:How should I structure my plugins developments and how to apply a patch to a patch in svn? 【发布时间】:2013-02-04 18:59:09 【问题描述】:

我刚开始开发 redmine 插件和补丁,我正在使用 svn。我有下一个结构:

doc/
src/
src/branches/
src/plugins/
src/patches/
src/trunk/

我的想法是为我要开发的每个插件或补丁从主干创建一个分支。 plugins 文件夹用于存储插件的不同版本,而 patchs 文件夹用于存储补丁的版本。

我现在面临下一个问题:我创建了一个分支 issue_x 来开发补丁。在第一个版本之后,我使用svn diff > patch.diff 来获取补丁。然后我将它保存在补丁文件夹中,然后使用patch -p0 < ../patch.diff 将其应用到主干。很酷,但是我必须对补丁进行一些修改,因为在生产中发现了一个错误。

我该怎么办?

创建一个新补丁来修复错误? 修复错误,创建一个完整的补丁(包括所做的所有更改),恢复主干中的补丁,然后重新应用新补丁? 还有别的吗?

【问题讨论】:

【参考方案1】:

Subversion(以及任何常见的 SCM)方式是“合并更改”来自不同的开发线。

也就是说,您使用 svn 内部技术而不是 diff-patch 方式 - 将分支合并到主干,在分支中添加一些更改后重新合并,而您不需要的结果

阅读SVN Book,很有用的东西

【讨论】:

【参考方案2】:

我不确定您为什么使用补丁而不是合并。这很奇怪。

(对我来说)最明显的事情是从issue_x 分支出来,修复错误,合并回issue_x,然后将issue_x 合并回trunk

在您的情况下,我建议您进行更改以修复issue_x 中的错误,创建补丁并将其应用于trunk。不过,您仍然应该从SVN Book 了解SVN branching and merging。

【讨论】:

以上是关于我应该如何构建我的插件开发以及如何将补丁应用于 svn 中的补丁?的主要内容,如果未能解决你的问题,请参考以下文章

在哪里放置,以及如何访问 Grails 应用程序中的 jQuery 插件?

如何将插件应用于gradle中的一种风格?

如何在应用程序中维护 Cordova 插件

如何使用Android Studio开发Gradle插件

如何针对同一个 git 版本应用两个补丁?

Dart 包版本如何工作以及我应该如何对我的 Flutter 插件进行版本控制?