我尝试在一次拍摄中跨不同目录提交多个文件,如下所示,
svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc
因为,我想从提交列表中排除一些文件,所以我将每个文件名放在命令行中,如上所述。我把它放在记事本中,它来了25个文件。当我在命令行上复制并粘贴它时,最后几个文件丢失,我想这可能是命令行缓冲区限制(?)。有没有可以增加缓冲区长度的选项?
是否有任何选项可以将所有文件放在文本文件中并将其作为svn commit的参数提供?
答案 0 :(得分:154)
您可以使用svn changelist来跟踪要一起提交的一组文件。
链接页面涉及许多细节,但这是一个执行摘要示例:
$ svn changelist my-changelist mydir/dir1/file1.c mydir/dir2/myfile1.h
$ svn changelist my-changelist mydir/dir3/myfile3.c etc.
... (add all the files you want to commit together at your own rate)
$ svn commit -m"log msg" --changelist my-changelist
答案 1 :(得分:29)
您可以使用--targets ARG
选项,其中ARG是包含提交目标的文本文件的名称。
svn ci --targets myfiles.txt -m "another commit"
答案 2 :(得分:27)
我提交了一些像这样的文件没有问题:
svn commit fileDir1/ fileDir2/ -m "updated!"
答案 3 :(得分:3)
使用变更集。 您可以根据需要为变更集添加任意数量的文件,一次添加或多个命令;然后一次性完成它们。
答案 4 :(得分:0)
与answer by Dmitry Yudakov相同,但没有中间文件,使用process substitution:
svn commit --targets <(echo "MyFile1.txt\nMyFile2.txt\n")