我们有一个存储库有几个文件(没有文件夹)。每次构建时,我们必须从另一个源(db)下载相同的文件夹,然后提交SVN更改 - 更新现有的,删除不存在并添加新文件。SVN:hg的addremove模拟
所以想法是有数据库的脚本“复制”在SVN每个版本(这就是为什么的MSBuild使用)
问题是,我不知道汞的addremove的模拟 - 它会自动同步两个文件夹。
有没有人知道如何addremove可以模拟?
我们有一个存储库有几个文件(没有文件夹)。每次构建时,我们必须从另一个源(db)下载相同的文件夹,然后提交SVN更改 - 更新现有的,删除不存在并添加新文件。SVN:hg的addremove模拟
所以想法是有数据库的脚本“复制”在SVN每个版本(这就是为什么的MSBuild使用)
问题是,我不知道汞的addremove的模拟 - 它会自动同步两个文件夹。
有没有人知道如何addremove可以模拟?
对于这样的事情,我只是使用mercurial,并签入和退出svn: https://www.mercurial-scm.org/wiki/HgSubversion ...可能不完全是你想要的。
为了达到这个目的,我一直使用svn附带的svn_load_dirs.pl
脚本。
我个人有一点bash脚本来做到这一点(在Linux上是):
svn status | grep "^\?" | gawk '{print $2}' | xargs -r svn add
svn status | grep "^\!" | gawk '{print $2}' | xargs -r svn remove
编辑:感谢cesar,这里有一个简单的版本:
svn status | gawk '/^\?.*/ {print $2}' | xargs -r svn add
svn status | gawk '/^\!.*/ {print $2}' | xargs -r svn remove
(@Eric的改进-Karl的答案)
作品为:
svn status | perl -ne 'print "$1\0" if /^\?\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn add '[email protected]'
svn status | perl -ne 'print "$1\0" if /^\!\s+([^\r\n]+)/' | xargs -0 -r -I FILE svn remove '[email protected]'
这里的一个交包括两个壳别名(一个叫做add_all,另一个叫做rm_all)。这基本上可以让你运行'add_all && rm_all'来完成'hg addremove'所做的事情,但是可以实现颠覆。 http://www.plexusweb.com/staff/travis/blog/post/267/Batch-addremove-files-to-Subversion – 2011-05-13 13:24:58
我不能相信这是不可能的与svn,但我不明白如何。如果没有更好的选择,你可能想考虑使用hgsubversion来维护一个本地的hg repo,使用'hg addremove',然后将这些改变推回到svn。 – 2011-05-13 14:08:49