web-dev-qa-db-ja.com

SVN特定のファイルをコミットする

特定のファイルのリストのみをコミットする方法はありますか(e.q. SVNがコミットしたいファイルのリストの1つのみ)。

私は、ターミナルなしでUIなしでMAC OS Xに取り組んでいます。

206
0100110010101

はい。ファイルをリストするだけです:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

特定のファイルセットを無視するように指示する方法を知りません。もちろん、コミットしたいファイルがシェルによって簡単にリストされている場合、それを使用できます:

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

Svnコマンドでファイルのリストを読み取って、ファイルからコミットすることもできます。

$ svn ci -m "Now works" --targets fix4711.txt
318
unwind

チェンジリストを使用します。ファイルを指定することの利点は、コミットする前に必要なものがすべて実際に含まれていることを視覚化して確認できることです。

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

これで、svnは物事を分離します。これは、複数の変更をジャグリングするときに役立ちます

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

最後に、変更したい内容をコミットするように伝えます。

$ svn commit --changelist fix-issue-237 -m "Issue 237"
61
jcwenger

基本的には、コミットするファイルをコマンドラインに配置します。

svn ci file1 file2 dir1/file3
38
Wienczny

Subversionの状態が原因で、クリエイティブにならなければなりませんでした。 svn stMAおよび~のステータスを示しました。 MAだけが欲しかったので...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

このコマンドは、MまたはAで始まるsvn stによって出力されるすべての行を検索し、スペース区切り文字を使用してカットし、最後に列8を取得することを示します。それをtargets.txtにダンプして上書きします。

次に、targets.txtを変更して、ファイルリストをさらに整理します。次に、以下を実行してコミットします。

svn ci -m "My commit message" --targets targets.txt

おそらく最も一般的なユースケースではありませんが、うまくいけば誰かの助けになります。

22
Eric

nwind および Wienczny で示されているようにファイルを明示的にリストする以外に、変更リストをセットアップしてこれらをチェックインできます。これらを使用すると、同じ作業コピーへの分離した一連の変更を管理できます。

優秀なSVNブックのオンライン版 でそれらについて読むことができます。

10
sbi

このスクリプトを試してください。

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
7
Abhijit Dhariya

「非表示」という名前の(サブ)フォルダーを作成し、ファイルを移動しますしないそこにコミットします。次に、欠落しているファイルに関する苦情を無視してコミットします。次に、隠しファイルを非表示から./に戻します。

私はこの戦術のマイナス面を知らない。

1
George Wyche