作業コピーXXXがロックされ、SVNでクリーンアップに失敗しました


582

私が行うときにこのエラーが発生しますsvn update

作業コピーXXXXXXXXがロックされています "クリーンアップ"コマンドを実行してください

クリーンアップを実行すると、

クリーンアップで次のパスを処理できませんでした:XXXXXXXX

このループから抜け出すにはどうすればよいですか?


5
私もこのメッセージを受け取りました。提供された回答は少し退屈に見えました(特に投票数が最も多い回答)。私はVSを閉じて解決策を再確認したところ、すべてを問題なくチェックできました。
発振クレチン2013

eakkaのコメントに従って、FirefoxのSQLLite Managerを使用してWORK_QUEUEテーブルからエントリを削除すると、問題が解決しました。
ツェッペリン

12
簡単な答えがあります。「ロックを解除する」オプションをチェックするだけで、作業コピーがクリーンアップされます
Farhan

回答:


517

1つのアプローチは次のとおりです。

  1. 編集したアイテムを別の場所にコピーします。
  2. 問題のあるパスを含むフォルダーを削除します。
  3. 含まれているフォルダーをSubversionで更新します。
  4. 必要に応じてファイルをコピーするか、変更をマージします。
  5. コミット

もう1つのオプションは、最上位のフォルダーを削除して、もう一度チェックアウトすることです。それがうまく行かないことを願っています。


123
OPの問題(と私の問題)を修正するだけでなく、svnの問題を修正しているように見える5つのステップを与えるためのこの回避策のためにあなたに+1してください。このような回避策が必要な場合は、-1をsubversionに。
pxl

34
これは技術的には機能しますが、ロックを削除するのに比べると、これは悪い方法です。
Jukka Dahlbom、2012年

8
「作業コピーが既にロックされている」ので...私はステップ3を行うことはできません
エフゲニー・

20
BradSからのアドバイスを検討してください。「私にとっては、問題が発生するまでずっと作業していたフォルダではなく、作業コピーの一番上で 'svn cleanup'を実行することがトリックでした。」
Marco

5
Tortoise SVNを使用している場合は、チェックアウトディレクトリのルートフォルダーをクリーンアップして、強制的にロックを解除できます。さらに、バージョン管理されていないファイルを削除するように要求することもできます。次に、更新を行います。
Obaid 2016年

476

私にとっての秘訣はsvn cleanup、問題が発生する前にずっと作業していたフォルダーではなく、作業コピーの一番上で実行することでした。


私はSVN 1.7にアップグレードしたので、それはだかどうかわからなく、通常動作しますが、もうない
ポプラ

4
サーバーはまだ1.6.xですが、これは1.7を実行しているクライアントで機能しました
Mark Hosang

1.7で私のために働いた非常に高く評価されました
スカーパッチ

1
私はIntuの答えからのヒントとこれを組み合わせました:.svnフォルダーに「ロック」ファイルがある親フォルダーを探し、そこで「svn cleanup」を実行します。それでうまくいきました。
rob74

5
これは、チャックの方法よりもはるかに速い方法で機能します。したがって、最初にこれを実行するのは一見の価値があります。
goamn 2014年

210

.svnフォルダを見てくださいlock。その中にと呼ばれるファイルがあります。そのファイルを削除すると、更新できるようになります。.svn各サブディレクトリのディレクトリにさらにロックファイルがある場合があります。彼らも削除する必要があります。これは、例えばコマンドラインから非常に簡単にバッチとして行うことができます

find . -name 'lock' -exec rm -v {} \;

.svnフォルダー内のファイルを手動で編集していることに注意してください。彼らは理由のためにそこに置かれました。その理由は間違いかもしれませんが、そうでない場合は、ローカルコピーに損傷を与える可能性があります。

出典:http ://www.svnforum.org/2017/viewtopic.php ? p =6068


8
+1これは、現在最も投票されている回答よりもはるかに優れたアプローチだと思います。この(一般的な!)問題を回避するには、最初にファイルを別の場所にコピーする必要がありません。鉱山は、誰かがすでにSVNに追加したのと同じ名前のファイルを生成するコード生成ツールが原因でした。最初に "svn up"をしないのは私の悪いことだと思います...
アルピアン

44
これはTortoise / SVN 1.7では機能しません(または、メタデータを含む集中管理されたDBが存在するため、少なくともロックファイルは見つかりませんでした)。
ペシェ

10
ここでは、再帰的にカレントディレクトリから始まるすべてのロックを削除する必要があります迅速なワンライナーだ:find . | grep ".svn/lock" | xargs rm
ジェシー

1
SVN 1.7では、@ BradSの回答の方が効果的です。この答えは私にはうまくいきませんでした、そしてBradSはうまくいきました。
Ira Baxter

1
私の場合、どこにもロックファイルがありません。
Tim MB

106

私の場合、WC_LOCKテーブルのSQLite ".svn \ wc"ファイルロックレコードのレコードを手動で削除して解決しました。

SQLiteエディターで「WC」ファイルを開いて実行しました

delete from WC_LOCK

WC_LOCKからパージされたすべてのエントリを示すスクリーンショット

eakkasのコメントに続いて、WORK_QUEUEテーブルからもすべてのエントリを削除する必要がある場合があります。


1
これは、WindowsのSubversion 1.7.5では私にとってはうまくいきました。ここからSQLite Expert試用版をダウンロードしました:sqliteexpert.com/download.html。上記の「SQL」タブで「削除」SQLステートメントを実行しました。
Mカッツ

これははるかに優れています。唯一の違いは、赤い(-)ボタンをクリックしたことです
Rohit Srivastava

3
無料のDI SQL Spyもトリックを実行します:yunqa.de/delphi/doku.php/products/sqlitespy/index
Ivelin Nikolaev

12
これも私にとってはうまくいきましたが、WORK_QUEUEテーブルのエントリを削除する必要もありました
eakkas

6
WC_LOCKから項目を削除しても機能しませんでした-WORK_QUEUE項目のblobの内容を確認し、問題のファイルであることが確認されました-リポジトリブラウザーからファイルを削除してから、work_queue項目を削除しました-この後クリーンアップを実行し、ビジネスに戻りました!
GregM 2013年

95

これまでで最も簡単な方法:

  1. ProjectのParent directory(Folder)に移動します。
  2. プレ右クリック
  3. 押しTortoiseSVNのを押してクリーンアップ...
  4. クリーンアップダイアログが自動的に表示されます
  5. 選択しClean up working copy statusBreak locksFix time stampsVacuum pristine copiesRefresh shell overlaysInclude externals
  6. Pres OK

あなたはあなたの仕事を成功させました。

参考のためにスクリーンショットを確認してください。

最初の一歩:

ここに画像の説明を入力してください

2番目のステップ: [ロックの解除]オプションを有効にします(クリーンアップポップアップウィンドウの2番目のチェックボックス) ここに画像の説明を入力してください

これがあなたの役に立つことを願っています。


10
私の場合、「Break lock」オプションで十分でした。おそらくこれを最初に試してみてください
Donatello

いい答えです。私はこれで「ダイアログ失明」のケースがあり、クリーンアップオプションをチェックしませんでした。歴史的に、私はロックを壊すことは私の場合...には十分であった「ルートに移動し、クリーンアップ」の作業に使用されるが、推測する
フィル・クーパー

1
私も働いた!
Daniel Silva

ロックを解除しなかったため、「ロックの解除」でそれができるとは思いませんでした。しかし、どうやらそれはこの問題を引き起こしていたsvn内部ロックを壊します。ありがとう!
バッシャー

😦私のために動作しませんでした
好戦的なチンパンジー

48

職場の同僚は常にこのメッセージを目にしています。彼にとっては、SVNから削除せずに SVNバージョン管理下のディレクトリを削除し、バージョン管理下にない同じ場所に、同じ名前で新しいディレクトリを作成したためです。

これがあなたの問題なら...:

これを修正する方法はいくつかありますが、ディレクトリが置換された方法と理由によって異なります。

どちらの場合も、次のことを行う必要があります。

A)既存のディレクトリの名前を一時的な名前に変更します

B)SVNを元に戻して、ファイルシステムから削除されたディレクトリを復元しますが、SVNからは復元しません

そこから、あなたはどちらかでしょう

A)削除されたディレクトリに関連ファイルをコピーします

SVNに続くB)ディレクトリ内のコンテンツの大幅な変更があった場合は、SVNは、元に削除コミット、および希望する名前に新しいディレクトリバックの名前を変更しますが、取得するために追加しているバージョン管理下にものを。


1
新しいバージョンで保持されている元のディレクトリのアイテムの変更履歴が壊れるので、2番目のステップB)は私には非常に悪い考えのようです。
Dunaril、2011年

非常に悪いことは、バージョン管理されたディレクトリをSVNからではなくファイルシステムから削除したときに発生しました。上記の答えは完全な回復ではないかもしれませんが、それは回復です。
Teemu Leisti

34

私にとって、上記の解決策はどれもうまくいきませんでした。ロックを解除することで解決策を見つけました。svn cleanupを実行したときに、「Break Locks」と「Clean up working copy status」を選択しました。

ここに画像の説明を入力してください


Tortoise SVNリポジトリブラウザーからロックを解除することができました。チェックアウトされたフォルダのロックを解除しても何も起こりませんでした。
Bhargava Mummadireddy

23

これは私のために働いた。

  1. ルートフォルダに移動し、
  2. 右クリックしてクリーンアップ
  3. 利用可能なすべてのオプションを確認する
  4. [OK]を押します

クリーンアップした後、最新バージョンに更新できます。


2
これも私にとってはうまくいきます。クリーンアップを続行するには、使用可能なすべてのオプション(私のバージョンでは6エントリ)を確認する必要があります。[Working copy status]と[Include externals]オプションをチェックしただけでは失敗します。
Vincent Jia

1
これは私にとってはうまくいきました...プロジェクト>チーム>クリーンアップを右クリックするだけです。.svnのSQLから行を削除する必要はありませんでした。これでうまくいきました。ありがとう!
msqar 2013

これはTortoiseSVNのバージョン1.7.4でも機能しました。表示されたデフォルトのチェックボックスを使用しました。
slm 2014

今日は役に立ちましたが、利用可能なすべてのオプションを確認する必要はありませんでした。変更を元に戻す最後の3つは確認しませんでしたが、いずれにしても機能しました。stackoverflow.com/a/35192644/460775
EMBarbosa

1
これでうまくいきました。私はちょうど確認Clean up working copy statusし、Breaks locksそしてInclude externals
Phiber

11

私にとって、それは実際には亀のせいでした。Tortoiseは「クリーンアップできません、クリーンアップを実行できません」とだけ文句を言いましたが、コマンドライン(svn cleanup)を実行すると、使用中のいくつかのファイルを削除できないことが明確に通知されました。Visual Studioを閉じると(ファイルは開いたままでした)、クリーンアップは正常に機能しました。

他のプログラムも、リポジトリでファイルを開いたままにして、この問題を引き起こします。別のインスタンスでは、xlsを開いたままのExcelが原因でした。そのため、リポジトリで何かを使用している可能性のあるすべてのプログラムを閉じるか、再起動してプログラムを強制終了し、クリーンアップを再試行するのが賢明です。


7

外部フォルダを既存のフォルダにリンクしたくないため、この問題が発生しました。宛先が既存の(バージョン付きまたはバージョンなし)フォルダーであるsvn:externalsプロパティ行を追加すると、SVN Woring Copyロックエラーが発生します。ここでは、クリーンアップにより、すべてが正常であるにもかかわらず、更新が機能しないこともわかります。

解決策:リポジトリから問題のあるフォルダーを削除し、svn:externalsプロパティが設定されているルートフォルダーを更新します。これでフォルダが作成され、すべて元通りになります。

ファイルのsvn:externalsで宛先フォルダーをバージョン管理する必要があるため、この問題が発生しました。これが異なるリポジトリでは機能しないことに気付いた後、外部ファイルから外部フォルダーにスワップして、この混乱に陥りました。


6

これを行う最も簡単な方法は、隠しフォルダーを表示してから.SVNフォルダーを開くことです。「lock」という名前のゼロKBファイルが表示されるはずです。これを削除すると問題が解決します


5

私はSVN 1.7を使用してまったく同じ問題に遭遇し、上記の修正はどれも機能しませんでした。

まず、編集したすべてのコンテンツをバックアップしてください。

数時間を費やした後(私のブランチのサイズが6GBを超えているため、すべてを再ダウンロードしませんでした)、ブランチの.svnフォルダーに「wc」というdbファイルがあることがわかりました。

任意のdbマネージャー(Firefoxのsqliteマネージャープラグインを使用)を使用してdbファイルを開き、WC_LOCKテーブルに移動します。このテーブルには、取得されたロックのエントリが含まれます。テーブルからレコードを削除すれば完了です:)


以前の回答とほとんど同じでしたが、Firefox SQLiteマネージャープラグインについて言及したので投票しました。
ehambright 2013

3

この問題が発生した場合、問題のパスで直接cleanupコマンドを実行すると、通常は機能しているように見えます。次に、作業ルートから再度クリーンアップを実行すると、他のいくつかのディレクトリについて問題が発生します。そして文句がなくなるまで繰り返します。


1
以前の回答のようにロックファイルを見つけることができませんでしたが、これは私にとっては
うまくいき

3

Windowsマシンを使用している場合は、ブラウザでリポジトリを表示すると、ファイル名が同じで大文字と小文字が異なる2つのファイルが表示されることがあります。Subversionは大文字と小文字を区別し、Windowsはそうではないので、Windowsが同じファイルをプルダウンしているとWindowsが判断し、Subversionがそうでない場合、ロックを取得できます。リポジトリー上の重複するファイル名を削除して、再試行してください。


3

新しいフォルダを作成し、プロジェクトをチェックアウトし、更新されたファイルを新しいフォルダにコピーするだけでそれを実現しました。

新しいチェックアウトで修正されました。


私も同じことをしました。(私は根本的な原因を作業コピーをいじるAnkhSVNに分類しました。AnkhSVNはアンインストールされました)。
Scotty.NET 2013年

2

TortoiseSVNを使用していて、アップグレードしたばかりですか?以前、1.4から1.5に移行して再起動しないと、その問題がありました。(再起動してみてください)。

再起動が必要な理由は、キャッシュファイルがすべてファンキーになるためです。

それ以外の場合は、次に進むには、その作業コピーを新しいフォルダーにエクスポートし(.svn隠しフォルダーをコピーしないでください)、プロジェクトを再チェックアウトし、すべてのコードを元に戻してから、コミットを続行します。


これは私にも起こりました。つまり、再起動する必要があるのです
マシューロック

2

.svnフォルダーを削除してから、親ディレクトリでクリーンアップを実行します。完璧に動作します!!


3
SVN 1.7では、上部に.svnフォルダーが1つしかないため、これは機能しません。削除すると、リポジトリへの添付が削除されます。
AnneTheAgile

2

Mac OSのバージョン:アクション->作業コピーのロックをクリーンアップ...


2

私はしばしばそのような問題に遭遇します。クリーンアップの問題を引き起こす私のパターン。

  1. ビューアで画像ファイルを開きます。
  2. 画像ファイル/フォルダを削除します。
  3. コミット/更新しようとしています

削除されたファイルが開かれている画像ビューアを閉じると問題が解決します。たぶん他のソフトウェアが同じ方法でクリーンアップをブロックすることができます。

一般に。このような場合は、コンピュータを再起動すると効果があると思います。


1

SVNは通常、実際のファイルがリポジトリからフェッチされる前に、フォルダー内のファイルの内部構造(.svn / prop-base)を更新します。ファイルがフェッチされると、これはクリアされます。「更新」が失敗したか、更新の進行中に途中でキャンセルされたため、エラーがスローされることがよくあります。

  1. .svn / prop-baseディレクトリの下にファイルがリストされていることを確認します
  2. フォルダの下にないファイルをすべて削除します
  3. 掃除
  4. 更新

これでアップデートが機能するはずです。


1

バージョン管理されたフォルダの下にあるフォルダをエクスポートしたため、同じ問題がありました。TortoiseSVNからフォルダーを削除してから、ファイルシステムからフォルダーを削除する必要がありました(TortoiseSVNはバージョン管理されていないサブフォルダーが好きではありません...なぜですか???)


同じフォルダーにフォルダーをエクスポートしたことを追加する必要があります。これは、バージョンを解除する方法です。バージョン付きフォルダ。

1

検索を開始...ロック...リストされたすべてのファイルを選択して削除..修正


1

次のようにする必要があります:

svn status | grep "。L" | sed 's /.*(。*)$ / \ 1 /' | awk '{print length($ 1)、$ 1}' | ソート-nr | awk '{print "pushd" $ 2 "; svn cleanup; popd"}' | sh


1

ソリューションを削除しないでください。

.svnフォルダーに、lockというファイルがあり、長さが0バイトです

ソリューション内のすべての.svnフォルダーからこれらのファイルをすべて削除すると、機能します

私の場合はうまくいきました


これが最も簡単な解決策です。私のために働いた
Nathan

はい、残念ながら最新バージョンのSVNでは動作しません。最新バージョンでは、ロックファイルがなくなったため、削除する必要があります。他の完全なフォルダ構造が存在するファイルはなくなったようです。上記と同様の方法でまだ変更できるものがあるかどうかを誰かが知っている場合は、私たちと共有してください。
パラ

1

ファイルのインプレースバージョン管理解除と同じ場所への新しいチェックアウトにより、この問題は解決しました。

TortoiseSVNでインバージョンのバージョン管理を解除するには、作業コピーのルートフォルダーをファイルリストからディレクトリツリーのそれ自体に右ドラッグし、ポップアップメニューから[SVNエクスポートバージョン管理アイテムをここに]を選択します。TortoiseSVNは、宛先がソースと同じであることを認識し、作業コピーのバージョンを解除することを提案します。

バージョン管理を解除した後、同じフォルダに新しいチェックアウトを実行します(このフォルダには、所有していたすべてのファイルのバージョン管理されていないコピーが含まれています)。TortoiseSVNは、既存のフォルダーにチェックアウトすることを警告しますが、先に進むことができます。

この後、クリーンアップ、更新、その他の操作は問題なく機能しました。上記のどちらの手順でもローカルでの変更が保持されるため、情報が失われることはありません(ただし、作業コピーをバックアップしてからこれを行うとよいでしょう)。

警告:作業コピーにバージョンが混在しているか、コミットされていないプロパティの変更が含まれている場合、その情報は失われます。私にとってこれは一般的なことではありません。破損した作業コピーを選択するか、コミットされていないプロパティの変更を失うことを考えると、後者を選択する傾向があります。


1

「クリーンアップ」が機能するこの問題がありましたが、「更新」は引き続き失敗します。有効な解決策は、TortoiseSVNの削除ではなく、Windowsエクスプローラーで問題のフォルダーを削除することでした(これにより、リポジトリにコミットするものとして削除にマークが付けられ、リポジトリからフォルダーを「更新」するために「チェックアウト」を行いました。

O / S削除とSVN削除の違いの詳細については、http//tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.htmlをご覧ください。

特に:

TortoiseSVN→ファイルを削除すると、ファイルはすぐに作業コピーから削除され、次のコミット時にリポジトリで削除対象としてマークされます。

そして:

TortoiseSVNコンテキストメニューを使用する代わりにエクスプローラーを介してファイルを削除すると、コミットダイアログにそれらのファイルが表示され、コミット前にバージョン管理からもファイルを削除できます。ただし、作業コピーを更新すると、Subversionは欠落しているファイルを見つけて、リポジトリの最新バージョンに置き換えます。


1

Linuxを使用している場合は、次のことを試してください。

find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R

次にcleanup、そのディレクトリでコマンドを実行し、更新を試みます。


1

私は私の問題を修正するために次のことをしました:

  1. フォルダー名の前に「_」を置くことにより、問題のあるフォルダーの名前を変更しました。
  2. 親フォルダの「クリーンアップ」を行いました。
  3. 問題のフォルダの名前を元の名前に戻しました。
  4. コミットしました。

1

ソリューションエクスプローラーで、プロジェクトを右クリックし、最初のサブメニューでsubversionをクリックして、クリーンアップを選択します。それは私と同じように問題を解決します。それがうまくいくことを願っています。


1

クリーンアップを行うには

  1. .svnフォルダーを削除します。

  2. ルートフォルダーでsvncheckoutを実行します。

  3. クリーンアップ操作を実行してください。

これで私の問題は解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.