<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    SVN中tag branch trunk用法詳解

    本節主要講解一下SVN中tag branch trunk的用法,在SVN中Branch/tag在一個功能選項中,在使用中也往往產生混淆。這里就向大家簡單介紹一下,歡迎大家能和我一起學習SVN中tag branch trunk的用法。

    在實現上,branch和tag,對于svn都是使用copy實現的,所以他們在默認的權限上和一般的目錄沒有區別。至于何時用tag,何時用branch,完全由人主觀的根據規范和需要來選擇,而不是強制的(比如cvs)。一般情況下,tag,是用來做一個milestone的,不管是不是release,都是一個可用的版本。這里,應該是只讀的。更多的是一個顯示用的,給人一個可讀(readable)的標記。branch,是用來做并行開發的,這里的并行是指和trunk進行比較。比如,3.0開發完成,這個時候要做一個tag,tag_release_3_0,然后基于這個tag做release,比如安裝程序等。trunk進入3.1的開發,但是3.0發現了bug,那么就需要基于tag_release_3_0做一個branch,branch_bugfix_3_0,基于這個branch進行bugfix,等到bugfix結束,做一個tag,tag_release_3_0_1,然后,根據需要決定branch_bugfix_3_0是否并入trunk。對于svn還要注意的一點,就是它是全局版本號,其實這個就是一個tag的標記,所以我們經??梢钥吹?,什么什么release,基于xxx項目的2xxxx版本。就是這個意思了。但是,它還明確的給出一個tag的概念,就是因為這個更加的可讀,畢竟記住tag_release_1_0要比記住一個很大的版本號容易的多。

    branches:分枝
    SVN中tag branch trunk的用法,首先看一下branches的介紹。當多個人合作,可能有這樣的情況出現:John突然有個想法,跟原先的設計不太一致,可能是功能的添加或者日志格式的改進等等,總而言之,這個想法可能需要花一段時間來完成,而這個過程中,John的一些操作可能會影響Sally的工作,John從現有的狀態單獨出一個project的話,又不能及時得到Sally對已有代碼做的修正,而且獨立出來的話,John的嘗試成功時,跟原來的合并也存在困難。這時最好的實踐方法是使用branches。John建立一個自己的branch,然后在里面實驗,必要的時候從Sally的trunk里取得更新,或者將自己的階段成果匯集到trunk中。
    (svncopySourceURL/trunkDestinationURL/branchName-m"Creatingaprivatebranchofxxxx/trunk.")

    trunk:主干
    主干,一般來說就是開發的主要呆的地方,

    tag: 圖標
    在經過了一段時間的開發后,項目到達了一個里程碑階段,你可能想記錄這一階段的代碼的狀態,那么你就需要給代碼打上標簽。
    (svncpfile:///svnroot/mojavescripts/trunkfile:///svnroot/mojavescripts/tags/mirrorutils_rel_0_0_1-m"tagedmirrorutils_rel_0_0_1")另有一說,無所謂誰對誰錯。

    trunk:表示開發時版本存放的目錄,即在開發階段的代碼都提交到該目錄上。

    branches:表示發布的版本存放的目錄,即項目上線時發布的穩定版本存放在該目錄中。

    tags:表示標簽存放的目錄。

    在這需要說明下分三個目錄的原因,如果項目分為一期、二期、三期等,那么一期上線時的穩定版本就應該在一期完成時將代碼copy到branches上,這樣二期開發的代碼就對一期的代碼沒有影響,如新增的模塊就不會部署到生產環境上。而branches上的穩定的版本就是發布到生產環境上的代碼,如果用戶使用的過程中發現有bug,則只要在branches上修改該bug,修改完bug后再編譯branches上最新的代碼發布到生產環境即可。tags的作用是將在branches上修改的bug的代碼合并到trunk上時創建個版本標識,以后branches上修改的bug代碼再合并到trunk上時就從tags的version到branches最新的version合并到trunk,以保證前期修改的bug代碼不會再合并。

    -------------------------------------------------------------------------------------------
    介紹SVN中tag branch trunk用法時,一直以來用svn只是當作cvs,也從來沒有仔細看過文檔,直到今天用到,才去翻看svnbook文檔,慚愧

    需求一:
    有一個客戶想對產品做定制,但是我們并不想修改原有的svn中trunk的代碼。
    方法:
    用svn建立一個新的branches,從這個branche做為一個新的起點來開發
    svncopysvn://server/trunksvn://server/branches/ep-m"initep"
    Tip:
    如果你的svn中以前沒有branches這個的目錄,只有trunk這個,你可以用
    svnmkdirbranches新建個目錄

    需求二:
    產品開發已經基本完成,并且通過很嚴格的測試,這時候我們就想發布給客戶使用,發布我們的1.0版本
    svncopysvn://server/trunksvn://server/tags/release-1.0-m"1.0released"咦,這個和branches有什么區別,好像啥區別也沒有?
    是的,branches和tags是一樣的,都是目錄,只是我們不會對這個release-1.0的tag做修改了,不再提交了,如果提交那么就是branches

    需求三:
    有一天,突然在trunk下的core中發現一個致命的bug,那么所有的branches一定也一樣了,該怎么辦?
    svn-r148:149mergesvn://server/trunkbranches/ep其中148和149是兩次修改的版本號。SVN中tag branch trunk用法介紹完畢。

    posted on 2014-05-07 00:10 paulwong 閱讀(321) 評論(0)  編輯  收藏 所屬分類: SVN

    主站蜘蛛池模板: 一边摸一边爽一边叫床免费视频 | 亚洲欧洲日韩国产一区二区三区| 日韩在线免费视频| 日韩毛片免费一二三| 亚洲av无码成h人动漫无遮挡| 免费无码A片一区二三区| 色多多www视频在线观看免费| 久久久久久亚洲AV无码专区| 永久免费AV无码网站在线观看| 最近的2019免费中文字幕| 亚洲成年网站在线观看| 亚洲精品无码av人在线观看| 女人18毛片水真多免费播放| 国产色无码精品视频免费| 亚洲日韩精品无码AV海量| 亚洲第一极品精品无码久久| 国产美女精品视频免费观看| 99精品视频免费在线观看| 黄色毛片免费观看| 亚洲欧洲日本在线观看| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 亚洲日韩中文字幕无码一区| 亚洲成a人片77777kkkk| 俄罗斯极品美女毛片免费播放| 69av免费视频| 91精品全国免费观看青青| 亚洲AV无码成人精品区日韩| 亚洲国产一区在线观看| 久久久亚洲精品视频| 国产亚洲精品a在线观看| 国产美女无遮挡免费视频网站| 九九精品免费视频| 免费人成在线观看网站品爱网| 国产激情久久久久影院老熟女免费 | 18以下岁毛片在免费播放| 成人A毛片免费观看网站| 免费一级毛片在线播放视频免费观看永久 | 亚洲综合激情六月婷婷在线观看| 亚洲色成人WWW永久网站| 亚洲成a人一区二区三区| 国产真人无遮挡作爱免费视频|