[英]How to apply changes without access to svn server
我們正在使用svn來開發大型Web應用程序,並定期對產品進行更新。 生產服務器無權訪問svn(出於安全原因)。
自上次生產版本發布新版本以來,推動更改的最佳方法是什么? 我們希望避免每次都重新創建整個站點,因為它非常大。
好吧,讓我試一下。 您可以解析SVN update命令輸出並生成僅復制已更改文件的復制指令?
http://svnbook.red-bean.com/en/1.1/ch03s05.html
讓我們進一步檢查svn update的輸出。 當服務器將更改發送到您的工作副本時,每個項目旁邊都會顯示一個字母代碼,讓您知道Subversion為使工作副本保持最新狀態而執行的操作:
U foo
文件foo已更新(從服務器接收到更改)。
A foo
文件或目錄foo已添加到您的工作副本中。
D foo
文件或目錄foo已從您的工作副本中刪除。
R foo
文件或目錄foo被替換為您的工作副本; 也就是說,刪除了foo,並添加了具有相同名稱的新項目。 盡管它們可能具有相同的名稱,但是存儲庫認為它們是具有不同歷史的不同對象。
G foo
文件foo從存儲庫收到了新的更改,但是您對文件的本地副本進行了修改。 更改沒有相交,或者更改與本地修改完全相同,因此Subversion毫無問題地成功地將存儲庫的更改合並到了文件中。
C foo
收到文件foo來自服務器的沖突更改。 來自服務器的更改直接與您對文件的更改重疊。 不過,不必驚慌。 這種重疊需要由人類(您)解決; 我們將在本章稍后討論這種情況。
或者,如果您希望使用半手動解決方案,則可以使用WinMerge或Araxis Merge之類的差異工具來同步兩個目錄。
編輯:
我認為“ svn更新”不會完全正常,但是我決定的是:
我編寫了一個腳本來捕獲“開關”的輸出。 它將U和A操作轉換為“添加”到zip存檔。 它轉換D操作以刪除要在生產服務器上執行的命令。 在生產服務器上,我們只需要解壓縮歸檔文件並運行delete命令。
對玻璃牆一側的目錄進行檢出,使其可從生產服務器訪問。 使用某種diff / sync實用程序來同步兩者,減去_svn文件夾或會污染生產環境的任何其他文件。
或使用帶有“自mm / dd / yyyy以來發生更改”的文件的zip文件(或其他歸檔文件),並將其應用於生產目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.