2012-05-25 21 views
3

我有我當前工作副本中已在本地修改的文件列表。大約有50個文件已被更改。將包含目錄的SVN修改後的文件複製到另一個目錄

我正在使用以下命令將已在subversion中修改的文件複製到名爲/ backup的文件夾中。有沒有辦法做到這一點,但維護他們在哪裏的目錄?所以它會做類似於導出文件的SVN差異的東西。例如,如果我更改了一個名爲/usr/lib/SPL/RFC.php的文件,那麼它會將usr/lib/SPL目錄複製到備份中。

cp `svn st | ack '^M' | cut -b 8-` backup 

回答

6

看起來很奇怪,但用tar複製文件真的很容易。例如。

tar -cf - $(svn st | ack '^M' | cut -b 8-) | 
tar -C /backup -xf - 
+0

這是_exactly_我​​正在尋找,非常感謝。我猜想對於我添加的文件,我只需要通過將傳遞給ack的參數更改爲''^ A'' – crmpicco

+1

來重新運行檢查修改的_and_添加的文件我現在正在執行此操作:'tar -cf - $( svn st | ack'^ M |^A'| cut -b 8-)| tar -C-backup -xf -' – crmpicco

+2

要在cygwin的Windows上執行此操作,請將反斜槓交換爲正斜槓:'tar -cf - $(svn st | grep「^ [MA]」| cut -b 8- | sed -e「s/\\\/\\ // g」)| tar -C ./backup -xf -' –

1

爲什麼不創建修改的補丁?這樣,你有一個文件包含所有的變化,你可以在名稱中加上時間戳 - 例如2012-05-28-17-30-00-UnitTestChanges.patch,每天一個。

然後,一旦準備就緒,您可以將更改彙總到全新結帳,然後進行提交。

FYI:Subversion 1.8應該有checkpointing/shelving(這是你似乎什麼想做的事情),但是這是一個很長的路要走,而且可能只有在顛覆1.9添加。

相關問題