我在服務器上的/ var/svn/repository中有一個SVN倉庫,並且在服務器上有一個工作副本,一個'暫存'和一個'實時'。本地開發工作副本以正常方式通過'svn commit'發送到服務器。「svn up」的對面?
我在服務器上有幾個簡單的兩行腳本,它們會轉到相應的位置並執行'svn update'以將內容刷新到最新的存儲庫版本。
uplive:
cd /usr/local/lib/Catalyst/proj/trunk svn up && echo 'go to proj.example.com to see changes'
搶戲:
cd ~/Catalyst/svn/proj svn up && echo 'go to proj.example.com:3001 to see changes'
我想提出幾個同伴腳本 '前臺' 和 'downlive',但最接近我可以在svn中找到需要修訂號的可變參數: 示例我發現包含像
$ svn merge -r HEAD:nnnn。
或
$ SVN合併-c -303 http://svn.example.com/repos/calc/trunk ---反向合併R303到 '的integer.c':
我試圖想出了一個簡單的方法做了「 D'哦!」函數,即撤銷最後的svn更新,可以通過腳本調用:例如ssh theServer downstage撤銷最後一個'svn up'並將live/staging系統返回到之前的rev。
毫無疑問,有可能從SVN獲得最新版本, 拿走一個,並要求SVN做一個反向合併,但它似乎是這樣一個明顯的事情想要做,我有點感到驚訝的是沒有更快/更簡單的方法。
我不記得曾經想要做你所描述的精確的事。首先,我的「哦,哦!「更新之後的時刻總是牽涉到希望恢復未被合併混淆的本地更改,而我的IDE的」本地歷史記錄「功能則負責處理該問題.SVN無法提供幫助,因爲它沒有任何本地修改副本其次,在更新之後,本地副本不知道上次更新之前文件的修訂版本;如果更新將某些文件上傳了三個版本,則可能需要返回三個,而不是一個,對吧?但是SVN不知道。 – 2012-03-20 11:48:46
兩個好處。我的OP沒有清楚,在這種情況下,工作副本是活的或暫存服務器副本,它將(或者肯定_should_)永遠不會有任何本地修改但始終只能是開發人員在其他地方的工作副本中進行回購的原始副本,因此不會有_local_ mods;但第二點絕對有效,意味着我需要回到功能請求者我想。 – jvector 2012-03-21 21:45:10