特定のファイルのリストのみをコミットする方法はありますか(e.q. SVNがコミットしたいファイルのリストの1つのみ)。
私は、ターミナルなしでUIなしでMAC OS Xに取り組んでいます。
はい。ファイルをリストするだけです:
$ 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
チェンジリストを使用します。ファイルを指定することの利点は、コミットする前に必要なものがすべて実際に含まれていることを視覚化して確認できることです。
$ 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"
基本的には、コミットするファイルをコマンドラインに配置します。
svn ci file1 file2 dir1/file3
Subversionの状態が原因で、クリエイティブにならなければなりませんでした。 svn st
はM
、A
および~
のステータスを示しました。 M
とA
だけが欲しかったので...
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
おそらく最も一般的なユースケースではありませんが、うまくいけば誰かの助けになります。
nwind および Wienczny で示されているようにファイルを明示的にリストする以外に、変更リストをセットアップしてこれらをチェックインできます。これらを使用すると、同じ作業コピーへの分離した一連の変更を管理できます。
優秀なSVNブックのオンライン版 でそれらについて読むことができます。
このスクリプトを試してください。
#!/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'`
「非表示」という名前の(サブ)フォルダーを作成し、ファイルを移動しますしないそこにコミットします。次に、欠落しているファイルに関する苦情を無視してコミットします。次に、隠しファイルを非表示から./に戻します。
私はこの戦術のマイナス面を知らない。