不破坏 SVN blame 记录的样式清理?

9
我想使用Eclipse的格式化程序来修复一些格式不良的代码,但是删除所有关于谁负责什么的存储库中的元数据有一个巨大的缺点。有没有什么方法可以解决这个问题?也许这完全不可能...
4个回答

7
您可以告诉 blame 忽略空格变化:
svn blame -x -w file/path

当然,这只在您的样式修复不改变更多的空格时才有效。

这看起来很棒,但对我不起作用。有什么窍门吗?你当前使用哪个客户端和平台? - atikat
默认情况下,Tortoise SVN 忽略空格更改(有一个复选框可以更改此设置)。 - fschmitt
如果您希望忽略换行符(CRLF vs. LF)的变化,请使用 svn blame -x -w -x --ignore-eol-style 命令。请参阅 svn help blame此问题 - Tor Klingberg

1

历史记录仍然存在,您只需要查看清理修订之前的责任。

这是拥有样式标准的一个很好的理由。缩进更改可能会导致许多合并冲突等问题。对于一个人来说“格式不佳”可能是写得很好的,而对于另一个人来说则不然。


1
不幸的是,有很多样式不佳的代码库需要开始处理。我猜一个痛点是Eclipse注释只显示最近的更改。而且人们经常使用它们。 - Jacob

0

另一种解决方案是添加一个pre-commit钩子,将提交的文件与其格式化版本进行比较。如果没有差异,则接受提交。

否则,一个简单的消息“代码未格式化:拒绝提交”将通知你的开发人员在提交之前对其修改的文件进行格式化。

结合Stefan的答案,你仍然可以使用带有-w选项的blame,并且不会覆盖开发人员的名称。

其中一个缺点是你无法在一次操作中为整个存储库设置格式。文件将按修改顺序进行格式化。经常使用的文件将很快被格式化,而有些可能永远不会被更新。


-1
通常我在重新格式化代码时只会调整缩进,因为自动格式化程序可能会毁掉一些精心手动排版的代码段。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接