SVN 提交以及文件和 e 格式文件之间的区别



您如何管理代码的维护/正确格式而不会出现合并和差异问题?

例如。我在存储库中有一个格式错误的旧文件,例如:

/**
 * Old code
 */
public static void main(String[] args)
{
   for (int i=0;i<10;i++) {System.out.println(i);}
}

然后我格式化代码:

/**
 * Formatted code (ctrl-shift-f in Eclipse)
 */
public static void main(String[] args) {
    for (int i = 0; i < 10000; i++) {
        System.out.println(i);
    }
}

如果我将此代码与存储库进行比较,我会看到很多变化,但我没有看到真正的区别(我将限制 10 更改为 10000)。

如何管理"格式代码"和"活动代码"之间的版本控制?

你没有。Subversion 不理解编程语言或上下文 - 它只是识别文件已更改。当您重新格式化代码时,您将获得很多细微的更改。您的选择:

  1. 永远不要自动格式化您的代码
  2. 始终自动格式化您的代码,从您创建新文件的那一刻起
  3. 处理它。

为了处理这样的事情,你需要一个真正理解语言的工具。 版本控制系统不包括此类功能,因为它们被设计为通用化,语言并不重要(假设语言是文本而不是二进制数据)。

我知道的唯一这样的工具是SemanticMerge。 它只在这一点上知道C#和Java。 它可以配置您的版本控制系统以替换内置的合并。

我提出的一个建议是不要混合格式和功能更改。 如果要重新格式化,请在与功能更改分开的提交中执行此操作。 通常,我在提交消息中带有注释来提交这些更改,说明没有功能更改。 这有助于任何合并它的人知道任何行为都不应该与更改不同,并且任何行为更改都是合并中的错误。

最新更新