pre-commit スクリプト内で、? に起因するコミットを特定することは可能svn merge
ですか?
svnlook changed ...
変更されたファイルを表示しますが、マージと手動編集を区別しません。
merge
理想的には、標準とを区別したいと思いmerge --reintegrate
ます。
バックグラウンド:
プロジェクトに SVN の使用ポリシーを適用するために pre-commit フックを使用する可能性を探っています。
ポリシーの 1 つは、一部のディレクトリ ( など/trunk
) を直接変更してはならず、機能ブランチの再統合によってのみ変更する必要があると述べています。したがって、pre-commit スクリプトは、ブランチの再統合を除いて、これらのディレクトリに加えられたすべての変更を拒否します。
何か案は?
アップデート:
コマンドを調査しましたが、最も近いのは、ディレクトリsvnlook
のプロパティへの変更を検出して解析することです。svn:mergeinfo
このアプローチにはいくつかの欠点があります。
svnlook
プロパティの変更にフラグを立てることはできますが、どのプロパティが変更されたかはわかりません。proplist
(前のリビジョンとの差分が必要です)- の変更を調べることで
svn:mergeinfo
、実行されたことを検出できsvn merge
ます。ただし、コミットが純粋にマージの結果であるかどうかを判断する方法はありません。マージ後に手動で行った変更は検出されません。(関連記事:別のパス/リビジョンに対するトランザクション ツリーの差分)