SVNで「作業コピーの管理領域が含まれていない」を修正する方法


184

追加したディレクトリをオフラインで自分のリポジトリから手動で削除しました。ディレクトリを復元できません。

更新またはコミットを実行しようとすると、次のエラーで失敗します。

"blabla/.svn" containing working copy admin area is missing.

理由はわかりますが、とにかくこれを修正する方法はありますか。

リポジトリ全体をチェックアウトして自分の変更を手動で追加したくないので、何時間もかかります。

回答:


148

これによると:http : //www.devcha.com/2008/03/svn-directory-svn-taining-working.html

「blabla」フォルダーを別の場所にチェックアウトし、その.svnフォルダーを元の「blabla」にコピーして戻します。


62
私はSVNをたくさん持っています。あちこちに.svnサブディレクトリを散らかすことは、バージョン管理履歴の中で最悪の考えだったに違いありません。
Johannes Fahrenkrug 2013年

9
皆さん、以下のRobの提案を確認してください。それは現在の解決策よりもはるかに簡単です。
Mohammad Arif 2013年

Mohammed、頭を上げてくれてありがとう。それでうまくいきました。SVNにログディレクトリを無視させようとしていて、.svnを削除するとこの問題が発生しました。ロブのソリューションはそれを解決しました。
Asmor

ヨハネス、私もSVNの支持者ではありませんが、.svnディレクトリの利点は、リポジトリのサブディレクトリをチェックアウトしてバージョン管理を維持できることです。
ジョセフペルシー

@ MohammadArif、2つの「ロブ」がいます
チャールズクレイトン

123

fwiw、私は同様の状況で、svn --force delete __dir__を使用しました。これで問題は解決しました。その後、通常どおり作業コピーを使用して作業を続けました。


2
これも私にとってはうまくいきました。ディレクトリがリポジトリに存在したことがないため、更新とクリーンアップは失敗しましたが、作業コピーはリビジョン管理されていることが確認されました。ディレクトリを追加したのか、コミットする前に削除したのですか?
Magnus

1
これはとても良いです。私はディレクトリを追加し、.svnを削除しましたが、コミットしていません。これは完全にトリックをした
エリック

8
ありがとうございました; この答えは私に多くの時間を節約しました。svn cleanupそれからsvn --force delete <directory-that-doesn't-exist-but-should>私のために働いた。
mpontillo

2回目の試行に取り組み、最初は--forceなしで試行しましたが、親の.svnにロックファイルが残っているため、手動で削除する必要がありました。--forceを使用して2回目に問題を修正しました。
ジョーンHorstmann

3
うーん、そのコマンドは同じ "作業コピー"エラーを返すだけです。
オスカー

72

これを修正するために行ったのは、問題のフォルダーのローカルコピーを削除し、svn updateその後すぐに親を削除することでした。

直った。


3
私は信じられない...私はすべてを試みた...そしてそれはそれだけで簡単だった!!! 完璧に動作しました。ありがとうございました!!!!!
lucaferrario 2012

これが最も簡単な答えです。
joaerl 2015

35

親ディレクトリの新しいコピーをチェックアウトできますか?

編集:もう少し具体的に言うと、1つ上のレベルに移動して、含まれているディレクトリを削除することをお勧めします。その後、

svn update --set-depth infinity

ディレクトリを置き換えます。


私はそれを試しましたが、いくつかの奇妙な理由で、空のディレクトリになってしまいました。
わかり

親からの明示的な<code> svn update blabla </ code>も機能するはずです。
jmanning2k 2009

@ jmanning2k、それも私が考えたものですが、OPは試してみましたが機能しませんでした。
Rob Wells

明確にするために、私が提案し--set-depth infinity、このため:stackoverflow.com/questions/866835/...
ヴィム・クーネン

1
これにはもっと多くの賛成投票が必要です...迅速かつ比較的(SVN標準の場合)クリーンなソリューション。
Dino、

6

ディレクトリをsvnに追加した後、その中の.svnフォルダーを誤って削除しました。

使った

svn delete --keep-local folderName

私の問題を修正します。


これは、IDEがディレクトリを追加したときに機能し、コミットする前に同じ名前のディレクトリを適切な場所に移動しました。
2013年

これを試しましたが、まだコミットできませんでした。svn checkout --force [url].svnフォルダーを再作成して使用しました
Lex

4

私は「svn revert / blabla」を実行しただけで機能しました。フォルダが戻ってきて、svn deleteで削除できます


ありがとう。私にはこの問題があり、あなたの提案を試してみましたが、うまくいきました。
Boric 2013年

3

リポジトリーにディレクトリーを追加しようとしたときに、「作業コピー管理領域を含むディレクトリー 'blah / .svn'がありません」というエラーが発生しましたが、そのための十分なファイルシステム特権がありませんでした。ディレクトリはまだリポジトリにありませんでしたが、追加が失敗した後、バージョン管理下にあると主張していました。

親ディレクトリのコピーを別の場所にチェックアウトし、作業コピーの親ディレクトリの.svnフォルダーを置き換えることで、新しいディレクトリを正常に追加およびコミットすることができました(もちろんファイルのアクセス許可を修正した後)。


2

私たちはmavenとsvnを使用しています。このエラーの原因は、SVNへのターゲットディレクトリの誤ったチェックインでした。このヒントが誰かを助けるなら、それを取り除くことはすべてを修正しました。


正確に何を/どこから削除しますか?
DerMike、2011

mavenはビルド時に「ターゲット」ディレクトリを作成します。通常、誰もこれをチェックインすることを想定していません。誤ったチェックインにより、次回チェックアウト時に権限の問題が発生し、このエラーが発生しました。SVNから「ターゲット」ディレクトリを削除すると、問題が解決しました。
Madu

2

私はsvn rm --force /path/to/dir役に立たないようにしようとしましたが、実行svn upされてしまい、それは私のためにそれを修正しました。


1

最近、SVNグローバルの設定によってファイルが除外されたときに、このエラーが発生しました。リポジトリから直接ファイルを削除したため、このエラーは特に厄介でした。つまり、上記の解決策が拒否されても機能しません。この場合、SVNから削除したディレクトリから手動で.svnディレクトリを削除すると、更新を実行してコミットすることができました。


1

「C:\ superfolder」を切り替えようとしたときに同じ問題が発生しました

エラーメッセージ:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

「クリーンアップ」を実行しようとした後、次のエラーが発生しました。

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

解決:

  1. フォルダ「サブフォルダ」を削除します
  2. 「superfolder」フォルダをクリーンアップします
  3. フォルダ「スーパーフォルダ」をもう一度切り替えてみてください

これは私のために働いた。それでも問題が解決しない場合はお知らせください。


1

最近このエラーが発生しました。これは、ルートがディレクトリにいくつかのファイルを所有していて、このエラーが発生したことが原因です。

アクセス許可を変更した後、すべてが期待どおりに機能しました。


1

投稿からはあまり理解できませんでした。私の解決策は

  1. 問題のあるフォルダを切り取り、どこかにコピーします。
  2. Subversionから別の作業ディレクトリ(新しいディレクトリ)にソリューションを取得します。
  3. 保存したフォルダーを新しい作業用コピーに追加し、既存のプロジェクトとして追加します(私の場合のようにプロジェクトの場合)。
  4. コミット;

1

私はこの問題を抱えていました。blablaを一時的に別の場所に移動し、svnにそれを元に戻し、その後元に戻すように指示するだけです。新規追加として扱います。シンプル!


1

私を助けた最も単純な:

rm -rf _dir_in_question_
svn up

問題のあるディレクトリに変更がある場合、これは適切な解決策ではありません。


1

サードパーティのAPIライブラリを新しいバージョンに置き換えるときにこの問題に遭遇しましたが、SVNバージョンをローカルバージョンに置き換えたかったため、ここでの解決策はどれも実際には機能しませんでした。私の解決策は次のとおりです:

1)問題のフォルダをホームディレクトリに移動し、SVNから削除してコミットします。

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2)フォルダを元に戻し、SVNに追加して再度コミットします。

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

2回コミットする必要があることで少しイライラしますが、問題なく動作したようです。


私は通常、レポの作業用コピーとは別にコードで作業するのが好きです(IDE、コンパイラー、エラーパーサーなどは.svnが好きではありません。つまり、私にとっての基本的なSVNコミットプロセスは次のとおりです。1。リポジトリの作業コピーをチェックアウトします。2。プロジェクトのルートディレクトリを削除します。更新があります。3。更新されたプロジェクトディレクトリを作業コピーのプロジェクトの親ディレクトリにコピーして貼り付けます。4。svn add --force <projname> 5.コミットします。これは通常は機能しますが、OPのエラーがスローされることがあります。ジェイミーブラウンの修正は私の場合うまくいった
CCJ 2013年

0

誰かがさらに別の解決策を望んでいる場合に備えて:

  1. 新しいフォルダを「foldername2」としてチェックインします
  2. Tortise SVNリポジトリブラウザーに移動します
  3. 「foldername2」の名前を「foldername」に変更
  4. Windowsエクスプローラーで更新を行う

それが誰かを助けることを願っています。

-Ev


Windowsのみのソリューション。
ラプター

0

私にとって、私が両方の場合に同じ問題が発生しました:

  • 削除(--force).mapファイル
  • * .mapをsvn:ignoreviaに追加svn propedit svn:ignore .

私の解決策は:

  1. プロパティへの変更を元に戻す
  2. ファイルへの変更をコミットする
  3. リポジトリの新しいコピーをチェックアウトします(alas!)
  4. プロパティを変更してコミットする

0

svnにディレクトリを追加しようとしたときにこの問題が発生しました。私はそれをレポブラウザに入れて解決しました。左側のウィンドウで右クリックし、フォルダーの追加を選択して、リポジトリブラウザーでディレクトリを直接追加します。

次に、ディレクトリをローカルに削除し(もちろんバックアップ後)、クリーンアップとsvn更新を行い、すべてが再び機能していました。


これが私の「svn sucks」ファイルに追加されることを追加するかもしれません。
スペック

0

まず、プロジェクトをフォルダー内のシステムにチェックアウトします。次に、.svnフォルダーを競合プロジェクトから削除し、.svnフォルダーを新しいチェックアウトフォルダーからコピーして、作業コピーフォルダーに貼り付けます。その後、問題は解決されます。


0

私が経験した一般的なタスクは、ステージングで1つのレポディレクトリを取得し、それを別のレポにコピーすることでした。私のために働いた方法は次のとおりでした:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.