有没有办法只提交特定文件列表(例如,只是SVN想要提交的文件列表之一)。
我正在终端下的MAC OS X上工作,没有任何UI。
答案 0 :(得分:317)
不确定。只需列出文件:
$ 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 :(得分:60)
使用更改列表。指定文件的优点是,您可以在提交之前可视化并确认您想要的所有内容。
$ 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"
答案 2 :(得分:38)
您基本上将要提交的文件放在命令行上
svn ci file1 file2 dir1/file3
答案 3 :(得分:22)
由于我的颠覆状态,我必须要有创意。 svn st
显示M
,A
和~
状态。我只想M
和A
所以......
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
此命令说明找到svn st
输出的所有行,以M
或A
开头,使用空格分隔符剪切,然后将结尾8列为结尾。将其转储到targets.txt并覆盖。
然后修改targets.txt以进一步修剪文件列表。然后在下面运行提交:
svn ci -m "My commit message" --targets targets.txt
可能不是最常见的用例,但希望它可以帮助某人。
答案 4 :(得分:10)
除了明确列出unwind和Wienczny所示的文件外,您还可以设置更改列表并签入这些文件。这些允许您管理对同一工作副本的分离更改集。
您可以在online version of the excellent SVN book中了解相关信息。
答案 5 :(得分: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'`
答案 6 :(得分:1)
我创建一个名为&#34的(子)文件夹;隐藏",移动我不想想要提交到那里的文件。 然后做我的提交,忽略对丢失文件的投诉。 然后将隐藏文件从隐藏文件移回./
我知道这种策略没有任何缺点。