在被TortoiseSVN宠坏之后,我现在正在使用Linux上的命令行与SVN存储库进行交互.
在TortoiseSVN中,我只提交更改,它会显示添加内容,删除内容和修改内容的列表.我会检查所有方框并单击OK.
使用命令行,svn add当我添加文件svn rm时,我必须这样做,当我删除文件时,当我完成所有操作时,我输入svn commit,然后提交添加,删除和修改.
是否有一个我可以使用的命令,只提交我删除的文件/文件夹,我添加的文件/文件夹和我一次修改的文件?
小智 9
在Windows下,以下批处理文件将起作用:
for /f "tokens=2*" %%i in ('svn status %1 ^| find "?"') do svn add "%%i"
for /f "tokens=2*" %%i in ('svn status %1 ^| find "!"') do svn delete "%%i"
svn commit -m "Automatic commit" %1
Run Code Online (Sandbox Code Playgroud)
只需将上面的三行保存在名为"autocommit.bat"的文件中即可.如果从工作目录运行它,则无需指定参数.如果你在另一个目录中,你可以这样称呼它autocommit.bat c:\MyProjectFolder.
小智 6
Nader Shirazie在发布的脚本中有正确的命令.这是Linux的单行版本:
svn add $(svn st | sed -n 's/^[A?] *\(.*\)/\1/p')
Run Code Online (Sandbox Code Playgroud)
我很长一段时间都想要这个功能,很高兴我在这里搜索过!
加上:
svn status | grep "^\?" | sed -e 's/? *//' | sed -e 's/ /\\ /g' | xargs svn add
Run Code Online (Sandbox Code Playgroud)
去除:
svn status | grep "^\!" | sed -e 's/! *//' | sed -e 's/ /\\ /g' | xargs svn remove
Run Code Online (Sandbox Code Playgroud)
这对我来说可以。