簡體   English   中英

如何在不訪問SVN服務器的情況下應用更改

[英]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來自服務器的沖突更改。 來自服務器的更改直接與您對文件的更改重疊。 不過,不必驚慌。 這種重疊需要由人類(您)解決; 我們將在本章稍后討論這種情況。

或者,如果您希望使用半手動解決方案,則可以使用WinMergeAraxis Merge之類的差異工具來同步兩個目錄。

編輯:

我認為“ svn更新”不會完全正常,但是我決定的是:

  • svn當前(舊)產品修訂的
  • svn 切換到准備生產的版本(新)

我編寫了一個腳本來捕獲“開關”的輸出。 它將U和A操作轉換為“添加”到zip存檔。 它轉換D操作以刪除要在生產服務器上執行的命令。 在生產服務器上,我們只需要解壓縮歸檔文件並運行delete命令。

對玻璃牆一側的目錄進行檢出,使其可從生產服務器訪問。 使用某種diff / sync實用程序來同步兩者,減去_svn文件夾或會污染生產環境的任何其他文件。

或使用帶有“自mm / dd / yyyy以來發生更改”的文件的zip文件(或其他歸檔文件),並將其應用於生產目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM