我首先要说完全有可能这个不可能 - 如果不是,那就没事了(好吧,它很糟糕,但我会活下去)。我知道可能还有一些"那么,无论如何,这将如何运作?"墙壁在做我想做的事,但是嘿。
我想要做的是重新格式化Subversion存储库中的大量文件而不更改任何所有权数据,无论是转向:
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 | }
或任何其他排列。
我想要这样做,因为存储库中存在大量格式错误的代码,并且我希望在不占用(几乎)整个事物的情况下清理它因为能够将Blame击中文件的一侧并查看每行的最后更改以及这些更改的原因,这样很方便。重新格式化与提交消息和所有权将删除存储库的大块,并强制我们在日志中查找实际人员,然后区分它只是为了确保。
如果有人能想出一种替代方法来重新格式化代码而不会破坏责任,我也会对此提出建议。
答案 0 :(得分:2)
svn blame
中获得一个新的修订号。毕竟,即使是无害的改变也可能导致问题。如果重新格式化操作更改了破坏应用程序的数据,该怎么办?仔细格式化该数据的开发人员不希望发现自己受到指责。这就是为什么即使格式化更改也会改变修订版。
如果需要,您可以执行以下操作:修订的所有者是svn:author
的修订属性。如果更改了该修订属性,则可以更改执行提交的用户的名称。
有点限制:
blame
中显示为该作者,所显示的修订将是您进行更改时的修订版。我的建议:不要这样做。如果没有经过全面测试,你可能会破坏某些东西。我建议使用Jenkins之类的东西。我意识到PHP文件不需要像Java或C代码一样编译,但你可以对文件运行语法检查并在Jenkins中显示结果。
您可以将phpcheckstyle应用程序与Jenkins Checkstyle插件一起使用。然后使用cigame插件挑战开发人员修复代码本身的格式。
修复后的每个checkstyle违规行为都会给开发人员提供cigame插件中的积分。这将鼓励开发人员自己修复格式问题。如果您不是开发人员,则不应触及代码。否则,Finger o'Blame可能会指向为您创建错误代码的开发人员,因为您更改了它 - 即使它只是格式化。