2010-11-23 5 views

答えて

1

この回答は、次のように表示されます。コミットを拒否することは、SVNの唯一の安全なオプションだと私は信じています。

+0

+1はい。いいえ、そうです。 –

0

これ以外の方法はありません。サポートされていても、このようなことをすると頭痛だけが発生します。チェックインする前にコードを再フォーマットすることはお勧めできません。これは、リビジョンの差異が実際に変更されたものの良いイメージを与えるわけではないからです。何かがひどくフォーマットされていて読めない場合にのみ、私はそれを行います。

+0

これは問題ではありません。 VCSの履歴に反するような形でファイルの形式を大幅に変更することは、一度限りの操作ではありません。ファイルはすでにかなり良い形になっていますが、その点をそのまま維持することがポイントです。 –

0

このようなことをしたい場所は、clean/smudgeスクリプトを使用して、データベース接続文字列、コマースポータルのパスワードなどを隠すことです。これは通常、1つの設定ファイルを持つことができ、機能的なパブリックデータとプライベートセキュリティデータの混在。

Pro Git Book's Attributes Section

は、このことができます願っています。

+0

私の質問はSVNを指します。そして、これを行う他の理由があります。 –

0

これはIDEまたはXMLエディタの仕事のようです。たとえば、Eclipseでは、保存時にさまざまな自動アクションを指定できます(しかし、貧弱なXMLエディタを作成します)。XMLエディタがあると確信しています。

良いdiffツールには、空白や重要でない差異を無視するオプションがあるため、ファイルが再フォーマットされていてもdiffファイルを見やすくするため、diffsがこの理由であるとは思わないと思います。

あなたが協力しているチームによっては、この「整理」があなたが触れるすべてのファイルを劇的に変更している場合は、それを避けたい場合もあれば、完全に問題ない場合もあります。私は、例えば、Eclipseの末尾に空白をトリムし、保存時に欠落した@Overrideアノテーションを追加していますが、保存時に.javaファイルを完全に再フォーマットするようには言いません。

+0

複数のエディタを使用する人がいて、自動処理も行われています。一般に、ファイルは劇的に変更されませんが、チーム標準に準拠させる必要があります。 –

+0

Hmm。その場合、自動化された処理の一部として行うことができますか?それとも、おそらく、エディタの外でxmlクリーンアップスクリプトを開発者が手動で実行するようにします。開発者が異なるエディタを使用しても、各エディタを適切に設定することはできないため、これは問題ではありませんか? –

0

Gitでは、個人的な使い方のためにリポジトリ全体を持っているので、コミット中にファイルを削除することは問題にはなりません。結局のところ、あなたは自分自身に影響を与えているだけです。

しかし、Subversionには集中リポジトリがあります。つまり、コミット中にファイルが混乱するのはややこしく、通常はお勧めできません。

問題の1つは、このタイプのものはフックとフックによって処理されなければならないということです。サーバ上で動作し、作業コピーにアクセスできないためです。彼らは読み取り専用のsvnlookコマンドでコミットを調べることができますが、それだけです。はい、それを回避する方法はありますが、マニュアルによると、推奨されていません。

GitやClearCaseのようなバージョン管理システムでも、コミット中にファイルをマージすることは可能ですが、それでもやはり良い考えはありません。まず第一に、フックスクリプトが実行されるときにコミットプロセスが遅くなり、ユーザを苛立たせることがあります。次に、ファイルを分割するプロセスが実際にファイルを分割するとどうなりますか?開発者は、変更をテストしてからそれらをコミットする前に検証することを想定しています。 「ビルドを破る」とは、ブレークルームで最後のコーヒーを飲んで別のポットを作っているよりも犯罪です。しかし、ここには、彼らが想定していたすべてのことをやった開発者がいて、それをしたばかげたフックスクリプトでした!

これは、自動ビルドプロセス(CruiseControlやHudsonのような増分ビルドシステムを使用していますか?)で行う必要があります。これはテストの一環として行うことができ、ファイルが正しくフォーマットされていない場合は、ビルドを「不安定」とマークすることができます。実際、Hudsonはこれを非常に簡単にするビルドプロセスの一環としてこれを行うことができるフックを持っています。ビルドサーバーは、プログラマーに不正行為を通知することができます(悪いプログラマー!ファイルはインデントされていません!あなたのためにドーナツはありません!)とテクニカルリードまたはビルドマネージャー。

チェックインは、開発者が書き込んでテストしたものです。フォーマット、単体テスト、その他すべてのことをビルドシステムで確認できます。

+0

特定のケースで私は構築システムがないことを心配しています:それは構成データです。他の人がその設定を展開する機会があるので、壊れた設定データがリポジトリに到達することは望ましくありません。ステージング環境がありますが、一見無害な変化と時間の圧迫も多数あります。手作業による間違いの可能性は、「きちんとした」バグの確率よりはるかに大きい。コミット速度は問題ではありません。将来のある時点では、展開ツールがこのチェックを行いますが、これはおそらく正しいソリューションです。 –

+0

バージョン管理システムではいつでも変更を取り消すことができます。誰が何をチェックインできるかを制限することができます。私はあなたが[ここ](http://dl.dropbox.com/u/433257/hook.tgz)からダウンロードできるこの設定を可能にするフックを持っています。そうすれば、人々が誤ってそれを変更するのを防ぐことができます。本当に必要な場合は、事前コミットトリガーを作成し、ファイルが正しくフォーマットされていない場合はトランザクションを単に拒否するトリガーを作成します。開発者は、コミットする前に書式を確認することをすぐに学びます。 –

関連する問題