版本控制和编码格式

时间:2010-04-06 22:13:15

标签: svn tortoisesvn

我目前是组织内部实施新版本控制系统(Subversion)的团队成员。关于如何处理代码格式化存在一些争论,我想就此话题获得其他人的意见和经验。

我们目前有大约10名开发人员使用不同的工具(由于许可和偏好)。其中一些工具具有自动代码格式化程序,而其他工具则没有。

如果我们允许“盲”签入,那么每次有人签入时代码看起来都会大不相同。这会使差异和合并等事情变得复杂。

我和几个人谈过,他们提到了以下解决方案:

  1. 使用相同的开发人员程序和相同的代码格式化程序(由于许可而不是真正的选项)
  2. 有一个钩子(客户端或服务器端),它会在进入存储库之前自动格式化代码
  3. 手动格式化代码。
  4. 关于第3点,概念是永远不会自动格式化代码并具有一些标准。现在,这似乎是我们倾向于的。我对这种方法有点犹豫,因为它可能导致开发人员花费大量时间手动格式化代码。

    如果有人能够提供一些他们的想法和经验,这将是伟大的。

    谢谢,

    马丁

4 个答案:

答案 0 :(得分:9)

出于美观原因,不要让工具/开发人员自动/手动重新格式化代码。修订之间的差异变成了一场噩梦。有一个编码标准并尝试使用工具集来尽可能地使新模块符合要求。修改现有模块的人应该坚持使用该模块中使用的约定,无论他们喜欢与否。

答案 1 :(得分:3)

如果#1不是一个可行的选择,#3可能是你的最佳选择。 #2会使个别开发人员难以在工作副本和现有文件之间进行差异检查,然后再将其检出并在其上运行自己的格式化程序至少一次。

选项#3主要是关于让人们养成习惯 - 如果每个人都能养成相同的习惯,代码格式化并不是那么麻烦。您必须格式化的唯一代码是您创建/触摸的代码;其余的将从结帐格式化。

答案 2 :(得分:1)

如果您运行的脚本以可接受的格式格式化代码(并且每晚都有夜间构建测试此代码),那么您可以为可以强制执行此标准的SVN签名提供预提交挂钩。

但是选项#3是最好的,因为在开发过程中更容易在IDE中设置格式规则。

答案 3 :(得分:0)

我不知道这是技术问题还是文化问题。

即使他们都使用相同的工具,大多数工具都允许您更改应用于文本的默认格式规则。

定义一些标准,通过同行评审和文化理解来强制执行这些标准。