1

私はこれが不可能である可能性が完全にあると言うことから始めます-そうでなければ、それは問題ありません(まあ、それはひどいですが、私は生きます)。「まあ、とにかくそれはどのように機能するのでしょうか?」私がやりたいことをするのに壁がありますがねえ。

私がやりたいのは、所有権データを変更せずに、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をヒットできると便利なので、(ほとんど)すべての所有権を取得せずにクリーンアップしたいと思います。ファイルの横に移動して、各行の最後の変更と、それらの変更の理由を確認します。コミットメッセージと所有権を使用して再フォーマットすると、リポジトリの大部分のそれが削除され、実際の人のログを調べて、確認のために差分をとる必要があります。

誰かがBlameを台無しにすることなくコードを再フォーマットするための別の方法を考えることができれば、私もそれについての提案を受け入れます。

4

1 に答える 1

2

あなたはそれをすることができますか?いいえ。ファイルに変更を加えると、別のリビジョンが作成されます。svn blameしたがって、行ごとに新しいリビジョン番号を取得します。結局のところ、無害な変更でさえ問題を引き起こす可能性があります。再フォーマット操作によって、アプリケーションが破損したデータが変更された場合はどうなりますか。そのデータを注意深くフォーマットした開発者は、自分たちがそのことで非難されていることに気づきたくないでしょう。そのため、フォーマットを変更してもリビジョンが変更されます。

必要に応じて、できることがあります。リビジョンの所有者は、のリビジョンプロパティですsvn:author。そのリビジョンプロパティを変更すると、コミットを行ったユーザーの名前を変更できます。

少し制限があります:

  • 各コミットには作成者が1人しかいないため、特定の作成者がすべてのファイルを実行するようにコミットを調整する必要があります。
  • デフォルトでは、Subversionではリビジョンプロパティを変更できません。そのプロパティを変更できるようにするには、リビジョン前の変更フックを作成する必要があります。
  • すべての行がにその作成者として表示され、blame表示されるリビジョンは、変更を行ったときのリビジョンになります。

私の推薦:それをしないでください。徹底的にテストしないと、何かを壊す可能性があります。私がお勧めするのは、Jenkinsのようなものを使用することです。PHPファイルはJavaやCコードのようにコンパイルする必要はありませんが、ファイルに対して構文チェッカーを実行して、結果をJenkinsで表示することはできます。

JenkinsCheckstyleプラグインと一緒にphpcheckstyleアプリケーションを使用できる場合があります。次に、cigameプラグインを使用して、開発者にコード自体のフォーマットを修正するように要求します。

修正された各checkstyle違反は、cigameプラグインの開発者にポイントを与えます。これにより、開発者はフォーマットの問題を自分で修正するようになります。開発者でない場合は、コードに触れてはいけません。そうしないと、Finger o'Blameは、バグのあるコードを作成した開発者から、それを変更したために指摘される可能性があります。

于 2012-10-23T16:30:44.487 に答える