首页 文章

承诺一切为SVN回购

提问于
浏览
4

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

如何轻松地将存储库中的所有更改提交到删除svn服务器?通常我首先必须发出 svn delete [all deleted files and directories recursivly] ,然后 svn add [all added files and directories recursivly] 然后 svn ci 进行提交 . 这可以以某种方式自动化吗?

我想创建一个解析 svn status 的bash脚本,但是必须有更好的解决方案吗?!

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

2 回答

  • 4

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

    svn delete $( svn status | sed -e '/^!/!d' -e 's/^!//' )
    

    添加也可以以相同的方式完成:

    svn add $( svn status | sed -e '/^?/!d' -e 's/^?//' )
    
    • 或者 - 更简单:
    svn add . --force
    

    顺便说一句:两个声明的 svn add 命令都考虑了 svn:ignore 属性,并且不添加被忽略的文件 .

  • 1

    感谢 DerVO 的答案,我编写了以下脚本,首先删除所有文件,然后添加所有新文件 . 出于保存目的,delete-command要求每个文件(因为 svn delete 物理删除文件)

    #!/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
    

相关问题