有什么方法可以只提交特定文件列表(即只是SVN要提交的文件列表之一)。
我正在Terminal下的MAC OS X上工作,没有任何UI。
有什么方法可以只提交特定文件列表(即只是SVN要提交的文件列表之一)。
我正在Terminal下的MAC OS X上工作,没有任何UI。
Answers:
当然。只需列出文件:
$ 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
svn add
用于将文件添加到存储库。
使用变更列表。与指定文件相比,优点是可以在提交之前可视化并确认所需的所有内容。
$ 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"
svn changelist fix-issue-237 --recursive path/to/directory
您基本上将要提交的文件放在命令行中
svn ci file1 file2 dir1/file3
由于我的颠覆状态,我不得不发挥创造力。 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
可能不是最常见的用例,但希望它能对某人有所帮助。
grep -v '^~'
将所需内容列入黑名单。
试试这个脚本..
#!/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'`