SVN使用教程


  SVN倉庫地址:  https://svn.sinaapp.com/your_app_name   (您能夠經過此地址直接訪問)php

  如:應用域名是 test.sinaapp.com,那麼SVN倉庫地址是:https://svn.sinaapp.com/test html

  SVN用戶名:  SAE安全郵箱    linux

  SVN密碼:  SAE安全密碼(如已啓用微盾動態密碼,則此處填寫「安全密碼」+「微盾動態密碼」)vim

  注:SVN用戶名和密碼爲安全郵箱和安全密碼,不是微博帳號和微博密碼!瀏覽器

 

與標準SVN的區別安全

  爲了保持與SAE兼容,使用svn方式部署代碼到SAE有以下限制:服務器

    一、文件名或目錄名不容許含有如下字符:",*,?,<,>,|,另外文件或文件名的開始與結束也不允             許有空格。app

    二、上傳單個文件大小不超過20Mless

    三、單個目錄下的文 件個數不能超過2000個編輯器

    四、每一個應用代碼總大小不超過100M

    五、單個版本代碼總大小不超過50M

    六、appname目錄下只容許存在10個之內的版本,而且版本號必須爲正整數。(也就是說appname下面只容許出現10個之內的正整數             目錄名,不容許有非目錄的存在)

 

代碼部署原理 

  SAE代碼部署分爲三步:

  建立應用

 

        登錄SAE在線管理平臺,「建立新應用」(http://sae.sina.com.cn/?m=myapp&a=create)時,若是建立成功,系統會自動爲該應用建立一個SVN倉庫。假設新建立的應用名爲newapp,那麼倉庫地址爲:

        https://svn.sinaapp.com/newapp/

  

        此時,能夠經過本地SVN客戶端檢出(checkout)該應用的本地工做目錄。

 

  部署代碼

 

     SAE提供了不一樣的代碼部署方式,能夠分爲兩類:

  

          一是經過SVN客戶端部署,這是SAE推薦的代碼部署方法。

 

          另外一個是經過非SVN客戶端部署,即在線代碼在線編輯器和推薦應用安裝。

  

        這兩類代碼部署方法都會更新應用的SVN倉庫版本,但必須注意的是非SVN客戶端部署方式沒法提供版本管理功能,只能看到最新版本的代碼,也沒法回滾代碼。

 

        所以,強烈建議僅使用SVN客戶端方式部署代碼,若是同時使用非SVN客戶端方式部署,爲避免代碼版本衝突,請及時在本地SVN工做目錄下執行svn update操做,保證本地工做目錄與線上代碼保持一致。

 

  驗證

  

        代碼更新後,經過svn update或直接經過瀏覽器訪問應用查看代碼是否已經更新到線上。

 

 

相關資源

  TortoiseSVN下載:  http://jaist.dl.sourceforge.net/project/tortoisesvn/ 

  Subversion中文站:  http://www.subversion.org.cn/

 

Windows SVN

 使用TortoiseSVN客戶端

        在Windows下推薦使用烏龜(Tortoise)SVN客戶端。 TortoiseSVN 是 Subversion 版本控制系統的一個免費開源客戶端,能夠超越時間的管理文件和目錄。文件保存在中央版本庫(即SAE中央SVN倉庫),除了能記住文件和目錄的每次修改以 外,版本庫很是像普通的文件服務器。你能夠將文件恢復到過去的版本,而且能夠經過檢查歷史知道數據作了哪些修改,誰作的修改。這就是爲何許多人將 Subversion 和版本控制系統看做一種「時間機器」。

 

下載安裝

   TortoiseSVN下載:http://jaist.dl.sourceforge.net/project/tortoisesvn/ 

  又不是在linux下,安裝就很少說了 :)

  下面詳細介紹使用TortoiseSVN向SAE部署代碼。

建立本地工做目錄

        第一步,如圖1,建立一個新文件夾做爲本地工做目錄(Working directory),可使用應用名爲文件夾名。如,爲個人應用devcenter建立本地工做目錄。

  第二步,從SAE的SVN倉庫檢出(checkout)一個應用的所有版本代碼,如圖2,右鍵-->點擊「SVN Checkout」

  在彈出頁面中填寫倉庫路徑便可,這裏是:https://svn.sinaapp.com/devcenter/,其它默認參數便可,如圖3:

  Reversion處,「HEAD revision」是指最新版,也能夠指定Revision爲任意一個版本。

  點擊「OK」,出現下載界面,如圖4:

  若是一切順利,devcenter應用全部版本代碼將會所有出如今剛剛建立的devcenter文件夾下,如圖5:

 

修改代碼

  在本地使用你喜歡的編輯器,編輯任意文件,保存後該文件圖標將會出現紅色感嘆號,如圖6所示:

        看,剛剛修改過的index.php變色了。下面須要提交(commit)最近的更新。在index.php文件上擊右鍵,出現菜單 ,

選擇「SVN commit」,如圖7:

  而後填寫關於本次更新的日誌(log message),這是必填項,不然commit會失敗。如圖8:

  當您看到如圖9所示,代表剛纔的修改已經成功提交,而且前該devcenter項目的SVN版本號加1,變成30.

 

新增文件/文件夾

        在 SVN工做目錄下,對於文件修改,完成後只須要commit就ok了,但對於新增文件,或者從其它目錄複製進來的文件或文件夾,須要在commit以前需 要作一步add操做,即將文件或文件夾添加到svn工做目錄中來,不然SVN客戶端不認它。具體操做很簡單,如圖10:

  而後再如圖7所示,右鍵commit 便可。

  更多Tortoise SVN使用幫助,請參閱:http://www.subversion.org.cn/tsvndoc/

 

Notepad++集成svn插件

  Notepad++ 是一款Windows環境下很受歡迎的免費開源的代碼編輯器,有很豐富的第三方插件。

  下面介紹Notepad++的svn插件的安裝及使用。

    如圖12,點擊Plugin --> Plugin Manager --> Show Plugin Manager

    打開後,在「Available」頁找到「Subversion」,而後點擊「Install」,如圖13所示:

    安裝成功後會在Plugins菜單下出現"Subversion"子菜單。

            打開以前checkout下來的任一文件,如devcenter/1/index.php,編輯完成後,點擊Plugins --> Subversion --> Commit File(或使用    快捷鍵Ctrl+Alt+A)

    出現熟悉的一頁,如圖14所示:

    對,這就是烏龜SVN的Commit頁面,輸入Log Message,點擊「OK」便可提交。

 使用UltraEdit Studio部署

    UltraEdit Studio(注意不是UltraEdit,UltraEdit不能與SVN整合)配置稍微複雜些。

    第一步,SVN倉庫帳號設置,如圖15所示:

    而後填寫倉庫信息,如圖16所示:

    完成後,建立Project,如圖17所示:

        填寫project名b.prj後,出現如圖18所示"Project Settings",點擊「Add Folder」,出現「NewFolder」,將"Group"前的勾去掉,而後點擊「Browse」,在「Browse for Folder」頁找到以前checkout出現的本地工做目錄。

    點擊「OK」後出現提示,如圖19所示:

 

    代表UEStudio自動識別出了選擇的代碼目錄是一個SVN工做目錄,並詢問是否整合,點擊「Yes」,出現如圖20所示:

    大功告成,"Close"以後便可以編輯代碼,並隨時commit修改。如圖21所示:

 

 使用EditPlus部署

    EditPlus依賴於Tortoise SVN(TSVN),必須先安裝。

    使用最簡單,見圖22所示:

    當編輯SVN工做目錄裏的文件時,File --> TSVN即出現相應可操做的菜單。

 

Linux/Mac SVN

 倉庫地址

    https://svn.sinaapp.com/appname/

    爲了傳輸安全,SAE要求統一使用https方式部署代碼;

 

 建立倉庫

      登錄SAE在線管理平臺(http://sae.sina.com.cn),建立應用,成功後您便可以檢出該應用代碼。

      例如,您剛剛建立了應用newapp,在本地執行:

          svn checkout https://svn.sinaapp.com/newapp

 

      第一次checkout時須要驗證,用戶名/密碼爲您的SAE安全郵箱和安全密碼(非微博登錄帳號密碼,如已啓用微盾動態密碼,則此處填寫「安全密碼」+「微盾動態密碼」)。

 

 建立版本

      假如,爲newapp應用建立版本1

      目前提供兩種方式:

 

  使用svn客戶端

svn checkout https://svn.sinaapp.com/newapp  #此處須要認證,用戶名/密碼爲您的SAE安全郵箱和安全密碼(如已啓用微盾動態密碼,則此處填寫「安全密碼」+「微盾動態密碼」)

cd newapp

mkdir 1

svn add 1

svn commit -m"add version 1 for newapp"

 

  使用在線管理平臺

 

          在SAE在線管理平臺「代碼管理」處建立版本便可。但爲了不與本地倉庫衝突,務必在本地工做目錄下執行:svn update ,將最近的更新拉到本地來。

 

 

 更新代碼

 

          更新代碼前本地必須有一個工做目錄(Working Directory),建立工做目錄很簡單,只須要檢出(checkout)代碼倉庫便可。如,對於已經建立好的應用newapp,在本地執行:

     svn checkout https://svn.sinaapp.com/newapp

          輸入安全帳號和安全密碼,即完成本地工做目錄的建立。

 

  上傳代碼

      須要增長某個文件或文件夾,如部署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應用版本1根目錄下某個文件,如index.php,完整的操做流程以下:

 

svn checkout https://svn.sinaapp.com/newapp    #若是已經checkout過了,不須要從新checkout。

cd newapp/1

vim index.php   #這裏編輯代碼

svn commit -m "edit index.php"

 

 

  配置應用(appconfig)

        在應用版本根目錄下,如newapp/1下,建立文件config.yaml(語法參見:http://sae.sina.com.cn/?m=devcenter&catId=193),而後經過svn commit便可完成應用配置。

        如,如今須要更新應用newapp的默認版本3的appconfig,操做以下:

 

    svn checkout https://svn.sinaapp.com/newapp    #若是已經checkout過了,不須要從新checkout。

    cd newapp/3

    vim config.yaml   #這裏按照config.yaml語法編輯便可。

    svn commit -m "update config.yaml"

 

        注意:config.yaml不會被部署到用戶的代碼目錄,但會被存儲在服務端SVN倉庫中。所以下次能夠被checkout出來,但不會被用戶訪問到。

 

 

  在線編輯代碼

      SVN能夠在線閱讀應用代碼,地址即SVN倉庫地址:https://svn.sinaapp.com/appname/

      將appname換成本身的應用名便可登錄查看代碼。

      在線編輯器 可在管理面板>>代碼管理>>編輯代碼 打開

 

 SVN for SAE的限制條件

      爲了保持與SAE兼容,使用svn方式部署代碼到SAE有以下限制:

      一、文件名或目錄名不容許含有如下字符:",*,?,<,>,|,另外文件或文件名的開始與結束也不容許有空格。

      二、上傳單個文件大小不超過4M

      三、單個目錄下的文 件個數不能超過400個

      四、每一個應用代碼總大小不超過100M

      五、單個版本代碼總大小不超過50M

      六、appname目錄下只容許存在10個之內的版本,而且版本號必須爲正整數。(也就是說appname下面只容許出現10個之內的正整數             目錄名,不容許有非目錄的存在)

 

 

 常見錯誤說明及解決辦法

 

錯誤提示 錯誤緣由 解決方法
The change log need some words(not null) 提交時沒有添加log message 提交時加上log message便可
The log message is a pathname (was -F intended?); use '--force-log' to override log message 與路徑名稱相同 修改log message
Error file xxx in not allowed in root directory! working copy的根目錄下不容許有名爲xxx的文件(只能是正整數版本目錄) 刪除該文件或者移到到版本目錄下

directory xxx/ is not allowed in root directory! Only positive integer dirs are allowed!

working copy的根目錄下不容許有名爲xxx的目錄(只能是正整數版本目錄) 刪除該目錄或者移到版本目錄下
Too many versions!(less than 10 is permited) 版本目錄多於10個,最多不超過10個 刪除剛剛建立的版本目錄便可。
Too many files: XXX (less than 2000 is allowed). XXX目錄下文件的數量超過2000 刪除XXX目錄下的文件,使其總數降至2000如下
dir APPNAME/dir(size:xxxx) is too large less than xxx 該應用下代碼(不包括.svn目錄)總大小超過100M,或某個版本總大小超過50M 刪除沒必要要的代碼再嘗試提交
File XXX is too large!(less than 4M) 單個文件大小超過4M 刪除重試
相似Repository UUID '305daf1b-94be-48ee-a4b9-f4bcd36320de' doesn't match expected UUID '44e2f7a2-1b69-4710-974a-b6edef0fdc12' 服務器端倉庫被刪除重建,客戶端對原倉庫進行操做致使。 從新checkout出一份代碼便可
add vers xxx faild 文件部署失敗 內部緣由,請聯繫saesupport@sina.cn。
 

 

 經常使用svn命令說明

 

    一、從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]

 

    二、向SVN倉庫提交代碼:

           # svn commit -m "here is message"

 

    三、將本地文件添加到工做拷貝:

           # svn add something

           注:若是something爲文件,svn會將這個文件添加到工做拷貝;若是something是目錄,svn會將目錄及裏面的文件全添加到工做                      拷貝。something也能夠是通配符*,這樣會忽略已經添加過的文件。

 

    四、從工做拷貝中刪除一個文件:

           # svn delete something

           注:若是something爲文件,svn會將這個文件從工做拷貝中刪除;若是something是目錄,svn會將目錄及裏面的文件所有從工做                      拷貝中刪除。

 

    五、直接從SVN倉庫中刪除文件:

           # svn delete -m "delete something" https://svn.sinaapp.com/appname/appversion/something

           注:能夠從SVN倉庫中直接刪除單個文件或單個目錄甚至某個版本。

 

    六、將一個本地項目導入到SVN倉庫:

           導入應用的某個版本:

           # svn import localdir https://svn.sinaapp.com/appname/appversion

           注:要確保目前應用的appversion不衝突。

 

    七、查看工做拷貝中的文件或目錄狀態:

           # svn status [something]

 

    八、更新本身的工做拷貝:

           # svn update

           注:從SVN倉庫下載最新版本,此命令會致使本地沒有提交的更改丟失,建議使用此命令前先查看一下本地拷貝狀態(svn status).

 

    九、取消對代碼修改

           取消對代碼的修改分爲兩種狀況。

 

           第一種狀況:改動沒有被提交(commit)。

           這種狀況下,使用svn revert就能取消以前的修改。

           svn revert用法以下:

           # svn revert [-R] something

           其中something能夠是(目錄或文件的)相對路徑也能夠是絕對路徑。

           當something爲單個文件時,直接svn revert something就好了;當something爲目錄時,須要加上參數-R(Recursive,遞歸),不然              只會將something這個目錄的改動。

           在這種狀況下也可使用svn update命令來取消對以前的修改,但不建議使用。由於svn update會去鏈接倉庫服務器,耗費時間。

           注意:svn revert自己有固有的危險,由於它的目的是放棄未提交的修改。一旦你選擇了恢復,Subversion沒有方法找回未提交的修                        改。

 

           第二種狀況:改動已經被提交(commit)。這種狀況下,用svn merge命令來進行回滾。 

           回滾的操做過程以下: 

             1) 保證咱們拿到的是最新代碼: 

                  svn update 

                  假設最新版本號是28。 

             2) 而後找出要回滾的確切版本號: 

                  svn log [something]

                  假設根據svn log日誌查出要回滾的版本號是25,此處的something能夠是文件、目錄或整個項目

                  若是想要更詳細的瞭解狀況,可使用svn diff -r 28:25 [something]

             3) 回滾到版本號25:

                  svn merge -r 28:25 something

                  爲了保險起見,再次確認回滾的結果:

                  svn diff [something]

                  發現正確無誤,提交。

             4) 提交回滾:

                  svn commit -m "Revert revision from r28 to r25,because of ..." 

                  提交後版本變成了29。

                  將以上操做總結爲三條以下:

                  a. svn update,svn log,找到最新版本(latest revision)

                  b. 找到本身想要回滾的版本號(rollbak revision)

                  c. 用svn merge來回滾: svn merge -r : something

 

    十、查看SVN倉庫日誌信息:

            # svn log [workcopy]

            查看全部本地的歷史日誌,若是workcopy爲某文件,那麼就是查看某個文件的日誌信息。

            查看SVN倉庫全部文件的日誌信息:

            # svn log https://svn.sinaapp.com/appname/

            這個命令會查看全部修改過的日誌。

 

    注:SAE提供的SVN服務徹底支持標準SVN的全部命令,更詳細的使用說明請查閱SVN官方幫助文檔。

            SVN命令幫助文檔:http://www.subversion.org.cn/svnbook/1.4/svn.ref.html

            中文徹底幫助文檔:http://svnbook.red-bean.com/index.zh.html

相關文章
相關標籤/搜索