我們有一個存儲庫有幾個文件(沒有文件夾)。每次構建時,我們必須從另一個源(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