7

上記の質問の答えがウェブのどこにも見つからなかったので、私は自分で解決策を見つけました。これは手動のプロセスですが、他の標準的な解決策は見つかりませんでした。だからここにあります:

ファイルtest.txtをディレクトリworkから削除するとします。これで test.txt を強制的に削除すると

rm -rf test.txt

コマンドを実行すると、作業ディレクトリ (またはその親ディレクトリのいずれか) の次の svn で、ファイルが復元されます。したがって、トリックは.svn/entriesファイルからも削除することです。したがって、作業コピーからのみtest.txtを削除するコマンドの完全なシーケンスは次のとおりです。

cd work
rm -rf test.txt
svn st     #it shows ! sign beside test.txt which means that 
       #in the next **svn up** it will be restored
chmod u+w .svn/entries
vi .svn/entries
#delete the lines associated with test.txt
#you need to delete the following 3 lines from .svn/entries
#test.txt
#file
#^L
svn st #it doesn't report test.txt anymore
4

2 に答える 2

8

lallafaは、 スパース ディレクトリと呼ばれるものに基づいた適切な方法を報告しています。

svn update --set-depth exclude <folder-to-delete>
  • 良い
  • 簡単
  • ファイルで動作します

次の場合は良くありません:

  • あなたが持っている何GBものデータをチェックアウトするのを避けるのには役立たないと思います(ただし、これを試すことはできます.)
  • スイッチされたディレクトリでは動作しません (テストされていない、少しの作業で動作する場合と動作しない場合があります)
  • 大きなディレクトリでは、あまり良い考えではありません。od_m3によると、190 GBの作業コピーでは、svn 1.6この方法では1 時間かかりましたが、 50 時間svn 1.7以上かかりました。これは2011年のことです。

ソースから追​​加:

後でそのディレクトリを再び使用したい場合は、次のことができます

svn update --set-depth=infinity <folder-to-delete>

この方法ですでに「除外」されているディレクトリを表示する方法を知っていればいいのにと思いstます。:D


ディレクトリで動作する「Mike5」(またはjed/jeds)と呼ばれる誰かによる同じソースからの別の方法:

更新を避けたいすべてのディレクトリに対して、

svn switch --ignore-ancestry http://dummy/exists/but/empty_folder some_folder
  • 無視するフォルダーに置き換えsome_folderます。
  • また、空のディレクトリであるリポジトリ内の既存のパスに置き換えhttp://dummy/exists/but/empty_folderます。更新も削除もされません-おそらくこの目的のために作成および専用されています。

これにより、次のことが達成されます。

  • 切り替えられたディレクトリが作業コピーで更新されなくなりました
  • 実際のリポジトリへの変更はありません

あなたは達成できません:

  • ファイル上のすべて
  • ディレクトリは消えません/削除されません(ファイルリストから)
  • これらのディレクトリの最初のチェックアウトをなくすには、'immediates' のチェックアウトを で行わない限り--depth、最初にこれを行い、次にチェックアウトを続行します (テストされていません)。
  • すでに持っている(テストされていない)GBのデータをダウンロードすることを取り除くことはできないと思います。

専用の空のディレクトリで使用することもお勧めsvn propset svn:ignore "*" empty_folderです。そのため、誰もそこに何もコミットできません。

于 2013-08-30T20:49:58.340 に答える
-4

次のように簡単にする必要があります。

svn delete test.txt
svn ci -m 'Delete test.txt.'
于 2013-07-11T02:08:52.573 に答える