SVN提交特定文件


219

有什么方法可以只提交特定文件列表(即只是SVN要提交的文件列表之一)。

我正在Terminal下的MAC OS X上工作,没有任何UI。

Answers:


331

当然。只需列出文件:

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

我不知道一种告诉它忽略一组文件的方法。当然,如果要提交的文件很容易在shell中列出,则可以使用:

$ 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 | 剪切-c 9-> targets.txt,然后编辑targets.txt文件以删除特定文件,并使用--targets参数指定文件列表。
2012年

17
我认为我的新挑战是创建一个使打印机着火的错误。
詹姆斯·韦伯斯特

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 2015年

实际上,更改列表不能与新目录一起使用。...“ Subversion当前不支持将
更改

1
@fschmengler:SVN是一种可怕的工具。我只是想充分利用它所做的糟糕工作。切换到git。:P
jcwenger

10
多年前,我改用Git,再也没有回头。被迫再次向客户使用svn,感觉就像是双腿都用球和链子奔跑
Fabian Schmengler 2015年

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年


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

我做一个名为“隐藏”(子)文件夹,移动我的文件希望致力于在那里。然后执行我的提交,而忽略有关丢失文件的投诉。然后将隐藏的文件从hide移回./

我不知道这种策略有什么坏处。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.