SAE自2011-7-10日起,,將全面支持SVN代碼部署,用戶不僅可以通過任何SVN客戶端部署代碼,,而且SAE現(xiàn)有的代碼部署方式也已經(jīng)對接應(yīng)用的SVN倉庫,,即使不使用SVN客戶端部署代碼,也保證了代碼版本,。 如:通過在線代碼編輯器(http://sdk.tools.sinaapp.com)等方式對代碼的修改,、部署等操作也會像svn commit一樣,產(chǎn)生一個新版本。通過SVN客戶端svn update可以獲取最近的更新,,也可以通過svn客戶端回滾代碼,。 SVN倉庫地址: https://svn.sinaapp.com/your_app_name (您可以通過此地址直接訪問) 如:應(yīng)用域名是 test.sinaapp.com,那么SVN倉庫地址是:https://svn.sinaapp.com/test SVN用戶名: SAE安全郵箱 SVN密碼: SAE安全密碼(如已啟用微盾動態(tài)密碼,,則此處填寫“安全密碼”+“微盾動態(tài)密碼”) 注:SVN用戶名和密碼為安全郵箱和安全密碼,,不是微博賬號和微博密碼! 為了保持與SAE兼容,,使用svn方式部署代碼到SAE有如下限制: 1,、文件名或目錄名不允許含有以下字符:",*,?,<,>,|,另外文件或文件名的開始與結(jié)束也不允 許有空格,。 2,、上傳單個文件大小不超過20M 3、單個目錄下的文 件個數(shù)不能超過2000個 4,、每個應(yīng)用代碼總大小不超過100M 5,、單個版本代碼總大小不超過50M 6、appname目錄下只允許存在10個以內(nèi)的版本,,并且版本號必須為正整數(shù),。(也就是說appname下面只允許出現(xiàn)10個以內(nèi)的正整數(shù) 目錄名,不允許有非目錄的存在) SAE代碼部署分為三步: 創(chuàng)建應(yīng)用 登陸SAE在線管理平臺,,“創(chuàng)建新應(yīng)用”(http://sae.sina.com.cn/?m=myapp&a=create)時,,如果創(chuàng)建成功,系統(tǒng)會自動為該應(yīng)用創(chuàng)建一個SVN倉庫,。假設(shè)新創(chuàng)建的應(yīng)用名為newapp,,那么倉庫地址為: https://svn.sinaapp.com/newapp/ 此時,可以通過本地SVN客戶端檢出(checkout)該應(yīng)用的本地工作目錄,。 部署代碼 SAE提供了不同的代碼部署方式,,可以分為兩類: 一是通過SVN客戶端部署,這是SAE推薦的代碼部署方法,。 另一個是通過非SVN客戶端部署,,即在線代碼在線編輯器和推薦應(yīng)用安裝。 這兩類代碼部署方法都會更新應(yīng)用的SVN倉庫版本,,但必須注意的是非SVN客戶端部署方式無法提供版本管理功能,,只能看到最新版本的代碼,也無法回滾代碼,。 因此,,強烈建議僅使用SVN客戶端方式部署代碼,如果同時使用非SVN客戶端方式部署,,為避免代碼版本沖突,,請及時在本地SVN工作目錄下執(zhí)行svn update操作,,保證本地工作目錄與線上代碼保持一致。 驗證 代碼更新后,,通過svn update或直接通過瀏覽器訪問應(yīng)用查看代碼是否已經(jīng)更新到線上,。
TortoiseSVN下載:http:///downloads.html Subversion中文站: http://www./ 在Windows下推薦使用烏龜(Tortoise)SVN客戶端。 TortoiseSVN 是 Subversion 版本控制系統(tǒng)的一個免費開源客戶端,,可以超越時間的管理文件和目錄,。文件保存在中央版本庫(即SAE中央SVN倉庫),除了能記住文件和目錄的每次修改以 外,,版本庫非常像普通的文件服務(wù)器,。你可以將文件恢復到過去的版本,并且可以通過檢查歷史知道數(shù)據(jù)做了哪些修改,,誰做的修改,。這就是為什么許多人將 Subversion 和版本控制系統(tǒng)看作一種“時間機器”。 TortoiseSVN下載:http:///downloads.html 第一步,如圖1,,創(chuàng)建一個新文件夾作為本地工作目錄(Working directory),,可以使用應(yīng)用名為文件夾名。如,,為我的應(yīng)用devcenter創(chuàng)建本地工作目錄。
第二步,,從SAE的SVN倉庫檢出(checkout)一個應(yīng)用的全部版本代碼,,如圖2,右鍵-->點擊“SVN Checkout”
在彈出頁面中填寫倉庫路徑即可,,這里是:https://svn.sinaapp.com/devcenter/,,其它默認參數(shù)即可,如圖3:
Reversion處,,“HEAD revision”是指最新版,,也可以指定Revision為任意一個版本。 點擊“OK”,,出現(xiàn)下載界面,,如圖4:
如果一切順利,devcenter應(yīng)用所有版本代碼將會全部出現(xiàn)在剛剛創(chuàng)建的devcenter文件夾下,,如圖5:
在本地使用你喜歡的編輯器,,編輯任意文件,保存后該文件圖標將會出現(xiàn)紅色感嘆號,,如圖6所示:
看,,剛剛修改過的index.php變色了。下面需要提交(commit)最近的更新。在index.php文件上擊右鍵,,出現(xiàn)菜單 ,, 選擇“SVN commit”,如圖7:
然后填寫關(guān)于本次更新的日志(log message),,這是必填項,,否則commit會失敗。如圖8:
當您看到如圖9所示,,表明剛才的修改已經(jīng)成功提交,,并且前該devcenter項目的SVN版本號加1,變成30.
在 SVN工作目錄下,,對于文件修改,,完成后只需要commit就ok了,但對于新增文件,,或者從其它目錄復制進來的文件或文件夾,,需要在commit之前需 要做一步add操作,即將文件或文件夾添加到svn工作目錄中來,,否則SVN客戶端不認它,。具體操作很簡單,如圖10:
然后再如圖7所示,,右鍵commit 即可,。 更多Tortoise SVN使用幫助,請參閱:http://www./tsvndoc/ Notepad++ 是一款Windows環(huán)境下很受歡迎的免費開源的代碼編輯器,,有很豐富的第三方插件,。 下面介紹Notepad++的svn插件的安裝及使用。 如圖12,,點擊Plugin --> Plugin Manager --> Show Plugin Manager
打開后,,在“Available”頁找到“Subversion”,然后點擊“Install”,,如圖13所示:
安裝成功后會在Plugins菜單下出現(xiàn)"Subversion"子菜單,。 打開之前checkout下來的任一文件,如devcenter/1/index.php,,編輯完成后,,點擊Plugins --> Subversion --> Commit File(或使用 快捷鍵Ctrl+Alt+A) 出現(xiàn)熟悉的一頁,如圖14所示:
對,,這就是烏龜SVN的Commit頁面,,輸入Log Message,點擊“OK”即可提交,。 UltraEdit Studio(注意不是UltraEdit,,UltraEdit不能與SVN整合)配置稍微復雜些,。 第一步,SVN倉庫賬號設(shè)置,,如圖15所示:
然后填寫倉庫信息,,如圖16所示:
完成后,創(chuàng)建Project,,如圖17所示:
填寫project名b.prj后,,出現(xiàn)如圖18所示"Project Settings",點擊“Add Folder”,,出現(xiàn)“NewFolder”,,將"Group"前的勾去掉,然后點擊“Browse”,,在“Browse for Folder”頁找到之前checkout出現(xiàn)的本地工作目錄,。
點擊“OK”后出現(xiàn)提示,如圖19所示:
表明UEStudio自動識別出了選擇的代碼目錄是一個SVN工作目錄,,并詢問是否整合,,點擊“Yes”,出現(xiàn)如圖20所示:
大功告成,,"Close"之后即可以編輯代碼,,并隨時commit修改。如圖21所示:
EditPlus依賴于Tortoise SVN(TSVN),,必須先安裝,。 使用最簡單,見圖22所示:
當編輯SVN工作目錄里的文件時,,F(xiàn)ile --> TSVN即出現(xiàn)相應(yīng)可操作的菜單,。 https://svn.sinaapp.com/appname/ 為了傳輸安全,SAE要求統(tǒng)一使用https方式部署代碼,; 登陸SAE在線管理平臺(http://sae.sina.com.cn),創(chuàng)建應(yīng)用,,成功后您即可以檢出該應(yīng)用代碼,。 例如,您剛剛創(chuàng)建了應(yīng)用newapp,,在本地執(zhí)行: svn checkout https://svn.sinaapp.com/newapp 第一次checkout時需要驗證,,用戶名/密碼為您的SAE安全郵箱和安全密碼(非微博登陸賬號密碼,如已啟用微盾動態(tài)密碼,,則此處填寫“安全密碼”+“微盾動態(tài)密碼”),。 假如,為newapp應(yīng)用創(chuàng)建版本1 目前提供兩種方式: svn checkout https://svn.sinaapp.com/newapp #此處需要認證,,用戶名/密碼為您的SAE安全郵箱和安全密碼(如已啟用微盾動態(tài)密碼,,則此處填寫“安全密碼”+“微盾動態(tài)密碼”) cd newapp mkdir 1 svn add 1 svn commit -m"add version 1 for newapp" 在SAE在線管理平臺“代碼管理”處創(chuàng)建版本即可,。但為了避免與本地倉庫沖突,務(wù)必在本地工作目錄下執(zhí)行:svn update ,,將最近的更新拉到本地來,。 更新代碼前本地必須有一個工作目錄(Working Directory),創(chuàng)建工作目錄很簡單,,只需要檢出(checkout)代碼倉庫即可,。如,對于已經(jīng)創(chuàng)建好的應(yīng)用newapp,,在本地執(zhí)行: svn checkout https://svn.sinaapp.com/newapp 輸入安全賬號和安全密碼,,即完成本地工作目錄的創(chuàng)建。 需要增加某個文件或文件夾,,如部署wordpress到版本1,。 svn checkout https://svn.sinaapp.com/newapp cd newapp/1 cp -rf /path/to/wordpress/* ./ svn add ./* svn commit -m"add wordpress" 假如需要修改newapp應(yīng)用版本1根目錄下某個文件,如index.php,,完整的操作流程如下: svn checkout https://svn.sinaapp.com/newapp #如果已經(jīng)checkout過了,,不需要重新checkout。 cd newapp/1 vim index.php #這里編輯代碼 svn commit -m "edit index.php" 在應(yīng)用版本根目錄下,,如newapp/1下,,創(chuàng)建文件config.yaml(語法參見:http://sae.sina.com.cn/?m=devcenter&catId=193),然后通過svn commit即可完成應(yīng)用配置,。 如,,現(xiàn)在需要更新應(yīng)用newapp的默認版本3的appconfig,操作如下: svn checkout https://svn.sinaapp.com/newapp #如果已經(jīng)checkout過了,,不需要重新checkout,。 cd newapp/3 vim config.yaml #這里按照config.yaml語法編輯即可。 svn commit -m "update config.yaml" 注意:config.yaml不會被部署到用戶的代碼目錄,,但會被存儲在服務(wù)端SVN倉庫中,。因此下次可以被checkout出來,但不會被用戶訪問到,。 SVN可以在線閱讀應(yīng)用代碼,,地址即SVN倉庫地址:https://svn.sinaapp.com/appname/ 將appname換成自己的應(yīng)用名即可登陸查看代碼。 在線編輯器 可在管理面板>>代碼管理>>編輯代碼 打開 為了保持與SAE兼容,,使用svn方式部署代碼到SAE有如下限制: 1,、文件名或目錄名不允許含有以下字符:",*,?,<,>,|,另外文件或文件名的開始與結(jié)束也不允許有空格,。 2,、上傳單個文件大小不超過4M 3、單個目錄下的文 件個數(shù)不能超過400個 4,、每個應(yīng)用代碼總大小不超過100M 5,、單個版本代碼總大小不超過50M 6,、appname目錄下只允許存在10個以內(nèi)的版本,并且版本號必須為正整數(shù),。(也就是說appname下面只允許出現(xiàn)10個以內(nèi)的正整數(shù) 目錄名,,不允許有非目錄的存在) 錯誤提示 The change log need some words(not null) The log message is a pathname (was -F intended?); use '--force-log' to override Error file xxx in not allowed in root directory! directory xxx/ is not allowed in root directory! Only positive integer dirs are allowed! working copy的根目錄下不允許有名為xxx的目錄(只能是正整數(shù)版本目錄) Too many versions!(less than 10 is permited) Too many files: XXX (less than 2000 is allowed). dir APPNAME/dir(size:xxxx) is too large less than xxx File XXX is too large!(less than 4M) 類似Repository UUID '305daf1b-94be-48ee-a4b9-f4bcd36320de' doesn't match expected UUID '44e2f7a2-1b69-4710-974a-b6edef0fdc12' add vers xxx faild 1,、從SVN倉庫中檢索出代碼到工作拷貝: # svn checkout https://svn.sinaapp.com/appname [workcopy] 其中workcopy是可選的,如果不寫workcopy,,SVN會默認將appname做為workcopy,。 如果只檢索某個版本: # svn checkout https://svn.sinaapp.com/appname/appversion [workcopy] 只檢索某個版本的某個目錄: # svn checkout https://svn.sinaapp.com/appname/appversion/folder [workcopy] 2、向SVN倉庫提交代碼: # svn commit -m "here is message" 3,、將本地文件添加到工作拷貝: # svn add something 注:如果something為文件,,svn會將這個文件添加到工作拷貝;如果something是目錄,,svn會將目錄及里面的文件全添加到工作 拷貝,。something也可以是通配符*,這樣會忽略已經(jīng)添加過的文件,。 4,、從工作拷貝中刪除一個文件: # svn delete something 注:如果something為文件,svn會將這個文件從工作拷貝中刪除,;如果something是目錄,,svn會將目錄及里面的文件全部從工作 拷貝中刪除。 5,、直接從SVN倉庫中刪除文件: # svn delete -m "delete something" https://svn.sinaapp.com/appname/appversion/something 注:可以從SVN倉庫中直接刪除單個文件或單個目錄甚至某個版本,。 6、將一個本地項目導入到SVN倉庫: 導入應(yīng)用的某個版本: # svn import localdir https://svn.sinaapp.com/appname/appversion 注:要確保目前應(yīng)用的appversion不沖突,。 7,、查看工作拷貝中的文件或目錄狀態(tài): # svn status [something] 8,、更新自己的工作拷貝: # svn update 注:從SVN倉庫下載最新版本,,此命令會導致本地沒有提交的更改丟失,建議使用此命令前先查看一下本地拷貝狀態(tài)(svn status). 9,、取消對代碼修改 取消對代碼的修改分為兩種情況,。 第一種情況:改動沒有被提交(commit),。 這種情況下,,使用svn revert就能取消之前的修改。 svn revert用法如下: # svn revert [-R] something 其中something可以是(目錄或文件的)相對路徑也可以是絕對路徑,。 當something為單個文件時,,直接svn revert something就行了;當something為目錄時,,需要加上參數(shù)-R(Recursive,遞歸),,否則 只會將something這個目錄的改動。 在這種情況下也可以使用svn update命令來取消對之前的修改,,但不建議使用,。因為svn update會去連接倉庫服務(wù)器,耗費時間,。 注意:svn revert本身有固有的危險,,因為它的目的是放棄未提交的修改。一旦你選擇了恢復,,Subversion沒有方法找回未提交的修 改,。 第二種情況:改動已經(jīng)被提交(commit)。這種情況下,,用svn merge命令來進行回滾,。 回滾的操作過程如下: 1) 保證我們拿到的是最新代碼: svn update 假設(shè)最新版本號是28。 2) 然后找出要回滾的確切版本號: svn log [something] 假設(shè)根據(jù)svn log日志查出要回滾的版本號是25,,此處的something可以是文件,、目錄或整個項目 如果想要更詳細的了解情況,可以使用svn diff -r 28:25 [something] 3) 回滾到版本號25: svn merge -r 28:25 something 為了保險起見,,再次確認回滾的結(jié)果: svn diff [something] 發(fā)現(xiàn)正確無誤,,提交。 4) 提交回滾: svn commit -m "Revert revision from r28 to r25,because of ..." 提交后版本變成了29,。 將以上操作總結(jié)為三條如下: a. svn update,,svn log,找到最新版本(latest revision) b. 找到自己想要回滾的版本號(rollbak revision) c. 用svn merge來回滾: svn merge -r : something 10,、查看SVN倉庫日志信息: # svn log [workcopy] 查看所有本地的歷史日志,,如果workcopy為某文件,那么就是查看某個文件的日志信息,。 查看SVN倉庫所有文件的日志信息: # svn log https://svn.sinaapp.com/appname/ 這個命令會查看所有修改過的日志,。 注:SAE提供的SVN服務(wù)完全支持標準SVN的所有命令,更詳細的使用說明請查閱SVN官方幫助文檔,。 SVN命令幫助文檔:http://www./svnbook/1.4/svn.ref.html 中文完全幫助文檔:http://svnbook./index.zh.html |
|