在svn命令行提交中排除一些文件(不是svn:ignore)

时间:2011-12-15 08:23:24

标签: svn commit ignore revert

我和很多人一起开发。

我查看远程存储库,获取3个文件。编辑后,运行:

svn status

它显示:

M file_1
M file_2
M file_3

现在,我只想提交两个文件:file_1,file_2,但不提交file_3。

怎么做?

我不想'

svn revert file_3
提交前

说明:我编辑file_1,file_2用于共享项目,file_3用于仅在我的本地计算机上运行。

7 个答案:

答案 0 :(得分:10)

扩展zoul的答案..开发你的文件列表使用:

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

如果您的文件名包含空格,请使用:

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

答案 1 :(得分:7)

怎么样:

$ svn commit file_1 file_2

答案 2 :(得分:3)

bash一行:

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

答案 3 :(得分:1)

只需附加文件的路径以提交到svn commit命令:

svn commit file_1 file_2

请参阅http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.commit.html

答案 4 :(得分: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

答案 5 :(得分:0)

我制作了一个包含以下内容的脚本:

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

我确信有人可以通过让这个脚本读取一个包含要从提交中排除的文件列表的文件来使其更加灵活。

答案 6 :(得分:0)

也许你可以使用这个命令。

h1