来自命令行的subversion(svn):任何单个命令;反映所有的变化;?

来自命令行的subversion(svn):任何单个命令;反映所有的变化;?,svn,maven,maven-plugin,Svn,Maven,Maven Plugin,当您在项目中工作时,至少是我自己,无论您是否使用IDE(如eclipse或netbeans),都要更新源文件、创建目录、创建新文件、删除一些文件或重命名它们。(我不想花时间为每个文件发出svn命令,如果其中一些命令还不是最终命令,那就更糟了) 在某个时刻,你认为你已经得到了:好吧,这就是我想要保存并保存到存储库中的内容 是否有任何一个svn命令表示“按现在的状态存储工作项目”? (这可能意味着大量的添加和删除(重命名=本地副本,使用svn remove+add)并递归到目录中) 如果没有(我猜)

当您在项目中工作时,至少是我自己,无论您是否使用IDE(如eclipse或netbeans),都要更新源文件、创建目录、创建新文件、删除一些文件或重命名它们。(我不想花时间为每个文件发出svn命令,如果其中一些命令还不是最终命令,那就更糟了)

在某个时刻,你认为你已经得到了:好吧,这就是我想要保存并保存到存储库中的内容

是否有任何一个svn命令表示“按现在的状态存储工作项目”? (这可能意味着大量的添加和删除(重命名=本地副本,使用svn remove+add)并递归到目录中)

如果没有(我猜),有没有shell脚本来完成这个任务?(基于svn状态,递归地用于每个子文件夹)

更新:

有没有maven插件可以做到这一点


谢谢。

我想这就完成了任务:

if [ $# != 1 ]
then
    echo  "usage: doSVNsnapshot.sh DIR"
    exit 0
fi

ROOT=$1

for i in `find ${ROOT} -type d \! -path "*.svn*" `
do

    echo
    echo "--------------------------"
    ( cd $i ; 
    echo $i
    echo "--------------------------"


    svn status | awk '  
            /^[!]/ { system("svn rm " $2) }
            /^[?]/ { system("svn add " $2) }
        '
    )
    echo

done

我不明白<代码>svn ci在工作副本的根目录下(或在有意义的最高级别上)执行您所描述的操作。如果您的IDE有一个Subversion插件(Eclipse和Netbeans都有),那么该插件应该在幕后处理您的重命名、移动等操作,这样您就不必手动
svn mv
@alroc,希望如此,但例如:1
rm main.c
(shell命令,删除早期提交的文件)2<代码>svn状态(!main.c)3<代码>svn ci(无输出)4
svn status
(still!main.c),如果在单独的目录中执行
签出
,则仍然会得到
main.c
,然后删除
main.c
错误。如果您希望将其从Subversion中删除,那么它就是svn rm main.c(同样,您的IDE插件应该为您完成这项工作)。如果它是从shell中意外删除的,您可以使用
svn up
@alroc将其取回,但我不想为工作项目中的每个更改发出
svn命令。我只想用一个命令将所有文件存储为一个大快照。否则,您可能会扭曲
svn\u load\u dirs.pl
来做您想做的事情。但实际上,任何风险投资公司都会发现这一点——要对工作副本进行更改,必须使用客户机告知底层数据结构正在进行这些更改。使用
svn-rm
rm
真的有那么大的负担吗?只需额外敲4下键盘。