将所有内容提交给SVN回购协议

将所有内容提交给SVN回购协议,svn,Svn,我有一个文件夹,它是SVN存储库的签出。此文件夹中的文件经常更改,创建新文件并删除旧文件 如何将存储库中的所有更改轻松提交到remove svn服务器?通常,我首先必须发出svn delete[所有已删除的文件和目录递归],然后svn add[所有已添加的文件和目录递归],然后发出svn ci进行提交。这能自动完成吗 我曾想过创建一个bash脚本来解析svn状态,但一定有更好的解决方案 有一点很重要:svn ignore属性不能被忽略 至少对于删除任务,解析svn status是解决方案,但可以

我有一个文件夹,它是SVN存储库的签出。此文件夹中的文件经常更改,创建新文件并删除旧文件

如何将存储库中的所有更改轻松提交到remove svn服务器?通常,我首先必须发出
svn delete[所有已删除的文件和目录递归]
,然后
svn add[所有已添加的文件和目录递归]
,然后发出
svn ci
进行提交。这能自动完成吗

我曾想过创建一个bash脚本来解析svn状态,但一定有更好的解决方案


有一点很重要:svn ignore属性不能被忽略

至少对于删除任务,解析
svn status
是解决方案,但可以非常快速地完成:

svn delete $( svn status | sed -e '/^!/!d' -e 's/^!//' )
也可以采用相同的方法进行添加:

svn add $( svn status | sed -e '/^?/!d' -e 's/^?//' )
-或者——更简单的是:

svn add . --force

BTW:两个声明:代码> Svn Addio/Cuth>命令考虑您的<代码> Sn:忽略< /代码>属性,不要添加被忽略的文件。

< P>谢谢<代码> DerVO <代码>,我写了以下脚本,首先删除所有文件,然后添加所有新的文件。出于保存目的,delete命令要求每个文件(因为
svn delete
物理删除该文件)


我不知道是否有更好的方法(我想不出一个),但这听起来不像是一个特别长或难写的脚本。我们在文件方面也有类似的情况。我可以做删除所有内容/添加所有内容的业务,但这会把我们的svn日志弄得一团糟。我们所做的是压缩Robohelp文件,然后提交压缩文件。这使得我们的存储库变成了一个单一的文件,这使得我们的历史更容易忍受。完全添加和删除整个目录会导致无法执行差异等操作。因此,我不认为我们丢失了任何东西—将所有内容压缩到一个文件中并仅提交该文件。最好首先启动svn,并在出现错误状态(例如冲突)时停止脚本。
#!/bin/bash

HERE=$(cd $(dirname ${BASH_SOURCE[0]}) > /dev/null && pwd)
PROG="${0##*/}"

cd $HERE
svn status | grep ^\! | sed 's/^\!\s*//' | tr '\n' '\0' | xargs -0 -n 1 -pr svn remove
svn status | grep ^\? | sed 's/^\?\s*//' | tr '\n' '\0' | xargs -0 -n 1 -pr svn add
svn commit -m "Work of `date`"
svn up