2011-12-15 3 views
8

私は多くの人と一緒に開発しています。svnコマンドラインコミットでいくつかのファイルを除外します(svn:ignoreではありません)

リモートリポジトリをチェックアウトして、3つのファイルを取得します。編集後、実行します。

svn status 

をこれは示しています。file_1、file_2ではなく、file_3:

M file_1 
M file_2 
M file_3 

を、私は2つだけファイルをコミットします。

どうすればよいですか?私はいけない

がコミットする前に

svn revert file_3 

を使用したいです」。

説明:共有プロジェクトの場合はfile_1、file_2、ローカルマシンの場合はfile_3を編集します。

$ svn commit file_1 file_2 

答えて

7

あなたのファイルのリストは以下を使用します:

svn stat | grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "$_ "' 

それとも、スペースを使用してファイル名を持っている場合:

svn stat | grep -v ignore.file | perl -ne 'chop; s/^.\s+//; print "\"$_\" "' 
+0

ありがとうございました –

+9

私は100個のファイルがある場合、私はコミットしたいだけで1つを除外したいと思います。方法はありますか? – hacklikecrack

+1

SVNにすべての変更されたファイルをリストさせ、grep -vに単一のものをリストさせるようなシェルを使うだけです。 – zoul

10

を参照してくださいについてはどのように

+0

svn statは、コミットする必要のあるファイルを表示し、そのファイルを選択するだけです。 –

+0

本当にこの質問に役立つ答えを提供してくれてありがとう。 – pamphlet

0

をここにチェンジしていないファイルのみをコミットし、WindowsのPowerShellのバージョンがあります。 ignore-on-commit(Tortoise SVNがとにかく理解できる)というチェンジリストを作成し、コミットしたくないファイルを置いてください。

# get list of changed files into targets 
[XML]$svnStatus = svn st -q --xml C:\SourceCode\Monad 
# select the nodes that aren't in a changelist 
$fileList = $svnStatus.SelectNodes('/status/target/entry[wc-status/@item != "unversioned"]') | Foreach-Object {$_.path}; 
# create a temp file of targets 
$fileListPath = [IO.Path]::GetTempFileName(); 
$fileList | out-file $fileListPath -Encoding ASCII 
# do the commit 
svn commit --targets $fileListPath -m "Publish $version" --keep-changelists 
# remove the temp file 
Remove-Item $filelistPath 
3

bashのための1行目:

svn ci $(svn stat | grep -v exclude.file) 
+0

私はこれをsvn ci $(svn stat | grep -v ^?| grep -v exclude)に変更します。ファイル)を使用して、ソースからビルドされたバイナリのように、リポジトリにないファイルを除外します。さもなければ、svnはそれらに文句をつけて、何もコミットしません。svnに似たエラーメッセージを出します:E200009: 'a.file'はバージョン管理下にありません – dmityugov

0

を私は次を含むスクリプトを作る巻き上げる:

svn ci $(svn diff --summarize | \ 
    grep -v exclude.file1 | \ 
    grep -v exclude.file2 | \ 
    ... 
    grep -v exclude.fileN \ 
) 

私は、誰かがこれをすることによってそれがさらに柔軟にすることができると確信していスクリプトは、コミットから除外されるファイルのリストを含むファイルを読み込みます。

0

このコマンドを使用できます。

svn ci `svn st | grep -e "^[A|M]" | grep -v "test.js" | grep -ve "conf\.js$" | awk '{print $2}' | tr "\\n" " "` 
関連する問題