2009-03-31 16 views
4

PERFORCEでは、クライアントからファイルを削除するために 'noneに同期'コマンドを発行できますが、デポ(またはsvn lingoのリポジトリ)は変更しないでください。クライアントからのみファイルを削除するsvnコマンドはありますか?

P4の同期...#なし

のsvnで同様のコマンドがありますか?


編集:これまでに答えたものに

感謝。

を私はそれだけでもローカルなもので、すべてのファイルを削除しますから、ディレクトリ上のrm -rfを使用したくない:明確にするために

。また、クライアントとリポジトリにある個々のファイルを手作業で削除する必要もありません。

'p4 sync ...#none'コマンドを使用すると、デポ/リポジトリにあるクライアントからファイルを削除し、ローカルのファイルのみを残すことができます。

小さなファイルセットでは、これは大きな問題ではありませんが、多数のファイルで手作業で行うのは苦労します。

答えて

1

だからあなたは基本的にバージョン管理および未修飾されているすべてのファイルを削除したい。ここ

はまばらなチェックアウト機能を記述したリリースノートの一部です?

スクリプトをでっち上げることができることを、すべてのファイルと、それらの呼び出し「SVNステータス」、「SVN状態が」空の出力を与える、ファイルの削除を反復処理するには...


EDIT:ナイーブパイソン変更されていないファイルを削除するスクリプト。バージョン管理されていないローカルのファイルを保存します... が遅いで、 "svn stat -v"を発行して解析する方が良いでしょう。スクリプトはファイルを削除するだけで、フォルダには触れません。

import os 
from subprocess import * 

def isUnchangedInRepo(name): 
    output = Popen(["svn","stat",name], stdout=PIPE).communicate()[0] 
    return len(output) == 0 

for dirname, dirnames, filenames in os.walk('.'): 
    for filename in filenames: 
     testfile = os.path.join(dirname, filename) 
     if(testfile.find("\\.svn") == -1) and isUnchangedInRepo(testfile): 
      print testfile 
#   os.remove(testfile) 
3

オペレーティングシステムのdeleteコマンドを使用して、ファイルをローカルで簡単に削除できます。ただし、次回に作業コピーを更新したときにファイルが再作成されます。

また、バージョン1.5からは、リポジトリの一部を作業コピーに書き込むことを省略できるスパースチェックアウトを行うことができます。しかし、私が正しく覚えていれば、これは単一のファイルではなくディレクトリ上で動作します。 http://subversion.tigris.org/svn_1.5_releasenotes.html#sparse-checkouts

そして、ここでSVN帳の対応する章です::http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

+0

リンクありがとうございます。なぜ私がdeleteやrmを使いたくないのかを明確にするために質問を更新しました。 – grieve

0

TortoiseSVNを使用すると、そのマシンにローカライズされた無視パターンを作成できます。それがあなたの状況に合っているかどうかは分かりません。

概要はhttp://arcware.net/tortoisesvn-global-ignore-pattern-vs-svn-ignore/です。ローカルでのみ使用可能な唯一のリポジトリ内のファイルではなく、ものを削除したい場合は

1

、あなたはそうすることができ、簡単なシェルスクリプトで、

svn st -v | cut -c '41-' | xargs echo rm 

に沿って何か((のLinux/cygwinの上) 注:実際に何かを削除するにはechoを削除してください)。

ただし、ローカルの変更状態に関係なく、リポジトリ内のファイルはすべて削除されます。

0

利用のTortoiseSVNと

svn rm folderToDelete --keep-local 

は、「(ローカルキープ)の削除」を選択し、その後、extended menuを開き、フォルダを右クリックしながらShiftキーを押したままにします。 Subversionの1.6.0

svn update --set-depth exclude <file> 

+0

それは彼が望んでいるのとちょうど反対のことはしませんか? – Powerlord

+0

@ R. Bemrose:ドキュメントを読んでいるのと反対の感覚を持っているように見えます。 – grieve

+0

申し訳ありませんが、私はPERFORCEを一度も使用していません。それが私がここで言及したものの反対であれば: フォルダをエクスポート(またはすべての.svnフォルダを削除)し、次に 'svn update parentfolder --depth = files'を実行する – Stefan

1

これは、更新に返すべきではないと作業コピーとマークからファイルを削除します。

+0

+1 47秒で私を倒す:-) –

0

また、パッチを作成してください。これにより、すべてのローカル変更がパッチファイルに記録されます。

亀の中:右クリック - > tortoiseSVN->パッチを作成します。後でこのパッチファイルを別の作業コピーに適用することができます。

ps。なぜそれをしたいのか言及していませんでしたが、上記が実際に必要なものになる可能性があります。

関連する問題