svn雲伺服器
Ⅰ 終端創建svn伺服器怎樣查看路徑
svn可以通過多種方式訪問—本地磁碟訪問,或各種各樣的不同的網路協議,但一個版本庫地址永遠都是一個URL:
模式 訪問方法
file:///直接版本庫訪問(本地磁碟)。
http://通過配置Subversion伺服器的WebDAV協議。
https://與http://相似,但是包括SSL加密。
svn://通過svnserve服務自定義的協議。
svn+ssh://相似,但通過SSH封裝。
我用的是小鳥雲伺服器,這些都是他們告訴我的。
希望採納 謝謝!
Ⅱ 如何利用網盤搭建svn網路伺服器
1、安裝網盤
選擇一個國內有名的網盤存儲,例如金山網盤、360雲盤等,注冊賬戶會默認贈送幾G的使用空間,然後下載其對應的網盤客戶端管理軟體(也可以使用瀏覽器方式),使用賬號登錄,就可以上傳、管理文件等。
2、建立SVN Reporsitory
於網盤創建svn reporsitory
,在網盤中創建目錄,例如「svn」目錄,進入該目錄後使用TortoiseSVN工具創建倉庫(reporsitory)
3、SVN使用-導出
創建項目目錄為」project」,在」project」中點擊右鍵選擇SVN Checkout,配置如下圖所示信息:倉庫http://www.cnblogs.com/gaojun/admin/」svn」及導出目錄」project」點擊OK完成導出
4、SVN使用-提交
在」project」中添加一個測試文件」textSVN.txt」,然後在」project」目錄上右鍵,使用「SVN Commit」提交測試是否成功,
5、同步SVN數據
在其它電腦上做同樣的步驟,網盤賬號使用同一個,這樣」svn」目錄既是一個即時更新的網盤目錄,又是一個即時同步的SVN庫。這樣其實是在兩台電腦上做了兩個SVN庫,但是因為網盤客戶端的存在和SVN強大的版本控制功能,這兩個SVN庫隨時都會保持一致。
6、總結
此方法比使用google.code等要快的多,並且google.code經常被我們偉大的「長城」給封阻,個人感覺比較適用一些小項目
Ⅲ 如何在阿里雲伺服器上部署SVN服務
您好。雲伺服器進去後和本地電腦操作是一樣的,遠程登錄後就可以了,開始菜單,點擊運行,輸入mstsc,輸入ip,用戶名密碼,登錄。這樣進去後您看到的和本地電腦是一樣的。根據您網上搜索到的搭建教程搭建就可以了。
Ⅳ 怎樣購買 svn伺服器
Collabnet就有,SVN雲服務
另外還有些免費的SVN伺服器,比如googlecode、新浪code就提供的有,但大都有容量限制,一般100-300M吧
Ⅳ 本地文件導入到svn伺服器中是怎麼存在的,可以在伺服器中查到源文件,還是在伺服器中以另一種結構存在
百萬級訪問量網站的技術准備工作
當今從純網站技術上來說,因為開源模式的發展,現在建一個小網站已經很簡單也很便宜,所以很多人都把創業方向定位在互聯網應用。這些人里大多數不是很懂技術,或者不是那麼精通,而網站開發維護方面的知識又很分散,學習成本太高,所以這篇文章將這些知識點結合起來,系統的來說,一個從日幾千訪問的小小網站,到日訪問一兩百萬的小網站,中間可能會產生什麼問題,以及怎麼才能在一開始做足工作盡量避免這些問題。
你的網站因為努力經營,訪問量逐漸升高,在升高的過程中,問題也可能開始顯現了。因為帶寬的增加、硬體的擴展、人員的擴張所帶來的成本提高是顯而易見的,而還有相當大的一部分成本是因為代碼重構、架構重構,甚至底層開發語言更換引起的,最壞的情況就是數據丟失,所有努力付之一炬。這類成本支出大多數在一開始就可以避免,先打好基礎,往後可以省很多精力,少操很多心。
對於不同的初期投資成本,技術路線的選擇是不同的。這里假設網站剛剛只是一個構想,計劃第一年伺服器硬體帶寬投入5萬左右。對於這個資金額度,有很多種方案可選擇,例如租用虛擬主機、租用單獨伺服器,或者流行的私有雲,或者託管伺服器。前兩種選擇,網站發展到一定規模時需遷移,那時再重做規劃顯然影響更大。伺服器託管因為配置自主、能完全掌握控制權,所以有一定規模的網站基本都是這種模式。採用自己託管伺服器的網站,一開始要注意以下幾點——
一、開發語言
一般來說,技術人員(程序員)都是根據自己技術背景選擇自己最熟悉的語言,不過不可能永遠是一個人寫程序,所以在語言的選擇上還要是要費些心思。首先明確一點,無論用什麼語言,最終代碼質量是看管理,因此我們從前期開發成本分析。現在國內流行的適用於網站的語言,大概有java、php、.net、 python、ruby這五大陣營。python和ruby因為在國內流行的比較晚,現在人員還是相對難招一些。.net平台的人相對多,但是到後期需要解決性能問題時,對人員技能的要求比較高。剩餘的java、php用人可以說是最多的。java和php無法從語言層面做比較,但對於初期,應用幾乎都是靠前端支撐的網站來說,php入門簡單、編寫快速,優勢相對大一點。至於後端例如行為分析、銀行介面、非同步消息處理等,等真正需要時,就要根據不同業務需求來選擇不同語言了。
二、代碼版本管理
稍微有點規模的網站就需要使用代碼版本管理了。代碼版本管理兩點最大的好處,一是方便協同工作,二是有歷史記錄可查詢比較。代碼版本管理軟體有很多,vss/cvs/svn/hg等,目前國內都比較流行,其中svn的普及度還是很高的。
假設選了svn,那麼有幾點考慮。一是採用什麼樹結構。初期可能只有一條主幹,往後就需要建立分支,例如一條開發分支,一條上線分支,再往後,可能要每個小組一個分支。建議一開始人少時選擇兩條分支,開發和線上,每個功能本地測試無誤後提交到開發分支,最後統一測試,可以上線時合並到上線分支。如果每人都建自己的分支,合並時會浪費很大精力,對於幾乎每天都要修改幾次的WEB應用來說,所費時間太多。
向伺服器部署代碼,可以手工部署也可以自動部署。手工部署相對簡單,一般可直接在伺服器上svn update,或者找個新目錄svn checkout,再把web root給ln -s過去。應用越復雜,部署越復雜,沒有什麼統一標准,只是別再用ftp上傳那種形式,一是上傳時文件引用不一致錯誤率增加,二是很容易出現開發人員的版本跟線上版本不一致,導致本來想改個錯字結果變成回滾。如果有多台伺服器還是建議自動部署,更換代碼的機器從當前服務池中臨時撤出,更新完畢後再重新加入。
三、伺服器硬體
在各個機房裡,靠一台伺服器孤獨支撐的網站數不清,但如果資金稍微充足,建議至少三台的標准配置,分別用作web處理、資料庫、備份。web伺服器至少要8G內存,雙sata raid1,如果經濟稍微寬松,或靜態文件或圖片多,則15k sas raid10。資料庫至少16G內存,15k sas raid 10。備份伺服器最好跟資料庫伺服器同等配置。硬體可以上整套品牌,也可以兼容機,也可以半品牌半組裝,取決於經濟能力。當然,這是典型的搭配,有些類型應用的性能瓶頸首先出現在web上,那種情況就要單獨分析了。
web伺服器可以既跑程序又當內存緩存,資料庫伺服器則只跑主資料庫(假如是MySQL的話),備份伺服器所承擔就相對多一些,web配置、緩存配置、資料庫配置都要跟前兩台一致,這樣WEB和資料庫任意一台出問題,很容易就可以將備份伺服器切換過去臨時頂替,直到解決完問題。要注意,硬體是隨時可能壞掉的,特別是硬碟,所以寧可WEB伺服器跟資料庫伺服器放在一起,也一定不能省掉備份,備份一定要異機,並且有非同步,電力故障、誤操作都可能導致一台機器上的所有數據丟失。很多的開源備份方案可選擇,最簡單的就是rsync,寫crontab里,定時同步。備份和切換,建議多做測試,選最安全最適合業務的,並且盡可能異地備份。
四、機房
三種機房盡量不要選:聯通訪問特別慢的電信機房、電信訪問特別慢的聯通機房、電信聯通訪問特別慢的移動或鐵通機房。機房要盡可能多的實地參觀,多測試,找個網路質量好,管理嚴格的機房。機房可以說是非常重要,直接關繫到網站訪問速度,網站訪問速度直接關繫到用戶體驗,訪問速度很慢的網站,很難獲得用戶青睞。
五、架構
在大方向上,被熟知的架構是web負載均衡+資料庫主從+緩存+分布式存儲+隊列。在一開始,按照可擴展的原則設計和編程就可以。只是要多考慮緩存失效時的雪崩效應、主從同步的數據一致性和時間差、隊列的穩定性和失敗後的重試策略、文件存儲的效率和備份方式等等意外情況。緩存失效、資料庫復制中斷、隊列寫入錯誤、電源損壞,在實際運維中經常發生,如果不注意這些,出現問題時恢復期可能會超出預期很長時間。
六、伺服器軟體
操作系統Linux很流行。在沒有專業運維人員的情況下,應傾向於擇使用的人多、社區活躍、配置方便、升級方便的發行版,例如RH系列、 debian、ubuntu server等,硬體和操作系統要一起選擇,看是否有適合的驅動,如果確定用某種商業軟體或解決方案,也要提前知曉其對哪種操作系統支持最佳。web伺服器方面,apache、nginx、lighttpd三大系列中,apache佔有量還是最大,但是想把性能調教好還是需要很專業的,nginx和 lighttpd在不需要太多調整的情況下可以達到一個比較不錯的性能。無論選擇什麼軟體,除非改過這些軟體或你的程序真的不兼容新版本,否則盡量版本越新越好,版本新,意味著新特性增多、BUG減少、性能增加。一個典型的php網站,基本上大多數人都沒改過任何伺服器軟體源代碼,絕大多數情況是能平穩的升級到新版本的。類似於jdk5到 jdk6,python2到python3這類變動比較大的升級還是比較少見的。看看ChangeLog,看看升級說明,結合自己情況評估測試一下,越早升級越好,升級的越晚,所花費的成本越高。對於軟體包,盡量使用發行版內置的包管理工具,沒有特殊要求時不建議自己編譯,那樣對將來運維不利。
七、資料庫
幾乎所有操作最後都要落到資料庫身上,它又最難擴展(存儲也挺難)。資料庫常見的擴展方法有復制、分片,設計時要考慮到每種應用的數據如何復制、分片,當然這種考慮一般會推遲到技術設計時期。在初期進行資料庫結構設計時,要根據不同的業務類型和增長量預期來考慮是否要分庫、分區,並且盡量不要使用聯合查詢、不使用自增ID以方便分片。復制延時問題、主從資料庫數據一致性問題,可以自己寫或者用已有的運維工具進行檢測。
用存儲過程是比較難擴展的,這種情形多發生於傳統C/S,特別是OA系統轉換過來的開發人員。低成本網站不是一兩台小型機跑一個資料庫處理所有業務的模式,是機海作戰。方便水平擴展比那點預分析時間和網路傳輸流量要重要的多的多。
另外,現在流行一種概念叫NoSQL,可以理解為非傳統關系型資料庫。實際應用中,網站有著越來越多的密集寫操作、上億的簡單關系數據讀取、熱備等,這都不是傳統關系資料庫所擅長的,於是就產生了很多非關系型資料庫,比如Redis/TC&TT/MongoDB/Memcachedb等,在測試中,這些幾乎都達到了每秒至少一萬次的寫操作,內存型的甚至5萬以上。在設計時,可根據業務特點和性能要求來選擇是否使用這類資料庫。例如 MongoDB,幾句配置就可以組建一個復制+自動分片+failover的環境,文檔化的存儲也簡化了傳統設計庫結構再開發的模式。但是當你決定採用一項技術時,一定要真正了解其優劣,例如可能你所選擇的技術並不能支持你所需要的事務和數據一致性要求。
八、文件存儲
存儲的分布幾乎跟資料庫擴展一樣困難,不過只有百萬的PV的情況下,磁碟IO方面一般不會成大問題,一兩台採用SATA做條帶RAID的機器可以應付,反而是自己做非同步備份比較復雜,因為小文件多。如果只有一台機器做存儲,可以做簡單的優化,例如放最小縮略圖的分區和放中等縮略圖的分區,根據平均大小調整一下塊大小。存儲要規劃好目錄結構,否則文件增多後維護起來復雜,也不利於擴展。同時還要考慮將來擴容,例如採用LVM,或者把文件根據不同規則散列到不同機器。磁碟IO繁重的情況下更容易出現故障,所以要做好備份,若發現有盤壞掉,要馬上行動更換,很多人的硬碟都是壞了一塊之後,接二連三的壞下去。
為了將來圖片走cdn做准備,一開始最好就將圖片的域名分開,且不用主域名。因為很多網站都將cookie設置到了.domain.ltd,如果圖片也在這個域名下,很可能因為cookie而造成緩存失效,並且佔多餘流量,還可能因為瀏覽器並發線程限製造成訪問緩慢。
九、程序
一定硬體條件下,應用能承載多少訪問量,很大一部分也取決於程序如何寫。程序寫的不好,可能一萬的訪問都承載不了,寫的好,可能一兩台機器就能承擔幾百萬PV。越是復雜、數據實時性要求越高的應用,優化起來越難,但對普通網站有一個統一的思路,就是盡量向前端優化、減少資料庫操作、減少磁碟IO。向前端優化指的是,在不影響功能和體驗的情況下,能在瀏覽器執行的不要在服務端執行,能在緩存伺服器上直接返回的不要到應用伺服器,程序能直接取得的結果不要到外部取得,本機內能取得的數據不要到遠程取,內存能取到的不要到磁碟取,緩存中有的不要去資料庫查詢。減少資料庫操作指減少更新次數、緩存結果減少查詢次數、將資料庫執行的操作盡可能的讓你的程序完成(例如join查詢),減少磁碟IO指盡量不使用文件系統作為緩存、減少讀寫文件次數等。程序優化永遠要優化慢的部分,換語法是無法「優化」的。
然而編程時不應該把重點放在優化上,應該關注擴展性。當今的WEB應用,需求變化非常之快,適應多種需求的架構是不存在的,我們的擴展性就要把要點放在跟底層交互的架構上,例如持久化數據的存取規則、緩存的存取規則等,還有一些共用服務,例如用戶信息等。先把不變的部分做完善,剩下的部分就很容易將精力放在業務邏輯上面了。
Ⅵ 做了一個網站,區域網能訪問了,怎樣讓外網訪問
做了一個網站,區域網能訪問了,要讓外網也可以訪問,可以參考以下操作來解決問題:
1、先了解一下什麼是動態域名解析和內網映射。接下來的操作與其相關;
動態域名解析:用域名代替本地動態公網IP。用於解決動態公網IP和實時獲取本地最新公網IP。一般用於動態公網IP環境搭建應用和發布網站外網訪問。
內網映射:可以將內網應用映射外網訪問。
Ⅶ internal server error怎麼解決
1.首先打開電腦,點擊雲伺服器操作面板中的「moreoperations」,然後選擇「viewlog」。
(7)svn雲伺服器擴展閱讀:
例句
1、Unabletodisplayfolder.Aninternalservererroroccurred.
無法顯示文件夾。發生了內部伺服器錯誤。
2、Internalservererroroccured.Requestaborted.
發生內部伺服器錯誤。請求已終止。
3、.
執行搜索時發生內部伺服器錯誤。
4、.
內部伺服器錯誤導致操作失敗。
5、.Unexpectederrorsusually
indicateaproblemwiththeServer.
檢測出內部伺服器錯誤的次數。意外的錯誤通常表示伺服器有問題。
Ⅷ SVN伺服器發送一個HTTP響應體截斷問題,怎麼解決
SVN使用過程中遇到的問題及解決方案
1. 當某文件被客戶機lock之後,出現432錯誤後可用一下辦法解決
2. 選取該文件所在的文件夾並右鍵選擇TortoiseSVN下的Repo-Browser(版本庫瀏覽器),
然後選中被lock的文件單擊右鍵選擇break lock(破除鎖定)即可解鎖。
伺服器發送了意外的返回值(405 Method Not Allowed),在
響應 「MKCOL」 的請求
我的伺服器用的是小鳥雲的,挺不錯的。
Ⅸ SVN的操作說明以及備份策略
2.1 文件檢出
安裝TortoiseSVN後,SVN會跟Windows的資源管理器完美集成。點擊右鍵,我們可以在菜單欄中選擇「SVN檢出」選項,輸入要檢出代碼的文件庫的URL地址,我們就可以檢出該URL地址下的文件庫的文件。默認情況下是檢出最新版本的代碼,如果需要,我們可以通過瀏覽日誌,根據日誌來找出想要的版本,然後在「版本」選項中指定相應版本就可以檢出相關代碼了 。
之後,對於同一個項目的主幹開發,我們都在這個檢出的代碼文件目錄下操作,而不是每一次提交或更新都重新檢出一次。
2.2 文件添加
我們在本地創建的文件(包括目錄)不會受SVN的控制,為了讓其接受SVN的控制必須將其添加到文件庫中。對於團隊其他成員需要的文件,如代碼文件、某些模塊的.a文件(由於某些需要,該模塊代碼不公開),我們必須讓它們接受SVN的控制,並且保持最新的版本。
2.3 文件刪除
當我們需要刪除無用的文件(包括目錄)時,不能使用Windows的資源管理工具,而必須使用SVN本身的刪除文件功能。這樣該文件被刪除後,其所有修改歷史仍然保存在SVN伺服器中,以後仍然可以獲得該文件的修改歷史。
2.4 文件改名
當我們需要對文件(包括目錄)進行改名的時,不能使用Windows的資源管理工具,而必須使用SVN本身的文件改名功能。這樣該文件被改名後,其改名前的所有修改歷史仍然保存在SVN伺服器中,保持連續的修改信息。
2.5 文件更新
其他團隊成員提交到SVN上的改動不會自動更新到你的本地拷貝中來,我們需要通過更新文件操作來獲取其他成員對項目文件所做的修改。SVN更新文件操作會把文件庫里的文件與本地文件進行合並,從而達到了同時保留其他成員的修改及本地的修改的目的。如果無法自動合並則會發生沖突,需要使用文件比較工具進行手工合並,合並完成後才能提交已解決沖突的文件。沖突的詳細解決方法見第三章——沖突解決。
在團隊開發時,更新是一件很重要的工作,可以保持團隊成員之間的工作內容一致,因此要注意經常更新自己的工作拷貝,以保證自己能夠獲得最新的修改內容。
2.6 改動提交
我們對文件(包括目錄)所做的一切改動,包括添加、刪除、修改文件都必須提交到SVN伺服器文件庫中才能正式生效,之後團隊的其他成員才可以獲取你所作的修改。
提交是很重要的一項操作,要求做到:
提交代碼之前一定要保證修改後的代碼能編譯通過,不能提交編譯不通過的代碼。
比較修改前及修改後的代碼,把調試信息或其他不相關的信息去掉,再次確保提交的代碼是正確的並且提交的是需要提交的文件。
不要等到修改了很多代碼才提交,而是相關小功能完成時就應該提交一次。這樣以後發現問題時就很容易撤銷有問題的代碼——因為撤銷只能針對一次提交,所以在一次提交里涉及過多的功能是不推薦的。
提交時必須填寫log信息,說明這次提交增加了什麼功能或者修正了什麼bug。這些信息有助於自己和其他團隊成員了解整個項目的歷史。當出現問題時也方便定位到對應的版本代碼,所以log信息必須足夠詳細。
事務性提交。也就是說提交要麼成功,要麼全部失敗——即提交出現錯誤時會自動回滾,實際上沒有提交任何東西。出現錯誤時,解決錯誤,再次提交上次提交的全部內容即可。
3. 沖突解決
沖突的解決是我們使用SVN過程中的一個棘手問題,所以獨立一節來談論。
3.1 沖突的產生
沖突發生在多個成員同時對同一個文件進行修改的情形下。即當有其他成員已經提交了修改,而自己在本地拷貝中也對該文件進行了修改,而且修改的是同一個地方,那麼在進行本地文件的更新時,SVN會不知道該選擇那個修改(SVN上的修改還是本地的修改)來進行合並,所以沖突就產生了。
舉例說,假如受SVN控制的文件Day.txt在SVN伺服器上的當前內容如下:
圖表 3 Day.txt文件在本地的修改
我們可以看到,在文本的第一行,SVN上及本地都做了修改。這樣當在本地進行更新(提交之前必須先更新),SVN合並時就不知道monday後面到底該是work還是sleep,所以沖突就產生了。
而第三、五行是各自進行了修改,並沒有沖突,所以這兩行可以順利合並,合並後可以看到所有人所做的修改。
3.2 沖突的解決
沖突發生後,SVN會在本地保存該文件的不同修改版本,見下圖藍色圖標:
圖表 4 Day.txt文件的不同版本
Day.txt.r35是版本35的Day.txt文件(本地拷貝最新版本)
Day.txt.r37是版本37的Day.txt文件(SVN上最新版本)
Day.txt.mine的是本地修改後的Day.txt文件
Day.txt文件中包含了合並後的內容
3.2.1 簡單沖突解決
對於簡單的內容沖突,我們可以直接在合並後的文件上修改。在上例中,我們打開Day.txt文件,可以看到SVN合並後的內容:
圖表 5 Day.txt合並後內容
我們看到沒有沖突的修改:(play basketball)及(meeting)順利地合並了,而沖突的部分出現了一些標記。其中標記
<<<<<<< .mine
=======
之間包含的是本地修改的沖突部分的內容,即monday(work)。而標記
=======
>>>>>>> .r37
之間包含的是版本37(SVN上最新版本)該部分內容,即monday(sleep)。
不失一般性,假如我們現在要保留的內容是monday(work),那麼我們只要把標記及monday(sleep)部分內容去掉即可:
圖表 6 Day.txt解決沖突後內容
確保修改正確後,把Day.txt文件設置為「已解決的」。
圖表 7 Day.txt標記為已解決
之後,後綴為mine,r35,r37文件全部消失,僅保留已解決沖突的Day.txt文件,提交到SVN即可。
3.2.2 復雜沖突解決
對於文件內容復雜的文件,上述的解決方法容易漏掉一些要修改的部分,解決起來也耗時耗力。這時要通過SVN提供的工具來解決。
選擇SVN功能「編輯沖突」,打開沖突編輯工具:
圖表 8 沖突編輯工具
上半部分的兩個內容欄分別顯示的是版本37的內容及本地修改的內容。
下半部分的內容欄顯示的是合並後的內容。
每個內容欄左邊的標記清楚地標識了該文件做了那些修改。
文件沖突的部分用紅色顯眼地表示了出來。在合並欄,點擊沖突部分,點擊右鍵,我們可以選擇用哪個內容(SVN上最新內容或者本地修改內容)來解決沖突部分,也可以選擇兩個內容都使用,同時選擇它們出現的先後順序。
逐一解決各個沖突。確保所有沖突都解決後,保存文件,並標記為「已解決」的,退出該工具即完成沖突的解決。
4. 加鎖策略
事實上,解決沖突還有一種方法,那就是「嚴格加鎖」。
「嚴格加鎖」要求在編輯文件之前必須先對文件加鎖,然後才能進行編輯。此時團隊其他成員不能對該文件進行編輯,即保證了同一時刻只有一個人在編輯該文件,因此避免了沖突的出現。
那麼,什麼類型的文件我們應該採取「嚴格加鎖」呢?
Excel、圖片等不可合並的文件,我們必須對其「嚴格加鎖」。「嚴格加鎖」的文件都標記為「可讀」的,即不可編輯。要編輯這些「嚴格加鎖」的文件,必須先對其加鎖,加鎖後文件更改為「可讀可寫」。編輯完這類文件後要第一時間提交。提交完成時,SVN會自動解開任何你擁有的鎖 。
文本文件,比如程序代碼,SVN通常可以為我們合並改動,無須「嚴格加鎖」。對於一些大家都頻繁改動的重要源代碼文件,可能會引起大量沖突,我們也不推薦「嚴格加鎖」,因為加鎖會導致大家持續得走來走去去詢問加鎖情況。正確做法是把文件分成數個邏輯單元,大家都修改各自的單元,減少合並時的沖突。
5. 標簽&分支
一個項目最初存放的目錄我們稱之為主幹(trunk)。下面我們討論除了主幹之外其他存放項目的目錄——標簽(tag)和分支(branch)。
5.1 標簽(tag)
版本號可以區分多次的代碼修改,我們可以使用版本號來檢出需要的代碼,但對於重要版本的代碼,如第三版發布代碼,我們不希望記住r37這樣的數字。這時,我們就可以通過創建標簽來對SVN中這個發布版本的文件的這個時刻的狀態創建一個「快照」,以後就可以通過這個標簽名字來檢出第三發布版本的代碼。
標簽其實是當前項目文件的簡單拷貝,保存在標簽所在的目錄下。創建標簽也是挺簡單的,不過要注意:
標簽的名字一定要有描述性,可以僅憑名字就知道為什麼要創建標簽。
不能過多地使用標簽,只有在重要時刻或者發布版本時才可以創建標簽。
標簽是項目文件在某個時刻的狀態,不能對其進行修改 。
5.2 分支(branch)
分支跟標簽一樣,也是當前項目文件的簡單拷貝,保存在分支所在的目錄下。
分支跟標簽的根本區別在於,標簽不能對其進行修改,而分支就是為了某種目的的修改而建立的。在檢出代碼時檢出指定分支即可,分支的操作跟主幹上的操作完全相同。
5.2.1 何時創建
遇到下述情況,我們可以通過創建分支來解決問題:
發布分支
當我們快要發布一個版本了,一個開發小團隊要為這次發布做好准備,比如說修改一些收尾的bug。這時他們需要的是項目的穩定性,而同時我們還有其他團隊要開發預計下次發布才會添加進去的功能,顯然他們不能在同一份代碼上工作,因此我們需要從主幹中建立出一個發布分支,發布團隊都從這個發布分支檢出及提交代碼。當程序被發布之後,這個分支依然是活動的。這樣,如果客戶報告了一些bug,團隊會在這個發布分支中修正它們並視情況合並到主幹中去。
試驗分支
當我們需要對項目做大范圍的改動,並且這改動對系統的其餘部分有深遠的影響,而我們又不能保證這次改動一定能成功的時候就可以建立試驗分支。如果試驗失敗了,可以廢棄這個分支;成功了我們只要把分支的改動合並到主幹代碼中去就可以了。
其他情況,我們不建議創建分支,更不推薦在分支上創建分支,因為分支過多,合並時的沖突將會是一種難於解決的災難。
5.2.2 合並分支
我們在分支上所修正的bug很可能在主幹上或者其他分支上也存在,因為它們往往來自同一份代碼,所以我們在分支上所做的改動有必要合並到主幹或者其他分支中去。
對於簡單的bug,一次提交就能解決問題的,那麼我們只要記住提交新版本號,然後使用新版本號把改動合並到其他的受影響的主幹及分支中去就可以了。
對於復雜的bug,可能需要多個開發者花幾天的時間提交多次才能修好。這時光用版本號來記住修改的內容就有點勉為其難了。因此,我們可以使用標簽來標記我們修正過程的開始和結束,然後使用這些標簽幫助我們把修正的代碼合並到主幹和其他分支中去。整個過程如下:
① 給分支打個標簽,標記bug修改開始。
② 測試重現bug,修正代碼讓新測試通過。
③ 提交你的改動到SVN上。
④ 重復步驟2、3,直到確定bug已經修正。
⑤ 再給分支打個標簽,標記bug修正結束。
⑥ 使用兩個標簽來把修正的代碼合並到所有其他受影響的主幹和分支上。
6. 注意事項
經常更新
由於文件可能有多個人修改,應該經常更新你的工作拷貝中的文件,這樣能降低發生沖突的可能性。
測試提交
提交前先在本地進行測試。不允許將有錯誤的文件提交到SVN伺服器上。
填寫備注
提交時一定要寫備註:備注有助於其他人(包括三個月後的你自己)理解你對文件所做的修改。
整體提交
提交文件時注意要提交一項改動所對應的所有文件,不要一次提交一個文件或者一次提交修改了很多功能的一堆文件。
發布標簽
對於每一個發布的版本都要建立標簽:當用戶告訴你發生某個問題時,你可以迅速地追蹤到問題是在哪個版本引入的 。
附:測試自動化小組SVN使用指導原則
1. Project的構建
Project在SVN伺服器上的目錄架構如下:
SVN上的項目文件:
1. 必須保證Trunk上的代碼是最新的!定期對Trunk上的代碼進行更新,各小組可根據各自實際情況自己把握
2. Tag是根據項目需要所打的標簽,每一個發布的版本都要打Tag,主要是方便有需要時可以直接根據Tag返回到之前的狀態,以便於分析、測試;Tag中必須包含相應的release文件及當時編譯或發布時的源代碼,必須有相關的文檔註明項目背景、發布情況等。
3. Branch文件夾可以用作備份用,可以用個人名字命名文件夾;此外,Branch分支主要用來進行短暫或者探索性的開發使用,最終的軟體版本必須更新、合並到Trunk主幹上。
4. 關於同一項目組開發環境的建議:同一項目組成員的開發環境最好一致,軟體安裝路徑和Project文件存放路徑最好一致。
2. 版本號
關於版本號命名規則:主版本號.子版本號.修正版本號
1. 項目初版本時,版本號為0.1.0;
2. 當項目在進行了局部修改或 bug 修正時,主版本號和子版本號都不變,修正版本號加 1;
3. 當項目在原有的基礎上增加了部分功能時,主版本號不變,子版本號加 1,修正版本號復位為 0;
4. 當項目在進行了重大修改或局部修正累積較多,而導致項目整體發生全局變化時,主版本號加 1,子版本號和修正版本號復位為0;
5. 編譯版本號一般是編譯器在編譯過程中自動生成的,我們只定義其格式,如果編譯器不能自動生成,人手添加,數值代表為當前的系統時間。
例子:V1.0.1 Build090305 Rel111123
其它版本使用規則:
1. α(alphal)內部測試版
此版本表示該軟體僅僅是一個初步完成品,只在組內內部交流,該版本軟體的 bug 較多,限內部測試使用。
例子:V0.1.1 Build090305 alphal1
2. β(beta)外部測試版
該版本相對於α版已有了很大的改進,經過組內的測試,消除了嚴重的錯誤,但還是存在著一些缺陷,需要經過大規模測試來進一步消除。
例子:V0.1.2 Build090305 beta1
3. demo 演示版
僅限評審或講解時做介紹使用。
例子:V0.1.3 Build090305 demo1
4. release 最終版
該版本意味「最終釋放版」,在出了一系列的測試版之後,終歸會有一個正式版本,一般情況下,release不會以單詞形式出現在軟體封面上,取而代之的是符號 (Rel) 。release版本發布時,必須將待發布的軟體和相應版本更新記錄打包在一起發出。
例子:V1.0.1 Build090305 Rel111123
3. 許可權限制
如果項目本身需要對項目組成員作不同的許可權控制,可以考慮維護兩個工程:一個工程裡面有相應的源文件,一個則只有編譯後的文件。
4. 模塊的版本維護
1. 文件一般不需要版本,但要有詳細的更新歷史記錄;
2. 模塊可以以版本來維護,具體可以不同的文件夾區分。