Coding style 向开源项目提交修补程序

Coding style 向开源项目提交修补程序,coding-style,open-source,refactoring,Coding Style,Open Source,Refactoring,我对我在工作中使用的一个相当大的开源项目中的pull请求有点困惑。我不会透露该项目,但它包含大量用户提交的脚本,这些脚本用于监控任务关键型系统或应用程序的各个方面。我发现了一个用户提交的shell脚本,我需要将它用于我自己的工作,但它有几个主要的bug,而且在风格上是一个残骸。我修复了bug,并重构了几乎整个脚本,使之成为一个相当干净的“bash表单”。我对脚本做了一个拉取请求,项目负责人拒绝了带有引号的补丁: “这主要是编码风格的改变。你的努力真的很成功 非常感谢,但如果我们开始接受这种方式,

我对我在工作中使用的一个相当大的开源项目中的pull请求有点困惑。我不会透露该项目,但它包含大量用户提交的脚本,这些脚本用于监控任务关键型系统或应用程序的各个方面。我发现了一个用户提交的shell脚本,我需要将它用于我自己的工作,但它有几个主要的bug,而且在风格上是一个残骸。我修复了bug,并重构了几乎整个脚本,使之成为一个相当干净的“bash表单”。我对脚本做了一个拉取请求,项目负责人拒绝了带有引号的补丁:

“这主要是编码风格的改变。你的努力真的很成功 非常感谢,但如果我们开始接受这种方式,我们将一事无成 补丁。请试着把注意力集中在这个问题上,即真正 需要修理,谢谢!”

下面是我在整个脚本中为提高可读性而进行的bash编码样式更改的示例:

- start_time=`date +%s%N`
+ start_time=$(date +%s%N)

这在开源项目中常见吗?我投入的大多数项目都是我自己的,我一直在重构风格糟糕的代码。如果代码将被其他人使用,比如所讨论的脚本,那么可用性重构不应该受到欢迎吗?我只是有点困惑,因为这个项目没有编码风格指南。

每个项目都有自己的规则和指南。您已经被告知,该项目的工作规则与您将要工作的规则不同。如果你想做出贡献,听起来你必须遵守他们的规则。(在辩论中,我倾向于站在你这一边——但当我不负责时,我会遵守那些负责人的规则!)

每个项目都有自己的规则和指导方针。您已经被告知,该项目的工作规则与您将要工作的规则不同。如果你想做出贡献,听起来你必须遵守他们的规则。(在辩论中,我倾向于站在你这边——但当我不负责时,我会遵守那些负责人的规则!)

你是否分割了补丁,以便先修复bug,然后再更改样式?如果不是,我也会拒绝这个补丁。改变逻辑的补丁应该尽可能小且独立。在试图理解您修复的内容时,没有人希望通过几十次样式更改来确保它们对逻辑没有影响。

您是否拆分了修补程序,以便先修复错误,然后再进行样式更改?如果不是,我也会拒绝这个补丁。改变逻辑的补丁应该尽可能小且独立。在试图理解您所修复的内容时,没有人希望经历几十次样式更改以确保它们不会影响逻辑。

这在开源项目中绝对不是通用的。我将给出一个反例,来自最近的一个pull请求:

我的pull请求与mu的Emacs组件有关,称为mu4e。我唯一的更改是通过
M-x customize
(Emacs相当于“编辑->首选项”或“工具->选项”)使项目中更多的变量可供编辑。任何程序逻辑都没有改变。正如您所看到的,拉请求在两个小时后就被合并了,没有任何麻烦。(我以前从未对这个项目做出过贡献,所以根据我过去的贡献或类似的东西,我没有快速跟进。)这是一个只做表面改变的请求的例子,它得到了愉快的接受,没有任何抱怨

至于为什么有问题的项目拒绝了你的补丁,也许他们只是太固执或太骄傲了,不会让其他人在他们的代码或类似的东西中乱来,但另一方面,有充分的理由不合并外观上的非面向用户的更改。如果他们接受您的代码,并且他们至少承担最低限度的责任,那么他们至少必须查看您正在进行的所有更改,确保您没有破坏某些内容,并确保您的代码更改与您的提交日志所述的更改相匹配。我猜你的pull请求在很多文件中改变了一大堆孤立的行或块,对吗?如果您进行全面搜索并用
$()
替换背景标记,您可能会得到这样的结果。这类补丁可能很难验证,因为你一行接一行地看着同样的变化,你的眼睛呆滞了,你错过了一个导致整个项目破裂的案例,即缺少闭合的paren


关键是,即使您免费为他们提供代码,实际上合并代码并不是免费的,将代码集成到项目中所涉及的工作必须由运行项目的人员完成,否则他们将合并他们不信任的代码。在某些情况下,项目负责人可能会看到您的更改声称要改进的内容,并做出理性的决定,即这些改进并不能证明以负责任的方式合并代码所需的努力是合理的。如果您不同意,您可以自由创建自己的fork(不是“敌对”fork,只是普通的“ProjectX with my customizations”fork),并将更改放在那里,然后自己使用。如果您的更改真的值得拥有,人们可能会开始转向您的fork,这时原始开发人员可能会重新考虑他们的立场,并合并您的更改。

这在开源项目中绝对不是通用的。我将给出一个反例,来自最近的一个pull请求:

我的pull请求与mu的Emacs组件有关,称为mu4e。我唯一的更改是通过
M-x customize
(Emacs相当于“编辑->首选项”或“工具->选项”)使项目中更多的变量可供编辑。任何程序逻辑都没有改变。正如您所看到的,拉请求在两个小时后就被合并了,没有任何麻烦。(我以前从未参与过这个项目,所以根据我的过去,我没有快速跟进