svn代码版本管理总结
在本篇文章中, 我將會詳細(xì)說明我是如何應(yīng)用SVN trunk(樹干)、branches(分支)和tags(標(biāo)記)。這種方法同樣被稱為“branch always”,兩者非常接近??赡芪宜榻B的并不是最好的方法,但是它會給新手一些解釋說明,告訴他們trunk、branches和tags是什么,并且該如何去應(yīng)用它們。
當(dāng)然,如果本文有些要點需要澄清/確認(rèn),亦或者有一些錯誤的觀點,還請你評論,自由發(fā)表自己的觀點。
——簡單的對比
SVN的工作機(jī)制在某種程度上就像一顆正在生長的樹:
- 一顆有樹干和許多分支的樹
- 分支從樹干生長出來,并且細(xì)的分支從相對較粗的樹干中長出
- 一棵樹可以只有樹干沒有分支(但是這種情況不會持續(xù)很久,隨著樹的成長,肯定會有分支啦,^^)
- 一顆沒有樹干但是有很多分支的樹看起來更像是地板上的一捆樹枝
- 如果樹干患病了,最終分支也會受到影響,然后整棵樹就會死亡
- 如果分支患病了,你可以剪掉它,然后其他分支還會生長出來的哦!
- 如果分支生長太快了,對于樹干它可能會非常沉重,最后整棵樹會垮塌掉
- 當(dāng)你感覺你的樹、樹干或者是分支看起來很漂亮的時候,你可以給它照張相,這樣就就可以記得它在那時是多么的贊。
——Trunk
Trunk是放置穩(wěn)定代碼的主要環(huán)境,就好像一個汽車工廠,負(fù)責(zé)將成品的汽車零件組裝在一起。
以下內(nèi)容將告訴你如何使用SVN trunk:
- 除非你必須處理一些容易且能迅速解決的BUG,或者你必須添加一些無關(guān)邏輯的文件(比如媒體文件:圖像,視頻,CSS等等),否則永遠(yuǎn)不要在trunk直接做開發(fā)
- 不要因為特殊的需求而去對先前的版本做太大的改變,如何相關(guān)的情況都意味著需要建立一個branch(如下所述)
- 不要提交一些可能破壞trunk的內(nèi)容,例如從branch合并
- 如果你在某些時候偶然間破壞了trunk,bring some cake the next day (”with great responsibilities come… huge cakes”)
——Branches
一個branch就是從一個SVN倉庫中的子樹所作的一份普通拷貝。通常情況它的工作類似與UNIX系統(tǒng)上的符號鏈接,但是你一旦在一個SVN branch里修改了一些文件,并且這些被修改的文件從拷貝過來的源文件獨立發(fā)展,就不能這么認(rèn)為了。當(dāng)一個branch完成了,并且認(rèn)為它足夠穩(wěn)定的時候,它必須合并回它原來的拷貝的地方,也就是說:如果原來是從trunk中拷貝的,就應(yīng)該回到trunk去,或者合并回它原來拷貝的父級branch。
以下內(nèi)容將告訴你如何使用SVN branches:
- 如果你需要修改你的應(yīng)用程序,或者為它開發(fā)一個新的特性,請從trunk中創(chuàng)建一個新的branch,然后基于這個新的分支進(jìn)行開發(fā)
- 除非是因為必須從一個branch中創(chuàng)建一個新的子branch,否則新的branch必須從trunk創(chuàng)建
- 當(dāng)你創(chuàng)建了一個新branch,你應(yīng)當(dāng)立即切換過去。如果你沒有這么做,那你為什么要在最初的地方創(chuàng)建這個分支呢?
——Tags
從表面上看,SVN branches和SVN tags沒有什么差別,但是從概念上來說,它們有許多差別。其實一個SVN tags就是上文所述的“為這棵樹照張相”:一個trunk或者一個branch修訂版的命名快照。
以下內(nèi)容將告訴你如何使用SVN tags:
- 作為一個開發(fā)者,永遠(yuǎn)不要切換至、取出,或者向一個SVN tag提交任何內(nèi)容:一個tag好比某種“照片”,并不是實實在在的東西,tags只可讀,不可寫。
- 在特殊或者需要特別注意的環(huán)境中,如:生產(chǎn)環(huán)境(production)、?(staging)、測試環(huán)境(testing)等等,只能從一個修復(fù)過的(fixed)tag中checkout和update,永遠(yuǎn)不要commit至一個tag。
- 對于上述提及到的環(huán)境,可以創(chuàng)建如下的tags:“production”,“staging”,“testing”等等。你也可以根據(jù)軟件版本、項目的成熟程度來命名tag:“1.0.3”,“stable”,“l(fā)atest”等等。
- 當(dāng)trunk已經(jīng)穩(wěn)定,并且可以對外發(fā)布,也要相應(yīng)地重新創(chuàng)建tags,然后再更新相關(guān)的環(huán)境(production, staging, etc)
——工作流樣例
假設(shè)你必須添加了一個特性至一個項目,且這個項目是受版本控制的,你差不多需要完成如下幾個步驟:
轉(zhuǎn)載于:https://www.cnblogs.com/dongblog/p/4013329.html
總結(jié)
以上是生活随笔為你收集整理的svn代码版本管理总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tree.Panel各项属性
- 下一篇: 学小易电脑端——大学生搜题平台