我会开始说这完全有可能是可能的 - 如果不是,那很好(好吧,很烂,但是我'LL Live)。我知道可能有一些"好吧,这将如何工作?"墙壁做我想做的事,但是。
我想做的是在不更改任何所有权数据的情况下重新格式化大量文件,要么将其转换为:
username | commit number
------------------------------------------------
john_smith | 1 | <?php
john_smith | 1 | echo 'Hello world';
joe_bloggs | 2 | if (isset($user)) {
john_doe | 3 | echo ', and hello ' . $user;
joe_bloggs | 2 | }
进入此(未拥有新线路):
username | commit number
------------------------------------------------
john_smith | 1 | <?php
| |
john_smith | 1 | echo 'Hello world';
joe_bloggs | 2 | if (isset($user))
| | {
john_doe | 3 | echo ', and hello ' . $user;
joe_bloggs | 2 | }
或此(我拥有新线路,但没有变化的行):
username | commit number
------------------------------------------------
john_smith | 1 | <?php
mr_man | 4 |
john_smith | 1 | echo 'Hello world';
joe_bloggs | 2 | if (isset($user))
mr_man | 4 | {
john_doe | 3 | echo ', and hello ' . $user;
joe_bloggs | 2 | }
或任何其他排列。
我想这样做,因为存储库中有很多格式化良好的代码,我想将其清理干净而无需(几乎)(几乎)的所有权,因为能够很方便要归咎于文件的一侧,并查看每行的最后一个变化以及这些更改的原因。使用重建>提交消息和所有权将为大部分存储库中删除它,并迫使我们在实际人员中查看日志,然后差异以确保。p>如果有人可以想到一种替代方法来重新格式化而不破坏责任,我也愿意就此提出建议。
你能做到吗?否。文件中的任何更改都会创建另一个修订版。因此,您将在每行的svn blame
中获得一个新的修订号。毕竟,即使是无害的变化也可能导致问题。如果您的重新格式操作改变了打破应用程序的数据,该怎么办?精心格式化数据的开发人员不想发现自己为此而受到责备。这就是为什么即使格式化更改也会改变修订的原因。
如果需要的话,您可以做些什么:修订的所有者是svn:author
的修订属性。如果您更改修订属性,则可以更改执行提交的用户的名称。
有点限制:
- 每个提交只有一个作者,因此您必须安排您的承诺来完成特定作者的所有文件。
- 默认情况下,颠覆不允许您更改修订属性。您必须创建一个预修订更改钩子以允许您更改该属性。
- 所有线条都将显示为
blame
中的作者,所示的修订将是您进行更改时的修订。
我的建议:不要这样做。如果没有彻底测试,您可能会破坏一些东西。我建议使用詹金斯之类的东西。我意识到,PHP文件不需要编译,例如Java或C代码,但是您可以在文件上运行语法检查器并在Jenkins中显示结果。
您也许可以与Jenkins CheckStyle插件一起使用PhpCheckStyle应用程序。然后使用CIGMAME插件来挑战开发人员来修复代码本身的格式。
固定的每种违反校验方案的违规都将为CIGame插件中的开发人员点提供点。这将鼓励开发人员本身修复格式问题。如果您不是开发人员,则不应触摸代码。否则,手指的责备可能是从为您创建Buggy代码的开发人员而指出的,因为您将其更改 - 即使它只是格式化。