ようやくグループにSourceSafeからSubversionに切り替えるようになりました。残念ながら、私のマネージャーはすべてのファイルに排他ロックを使用したいと考えています。そのため、すべてのファイルにsvn:needs-lockプロパティを設定し、プロパティが設定されたままになるようにpre-commitフックを作成しました。
LinuxサーバーでSubversionを実行しています。私たちのほとんどはWindowsマシンを使用しており、一部はMacを使用しています。さまざまなSVNクライアント(TortoiseSVN、SmartSVN、Subclipseなど)を使用しています。
現在必要なのは、リポジトリ全体で現在ロックされているすべてのファイル(およびそれらをロックしているユーザー)を確認するための適切な方法です。 TortoiseとSubclipseを少し覗きましたが、探しているものが見つかりませんでした。私たちのプロジェクトには、複数のレベルの深さのサブディレクトリが多数あるため、個々のディレクトリを調べるのは時間がかかりすぎます。
私が欲しいのは、現在ロックされているすべてのものとそれをロックしている人を一覧表示する、実行できる単一のレポートです。このタイプの情報を取得する最良の方法は何ですか?
あなたが探しているのは svnadmin lslocks
コマンドです。
いくつかのWord文書をSubversionリポジトリ(svn:needs-lock
を使用)に保持しているため、これを設定しています。私はcronジョブを毎日セットアップして、ロックのリストをチェックし、7日より古いすべてのロックのレポートをチーム全体に電子メールで送信しています。こうすることで、ドキュメントのロックされたコピーをだらしなくして、長い間座っていた人を知ることができます。
これはあなたが探している答えではないかもしれませんが、ロックは実際には開発のベストプラクティスではないことをマネージャーに納得させるようにしてください。このテーマについて書かれたことがたくさんあるので、ここでは繰り返しません。
ロック環境からチェックアウトロックが適用されていない環境に移行すると、最初は混乱につながると思いますが、実際にはそうではありません。 SVNは、2人が同じファイルで作業しているときに変更をマージするのが得意です。競合が発生しても、修正することはそれほど悪くありません。
重要なファイルがチェックアウトされた状態で昼食に出かけた人を待ったり、さらに悪いことに休暇をとったりするよりもずっとましです。
サーバーでロックされているすべてのファイルの前にO
を配置するsvn status --show-updates
を使用して、ローカルチェックアウトからロックを検出できます。
例えば.
$ svn status --show-updates
O 279532 LockedFile
? UncommittedFile
M 279532 ModifiedFile
詳細は the svnbook を参照してください
あなたや他の人が保持しているロックを確認するには、TortoiseSVN→変更の確認...を使用できます。ローカルに保持されているロックトークンがすぐに表示されます。他のユーザーが保持しているロックを確認するには(そして、ロックが壊れているか盗まれたかどうかを確認するには)、[リポジトリの確認]をクリックする必要があります。