SVN Commit特定のファイル


219

特定のファイルのリストのみをコミットする方法はありますか(たとえば、SVNがコミットするファイルのリストの1つだけ)。

私は、ターミナルなしでMAC OS Xで作業していますが、UIはありません。

回答:


331

承知しました。ファイルをリストするだけです:

$ 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

1
だから、基本的には、ファイルに明示的に名前を付ける必要がありますか?この特定のファイルに触れないように言うことはできませんか?
0100110010101 2009年

16
あなたができる:svn st | cut -c 9-> targets.txt、次にtargets.txtファイルを編集して特定のファイルを削除し、--targetsパラメータを使用してファイルリストを指定します。
2012年

17
私の新しい課題は、プリンタを起動させるバグを作成することだと思います。
James Webster

3
それは哀れでばかげています。ステージング領域はありません。svn addリポジトリにファイルを追加するために使用されます。
Kandinski

68

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

$ 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"

オンポイント回答の場合は+1。チェンジリストは本当に進むべき道です!
Miro Markaravanes 2014

1
新しいディレクトリをチェンジリストに追加したい場合は、最初にsvn addを使用することを忘れないでくださいsvn changelist fix-issue-237 --recursive path/to/directory
Fabian Schmengler

実際、チェンジリストは新しいディレクトリでは使用できません... "Subversionは現在、ディレクトリでのチェンジリストの使用をサポートしていません。"
Fabian Schmengler '

1
@fschmengler:SVNは恐ろしいツールです。私はそれがしている悪い仕事を最大限に生かそうとしていました。gitに切り替えます。:P
jcwenger 2015

10
私は何年も前にGitに切り替え、振り返ることはありませんでした。クライアントに再びsvnを使用することを余儀なくされました、それは両方の足でボールとチェーンで走っているように感じます
Fabian Schmengler

38

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

svn ci file1 file2 dir1/file3

1
だから、基本的には、ファイルに明示的に名前を付ける必要がありますか?この特定のファイルに触れないように言うことはできませんか?
0100110010101 2009年

2
引数なしで実行した場合、svnは変更されたすべてのファイルをコミットします。引数としてファイルを使用して実行した場合、ディレクトリで実行した場合、このファイルはコミットされます。ディレクトリ内のすべての変更されたファイルがコミットされます
Wienczny

22

私の転覆状態のために、私は創造的にならなければなりませんでした。 svn st示しMAおよび~ステータス。私は望んでいたMAそう...

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

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

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

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

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


2
grep -v '^~'必要なものをブラックリストに登録することもできます。
Martin Konecny 2013

10

unwindWiencznyで示されているようにファイルを明示的にリストする以外に、変更リストをセットアップしてこれらをチェックインできます。これらにより、同じ作業コピーに対する一連の変更を管理できます。

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


7

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

#!/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'`

1

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

私はこの戦術の欠点を知りません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.