web-dev-qa-db-ja.com

Subversionでロックされているファイルを確認する最良の方法は何ですか?

ようやくグループにSourceSafeからSubversionに切り替えるようになりました。残念ながら、私のマネージャーはすべてのファイルに排他ロックを使用したいと考えています。そのため、すべてのファイルにsvn:needs-lockプロパティを設定し、プロパティが設定されたままになるようにpre-commitフックを作成しました。

LinuxサーバーでSubversionを実行しています。私たちのほとんどはWindowsマシンを使用しており、一部はMacを使用しています。さまざまなSVNクライアント(TortoiseSVN、SmartSVN、Subclipseなど)を使用しています。

現在必要なのは、リポジトリ全体で現在ロックされているすべてのファイル(およびそれらをロックしているユーザー)を確認するための適切な方法です。 TortoiseとSubclipseを少し覗きましたが、探しているものが見つかりませんでした。私たちのプロジェクトには、複数のレベルの深さのサブディレクトリが多数あるため、個々のディレクトリを調べるのは時間がかかりすぎます。

私が欲しいのは、現在ロックされているすべてのものとそれをロックしている人を一覧表示する、実行できる単一のレポートです。このタイプの情報を取得する最良の方法は何ですか?

40
Shane

あなたが探しているのは svnadmin lslocks コマンドです。

いくつかのWord文書をSubversionリポジトリ(svn:needs-lockを使用)に保持しているため、これを設定しています。私はcronジョブを毎日セットアップして、ロックのリストをチェックし、7日より古いすべてのロックのレポートをチーム全体に電子メールで送信しています。こうすることで、ドキュメントのロックされたコピーをだらしなくして、長い間座っていた人を知ることができます。

34
Greg Hewgill

これはあなたが探している答えではないかもしれませんが、ロックは実際には開発のベストプラクティスではないことをマネージャーに納得させるようにしてください。このテーマについて書かれたことがたくさんあるので、ここでは繰り返しません。

ロック環境からチェックアウトロックが適用されていない環境に移行すると、最初は混乱につながると思いますが、実際にはそうではありません。 SVNは、2人が同じファイルで作業しているときに変更をマージするのが得意です。競合が発生しても、修正することはそれほど悪くありません。

重要なファイルがチェックアウトされた状態で昼食に出かけた人を待ったり、さらに悪いことに休暇をとったりするよりもずっとましです。

22
Eric Z Beard

サーバーでロックされているすべてのファイルの前にOを配置するsvn status --show-updatesを使用して、ローカルチェックアウトからロックを検出できます。

例えば.

$ svn status --show-updates
     O      279532   LockedFile
?                    UncommittedFile
M           279532   ModifiedFile

詳細は the svnbook を参照してください

22
ashirley

あなたや他の人が保持しているロックを確認するには、TortoiseSVN→変更の確認...を使用できます。ローカルに保持されているロックトークンがすぐに表示されます。他のユーザーが保持しているロックを確認するには(そして、ロックが壊れているか盗まれたかどうかを確認するには)、[リポジトリの確認]をクリックする必要があります。

21
Maja