2009-10-21 11 views
39

スクリプトを使用して夜通しSVNに自動的にコミットされる作業コピーがあります。すべてのバージョン管理されていないファイルをSVNに追加

私はそうするためにSVNコマンドラインを使用します。

Googleとの不本意な戦いの後、コミットする前に作業コピーのすべてのバージョン管理されていないファイルをリポジトリに自動的に追加する方法を試すことができませんでした。

誰も私がこれをやり遂げる方法を知っていますか?これはまた、任意のsvn:ignore D」のファイルを追加しますので、事前に

優しさと感謝、

ダン

答えて

68
svn --force --depth infinity add . 

は、しかし、注意してください。 - SVNを通じて強制よりもはるかにエレガント

for file in `svn st | grep '^\?' | awk '{ print $2; }'`; do 
    svn add $file 
done 
+2

で結果を確認し、必要ではありません--depth' 'ようだが、それはどちらかを傷つけることはできません。 –

+0

- 力は私が行方不明だったものだった... muchos gracias! –

+4

これは現在無視されているファイルも追加しますので注意してください! –

0

あなたは、シェルスクリプトのために、このよう-something前svn commitに、各バージョン管理外のファイルのスクリプトでsvn addを呼び出す必要があります追加:

$ svn add `svn status|grep '\?'|awk '{print $2}'` 
+2

Eww。作業ディレクトリのルートで '--force'を使うと、その下にバージョン管理されていないファイルが自動的に追加されます。 –

+0

あなたの答えは技術的には正しいものですが、代替案を考えると非常に重視されます:) –

+1

ファイル名にスペースがあると失敗します。 –

14

するサイズのために、この方法を試してください。

+8

またはこれを試してください。パス内の空白を受け入れます: 'svn st | grep '^ \?' | sedの/^\? * // '| xargs -I%svn add% ' – nickiaconis

+3

私はcodefox421の提案を使用し、〜/ .bashrcに別名を追加しました:' alias svn-add-unversioned = "svn st | grep '^ \?' | sed 's/^ \?* //' | xargs -I%svn add% "'これで 'svn-a'と打ってタブを押すだけで! –

25

受け入れソリューション

のsvn --force追加します。

また、すべてが無視されます。バージョン管理されていないファイル。ほとんどの人は、バージョン管理されていないが無視されていないファイルをすべて追加することをお勧めします。

はすべて バージョン管理外のが、無視されないファイルを追加するには、codefox421答えは右です:

STのsvn

| grep '^ \?' | sedの/^\? * // '| xargs -I%svn add%

svn stは無視されたファイルを表示しません。私は指定する必要が私の場合は

0

svn --force add dir/*/*/* 

*は私が追加したいツリーのレベルです。

はさらにテストの後

svn status --no-ignore 
関連する問題