日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SVN基本的理解和使用

發布時間:2024/4/30 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SVN基本的理解和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SVN

一 、 簡介

  • 開源的版本控制系統
  • 中央管理
  • SVN中的一些概念:
  • repository : 源碼同一存放的地方
  • checkout : 沒有源碼時 ,提取代碼
  • commit : 修改完之后 , 提交代碼
  • update : 更新代碼 , 獲取中央倉庫中最新的代碼
  • 實際開發流程:
  • 假設你已經checkout并且已經工作幾天了 : Update(獲取最新的代碼) –> 做出自己的修改 –> commit (讓大家看到你的修改) 。
  • 但是在實際操作過程中 , 可能出現兩個程序員在同一次提交中修改了同一行代碼代碼 , 造成了代碼沖突 ,需要手動確認 。 (根本原因是后提交的程序員獲取到的已經不是最新的源碼了 , 導致提交失效) 。
  • SVN的主要功能
  • 目錄版本控制
  • 依據時間跟蹤整個目錄的變動
  • 真實的版本歷史
  • 支持增加 、 刪除
  • 自動提交
  • 提交時保證操作的原子性 , 要么都提交成功 , 要么都提交不成功 。
  • 納入版本管控的元數據
  • 每一個文件或目錄都附有一組屬性關鍵字和屬性值相關聯 , 你可以創建并存儲任何你想要的key/value對 , 屬性是有時間來版本管控的 , 就像文件內容一樣
  • 選擇不同的網絡層
  • Subversion 可以作為一個擴展模塊嵌入到Apache HTTP 服務器中 。
  • 一致的數據處理方式
  • Subversion 使用二進制差異算法表示文件的差異 , 他對文字和視屏或音頻都一視同仁 。 在SVN 中文件都以壓縮形式存儲在檔案庫中 , 而且文件差異是以兩個方向在網絡上傳輸的 。
  • 有效的分支與標簽
  • 在分支與標簽的消耗上不一定與項目的大小成正比 , Subversion 的建立分支與標簽的方法, 就只是復制該項目 , 使用的方法就類似于硬連接 , 所以這些操作只會花費很小 , 而且是固定的時間 。
  • 擴展: 硬連接是對于同一文件系統的一個文件的連接,節點是文件存在的唯一標識,在文件系統中是唯一的,但在不同的文件系統則有可能重復。這樣的話,在不同文件系統中作鏈接時,是不能使用ln A B,應該用符號連接,即是軟連接,它只是包含了系統中一個完整的路徑名引用。硬連接就是記錄了文件的地址,你在文件管理器中看到的每個文件都是磁盤里文件的“硬連接”。當一個文件的所有硬連接都被刪除的時候,該文件占用的空間才可以被新加入的數據覆蓋。(來自百度 ,哈哈哈哈)。
  • Hackability
  • Subversion沒有任何的歷史包袱; 它主要是一群共用的 C 程序庫, 具有定義完善的API。這使得 Subversion 便于維護, 并且可被其它應用程序與程序語言使用。
  • Subversion 由于CVS之處
  • 原子提交 。 一次提交不管是單個還是多個文件 , 都作為一個整體提交 , 要么都提交成功 ,要么都失敗 。 這樣不會引起文件的不完整和損壞 。
  • 重命名 、 刪除 、 復制文件等動作都保存在版本歷史記錄中 。
  • 對于二進制文件使用了節省空間的保存方法 。 (只保存和上一版本不同之處)
  • 目錄也有版本歷史 。 整個目錄樹可以被移動或復制 , 操作簡單 , 而且能夠保存全部版本記錄 。
  • 分支開銷非常小
  • 優化過的數據庫訪問 , 使得一些操作不必訪問數據庫就可以得到 。 減少了不必要的網絡訪問 。
  • 二、 安裝

  • 三 、 SVN 生命周期

  • 創建版本庫
  • 版本庫相當于一個集中的空間 , 用于存放開發者所有的工作成果 。 版本不僅能存放文件 , 還包括了每次修改的歷史 , 即每個文件的 變動歷史 。
  • create操作是用來創建一個新的版本庫 , 大多數情況下這個操作只會執行一次 , 當創建一個新的版本庫的時候 , 你的SVN 會讓你提供一些信息來唯一標示版本庫, 例如:創建的位置 、 版本庫的名字 。
  • 檢出

  • checkout操作 檢出 , 是用來從版本庫中創建一個工作副本 , 工作副本是開發者私人的工作空間 , 可以進行內容的修改 , 然后提交到版本庫 。
  • 更新

  • update操作是用來更新版本庫的 , 這個操作將工作空間和版本庫同步 。 由于版本庫是有整個開發團隊公用的 , 所以當別人提交了代碼改動之后 ,你的工作副本 就會過期 。
  • 讓我們假設 Tom 和 Jerry 是一個項目的兩個開發者。他們同時從版本庫中檢出了最新的版本并開始工作。此時,工作副本是與版本庫完全同步的。然后,Jerry 很高效的完成了他的工作并提交了更改到版本庫中。
  • 此時 Tom 的工作副本就過期了。更新操作將會從版本庫中拉取 Jerry 的最新改動并將 Tom 的工作副本進行更新。
  • 執行變更
  • 當檢出之后 ,你就可以做很多操作來執行變更。編輯是最常用的操作。你可以編輯已存在的文件來,例如進行文件的添加/刪除操作。
  • 你可以添加文件/目錄。但是這些添加的文件目錄不會立刻成為版本庫的一部分,而是被添加進待變更列表中,直到執行了 commit 操作后才會成為版本庫的一部分。
  • 同樣地你可以刪除文件/目錄。刪除操作立刻將文件從工作副本中刪除掉,但該文件的實際刪除只是被添加到了待變更列表中,直到執行了 commit 操作后才會真正刪除。
  • Rename 操作可以更改文件/目錄的名字。”移動”操作用來將文件/目錄從一處移動到版本庫中的另一處。
  • 復查變化
  • 當你檢出工作副本或者更新工作副本后,你的工作副本就跟版本庫完全同步了。但是當你對工作副本進行一些修改之后,你的工作副本會比版本庫要新。在 commit 操作之前復查下你的修改是一個很好的習慣。
  • Status 操作列出了工作副本中所進行的變動。正如我們之前提到的,你對工作副本的任何改動都會成為待變更列表的一部分。Status 操作就是用來查看這個待變更列表。
  • Status 操作只是提供了一個變動列表,但并不提供變動的詳細信息。你可以用 diff 操作來查看這些變動的詳細信息。
  • 修復錯誤
  • 我們來假設你對工作副本做了許多修改,但是現在你不想要這些修改了,這時候 revert 操作將會幫助你。
  • Revert 操作重置了對工作副本的修改。它可以重置一個或多個文件/目錄。當然它也可以重置整個工作副本。在這種情況下,revert 操作將會銷毀待變更列表并將工作副本恢復到原始狀態。
  • 解決沖突
  • 合并的時候可能會發生沖突。Merge 操作會自動處理可以安全合并的東西。其它的會被當做沖突。例如,”hello.c” 文件在一個分支上被修改,在另一個分支上被刪除了。這種情況就需要人為處理。Resolve 操作就是用來幫助用戶找出沖突并告訴版本庫如何處理這些沖突。
  • 提交更改
  • Commit 操作是用來將更改從工作副本到版本庫。這個操作會修改版本庫的內容,其它開發者可以通過更新他們的工作副本來查看這些修改。
  • 在提交之前,你必須將文件/目錄添加到待變更列表中。列表中記錄了將會被提交的改動。當提交的時候,我們通常會提供一個注釋來說明為什么會進行這些改動。這個注釋也會成為版本庫歷史記錄的一部分。Commit 是一個原子操作,也就是說要么完全提交成功,要么失敗回滾。用戶不會看到成功提交一半的情況。
  • 四 、 SVN的啟動模式

    首先,在服務端進行SVN版本庫的相關配置手動新建版本庫目錄mkdir /opt/svn利用svn命令創建版本庫svnadmin create /opt/svn/runoob使用命令svnserve啟動服務svnserve -d -r 目錄 --listen-port 端口號-r: 配置方式決定了版本庫訪問方式。--listen-port: 指定SVN監聽端口,不加此參數,SVN默認監聽3690由于-r 配置方式的不一樣,SVN啟動就可以有兩種不同的訪問方式方式一:-r直接指定到版本庫(稱之為單庫svnserve方式)svnserve -d -r /opt/svn/runoob在這種情況下,一個svnserve只能為一個版本庫工作。authz配置文件中對版本庫權限的配置應這樣寫:[groups]admin=user1dev=user2[/]@admin=rwuser2=r使用類似這樣的URL:svn://192.168.0.1/ 即可訪問runoob版本庫方式二:指定到版本庫的上級目錄(稱之為多庫svnserve方式)svnserve -d -r /opt/svn這種情況,一個svnserve可以為多個版本庫工作authz配置文件中對版本庫權限的配置應這樣寫:[groups]admin=user1dev=user2[runoob:/]@admin=rwuser2=r[runoob01:/]@admin=rwuser2=r如果此時你還用[/],則表示所有庫的根目錄,同理,[/src]表示所有庫的根目錄下的src目錄。使用類似這樣的URL:svn://192.168.0.1/runoob 即可訪問runoob版本庫。

    五 、 創建版本庫

    使用svn命令創建資源庫[runoob@centos6 ~]# svnadmin create /opt/svn/runoob01 [runoob@centos6 ~]# ll /opt/svn/runoob01/ total 24 drwxr-xr-x 2 root root 4096 2016/08/23 16:31:06 conf drwxr-sr-x 6 root root 4096 2016/08/23 16:31:06 db -r--r--r-- 1 root root 2 2016/08/23 16:31:06 format drwxr-xr-x 2 root root 4096 2016/08/23 16:31:06 hooks drwxr-xr-x 2 root root 4096 2016/08/23 16:31:06 locks -rw-r--r-- 1 root root 229 2016/08/23 16:31:06 README.txt 進入/opt/svn/runoob01/conf目錄 修改默認配置文件配置,包括svnserve.conf、passwd、authz 配置相關用戶和權限。1、svn服務配置文件svnserve.confsvn服務配置文件為版本庫目錄中的文件conf/svnserve.conf。該文件僅由一個[general]配置段組成。[general] anon-access = none auth-access = write password-db = /home/svn/passwd authz-db = /home/svn/authz realm = tiku anon-access: 控制非鑒權用戶訪問版本庫的權限,取值范圍為"write"、"read"和"none"。 即"write"為可讀可寫,"read"為只讀,"none"表示無訪問權限。 缺省值:readauth-access: 控制鑒權用戶訪問版本庫的權限。取值范圍為"write"、"read"和"none"。 即"write"為可讀可寫,"read"為只讀,"none"表示無訪問權限。 缺省值:writeauthz-db: 指定權限配置文件名,通過該文件可以實現以路徑為基礎的訪問控制。 除非指定絕對路徑,否則文件位置為相對conf目錄的相對路徑。 缺省值:authzrealm: 指定版本庫的認證域,即在登錄時提示的認證域名稱。若兩個版本庫的 認證域相同,建議使用相同的用戶名口令數據文件。 缺省值:一個UUID(Universal Unique IDentifier,全局唯一標示)。2、用戶名口令文件passwd用戶名口令文件由svnserve.conf的配置項password-db指定,缺省為conf目錄中的passwd。該文件僅由一個[users]配置段組成。[users]配置段的配置行格式如下:<用戶名> = <口令> [users] admin = admin thinker = 123456 3、權限配置文件權限配置文件由svnserve.conf的配置項authz-db指定,缺省為conf目錄中的authz。該配置文件由一個[groups]配置段和若干個版本庫路徑權限段組成。[groups]配置段中配置行格式如下:<用戶組> = <用戶列表> 版本庫路徑權限段的段名格式如下:[<版本庫名>:<路徑>] [groups] g_admin = admin,thinker[admintools:/] @g_admin = rw * =[test:/home/thinker] thinker = rw * = r 本例是使用svnserve -d -r /opt/svn 以多庫svnserve方式啟動SVN,所以URL:svn://192.168.0.1/runoob01

    六 、 檢出操作

    svn checkout http://svn.server.com/svn/project_repo --username=user01 以上命令將產生如下結果:root@runoob:~/svn# svn checkout svn://192.168.0.1/runoob01 --username=user01 A runoob01/trunk A runoob01/branches A runoob01/tags Checked out revision 1. 檢出成功后在當前目錄下生成runoob01副本目錄。查看檢出的內容root@runoob:~/svn# ll runoob01/ total 24 drwxr-xr-x 6 root root 4096 Jul 21 19:19 ./ drwxr-xr-x 3 root root 4096 Jul 21 19:10 ../ drwxr-xr-x 2 root root 4096 Jul 21 19:19 branches/ drwxr-xr-x 4 root root 4096 Jul 21 19:19 .svn/ drwxr-xr-x 2 root root 4096 Jul 21 19:19 tags/ drwxr-xr-x 2 root root 4096 Jul 21 19:19 trunk/ 你想查看更多關于版本庫的信息,執行 info 命令。

    七、 SVN 解決沖突

    版本沖突原因: 假設 A、B 兩個用戶都在版本號為 100 的時候,更新了 kingtuns.txt 這個文件,A 用戶在修改完成之后提交 kingtuns.txt 到服務器, 這個時候提交成功,這個時候 kingtuns.txt 文件的版本號已經變成 101 了。同時B用戶在版本號為 100 的 kingtuns.txt 文件上作修改, 修改完成之后提交到服務器時,由于不是在當前最新的 101 版本上作的修改,所以導致提交失敗。我們已在本地檢出 runoob01 庫,下面我們將實現版本沖突的解決方法。我們發現 HelloWorld.html 文件存在錯誤,需要修改文件并提交到版本庫中。我們將 HelloWorld.html 的內容修改為 "HelloWorld! http://www.runoob.com/"。root@runoob:~/svn/runoob01/trunk# cat HelloWorld.html HelloWorld! http://www.runoob.com/ 用下面的命令查看更改:root@runoob:~/svn/runoob01/trunk# svn diff Index: HelloWorld.html =================================================================== --- HelloWorld.html (revision 5) +++ HelloWorld.html (working copy) @@ -1,2 +1 @@ -HelloWorld! http://www.runoob.com/ +HelloWorld! http://www.runoob.com/! 嘗試使用下面的命令來提交他的更改:root@runoob:~/svn/runoob01/trunk# svn commit -m "change HelloWorld.html first" Sending HelloWorld.html Transmitting file data .svn: E160028: Commit failed (details follow): svn: E160028: File '/trunk/HelloWorld.html' is out of date 這時我發現提交失敗了。因為此時,HelloWorld.html 已經被 user02 修改并提交到了倉庫。Subversion 不會允許 user01(本例使用的 svn 賬號)提交更改,因為 user02 已經修改了倉庫,所以我們的工作副本已經失效。為了避免兩人的代碼被互相覆蓋,Subversion 不允許我們進行這樣的操作。所以我們在提交更改之前必須先更新工作副本。所以使用 update 命令,如下:root@runoob:~/svn/runoob01/trunk# svn update Updating '.': C HelloWorld.html Updated to revision 6. Conflict discovered in file 'HelloWorld.html'. Select: (p) postpone, (df) show diff, (e) edit file, (m) merge,(mc) my side of conflict, (tc) their side of conflict,(s) show all options: mc Resolved conflicted state of 'HelloWorld.html' Summary of conflicts:Text conflicts: 0 remaining (and 1 already resolved) 這邊輸入"mc",以本地的文件為主。你也可以使用其選項對沖突的文件進行不同的操作。默認是更新到最新的版本,我們也可以指定更新到哪個版本svn update -r6 此時工作副本是和倉庫已經同步,可以安全地提交更改了root@runoob:~/svn/runoob01/trunk# svn commit -m "change HelloWorld.html second" Sending HelloWorld.html Transmitting file data . Committed revision 7.

    八 、 提交操作

    我們在庫本版中需要增加一個readme的說明文件。root@runoob:~/svn/runoob01/trunk# cat readme this is SVN tutorial. 查看工作副本中的狀態。root@runoob:~/svn/runoob01/trunk# svn status ? readme 此時 readme的狀態為?,說明它還未加到版本控制中。將文件readme加到版本控制,等待提交到版本庫。root@runoob:~/svn/runoob01/trunk# svn add readme A readme 查看工作副本中的狀態root@runoob:~/svn/runoob01/trunk# svn status A readme 此時 readme的狀態為A,它意味著這個文件已經被成功地添加到了版本控制中。為了把 readme 存儲到版本庫中,使用 commit -m 加上注釋信息來提交。如果你忽略了 -m 選項, SVN會打開一個可以輸入多行的文本編輯器來讓你輸入提交信息。root@runoob:~/svn/runoob01/trunk# svn commit -m "SVN readme." Adding readme Transmitting file data . Committed revision 8. svn commit -m "SVN readme." 現在 readme 被成功地添加到了版本庫中,并且修訂版本號自動增加了1。

    九、 版本回退

    當我們想放棄對文件的修改,可以使用 SVN revert 命令。svn revert 操作將撤銷任何文件或目錄里的局部更改。我們對文件 readme 進行修改,查看文件狀態。root@runoob:~/svn/runoob01/trunk# svn status M readme 這時我們發現修改錯誤,要撤銷修改,通過 svn revert 文件 readme 回歸到未修改狀態。root@runoob:~/svn/runoob01/trunk# svn revert readme Reverted 'readme' 再查看狀態。root@runoob:~/svn/runoob01/trunk# svn status root@runoob:~/svn/runoob01/trunk# 進行 revert 操作之后,readme 文件恢復了原始的狀態。 revert 操作不單單可以使單個文件恢復原狀, 而且可以使整個目錄恢復原狀。恢復目錄用 -R 命令,如下。svn revert -R trunk 但是,假如我們想恢復一個已經提交的版本怎么辦。為了消除一個舊版本,我們必須撤銷舊版本里的所有更改然后提交一個新版本。這種操作叫做 reverse merge。首先,找到倉庫的當前版本,現在是版本 22,我們要撤銷回之前的版本,比如版本 21。svn merge -r 22:21 readme

    十 、 查看歷史信息

    通過svn命令可以根據時間或修訂號去除過去的版本,或者某一版本所做的具體的修改。以下四個命令可以用來查看svn 的歷史:svn log: 用來展示svn 的版本作者、日期、路徑等等。svn diff: 用來顯示特定修改的行級詳細信息。svn cat: 取得在特定版本的某文件顯示在當前屏幕。svn list: 顯示一個目錄或某一版本存在的文件。1、svn log 可以顯示所有的信息,如果只希望查看特定的某兩個版本之間的信息,可以使用:root@runoob:~/svn/runoob01/trunk# svn log -r 6:8 ------------------------------------------------------------------------ r6 | user02 | 2016-11-07 02:01:26 +0800 (Mon, 07 Nov 2016) | 1 linechange HelloWorld.html first. ------------------------------------------------------------------------ r7 | user01 | 2016-11-07 02:23:26 +0800 (Mon, 07 Nov 2016) | 1 linechange HelloWorld.html second ------------------------------------------------------------------------ r8 | user01 | 2016-11-07 02:53:13 +0800 (Mon, 07 Nov 2016) | 1 lineSVN readme. ------------------------------------------------------------------------ 如果只想查看某一個文件的版本修改信息,可以使用 svn log 文件路徑。root@runoob:~/svn/runoob01# svn log trunk/HelloWorld.html ------------------------------------------------------------------------ r7 | user01 | 2016-11-07 02:23:26 +0800 (Mon, 07 Nov 2016) | 1 linechange HelloWorld.html second ------------------------------------------------------------------------ r6 | user02 | 2016-11-07 02:01:26 +0800 (Mon, 07 Nov 2016) | 1 linechange HelloWorld.html first. ------------------------------------------------------------------------ r5 | user01 | 2016-11-07 01:50:03 +0800 (Mon, 07 Nov 2016) | 1 line------------------------------------------------------------------------ r4 | user01 | 2016-11-07 01:45:43 +0800 (Mon, 07 Nov 2016) | 1 lineAdd function to accept input and to display array contents ------------------------------------------------------------------------ r3 | user01 | 2016-11-07 01:42:35 +0800 (Mon, 07 Nov 2016) | 1 line------------------------------------------------------------------------ r2 | user01 | 2016-08-23 17:29:02 +0800 (Tue, 23 Aug 2016) | 1 linefirst file ------------------------------------------------------------------------ 如果希望得到目錄的信息要加 -v。如果希望顯示限定N條記錄的目錄信息,使用 svn log -l N -v。root@runoob:~/svn/runoob01/trunk# svn log -l 5 -v ------------------------------------------------------------------------ r6 | user02 | 2016-11-07 02:01:26 +0800 (Mon, 07 Nov 2016) | 1 line Changed paths:M /trunk/HelloWorld.htmlchange HelloWorld.html first. ------------------------------------------------------------------------ r5 | user01 | 2016-11-07 01:50:03 +0800 (Mon, 07 Nov 2016) | 1 line Changed paths:M /trunk/HelloWorld.html------------------------------------------------------------------------ r4 | user01 | 2016-11-07 01:45:43 +0800 (Mon, 07 Nov 2016) | 1 line Changed paths:M /trunk/HelloWorld.htmlAdd function to accept input and to display array contents ------------------------------------------------------------------------ r3 | user01 | 2016-11-07 01:42:35 +0800 (Mon, 07 Nov 2016) | 1 line Changed paths:A /trunk/HelloWorld.html (from /trunk/helloworld.html:2)D /trunk/helloworld.html------------------------------------------------------------------------ r2 | user01 | 2016-08-23 17:29:02 +0800 (Tue, 23 Aug 2016) | 1 line Changed paths:A /trunk/helloworld.htmlfirst file ------------------------------------------------------------------------ 2、svn diff 用來檢查歷史修改的詳情。檢查本地修改 比較工作拷貝與版本庫 比較版本庫與版本庫 (1)、如果用 svn diff,不帶任何參數,它將會比較你的工作文件與緩存在 .svn 的"原始"拷貝。root@runoob:~/svn/runoob01/trunk# svn diff Index: rules.txt =================================================================== --- rules.txt (revision 3) +++ rules.txt (working copy) @@ -1,4 +1,5 @@ Be kind to others Freedom = Responsibility Everything in moderation -Chew with your mouth open (2)、比較工作拷貝和版本庫比較你的工作拷貝和版本庫中版本號為 3 的文件 rule.txt。svn diff -r 3 rule.txt (3)、比較版本庫與版本庫通過 -r(revision) 傳遞兩個通過冒號分開的版本號,這兩個版本會進行比較。比較 svn 工作版本中版本號2和3的這個文件的變化。svn diff -r 2:3 rule.txt 3、svn cat 如果只是希望檢查一個過去版本,不希望查看他們的區別,可使用svn catsvn cat -r 版本號 rule.txt 這個命令會顯示在該版本號下的該文件內容4、svn list svn list 可以在不下載文件到本地目錄的情況下來察看目錄中的文件:$ svn list http://192.168.0.1/runoob01 README branches/ clients/ tags/

    十一、 分支

    Branch 選項會給開發者創建出另外一條線路。當有人希望開發進程分開成兩條不同的線路時,這個選項會非常有用。比如項目 demo 下有兩個小組,svn 下有一個 trunk 版。由于客戶需求突然變化,導致項目需要做較大改動,此時項目組決定由小組 1 繼續完成原來正進行到一半的工作(某個模塊),小組 2 進行新需求的開發。那么此時,我們就可以為小組2建立一個分支,分支其實就是 trunk 版(主干線)的一個copy版,不過分支也是具有版本控制功能的,而且是和主干線相互獨立的,當然,到最后我們可以通過(合并)功能,將分支合并到 trunk 上來,從而最后合并為一個項目。我們在本地副本中創建一個 my_branch 分支。root@runoob:~/svn/runoob01# ls branches tags trunk root@runoob:~/svn/runoob01# svn copy trunk/ branches/my_branch A branches/my_branch root@runoob:~/svn/runoob01# 查看狀態:root@runoob:~/svn/runoob01# svn status A + branches/my_branch A + branches/my_branch/HelloWorld.html A + branches/my_branch/readme 提交新增的分支到版本庫。root@runoob:~/svn/runoob01# svn commit -m "add my_branch" Adding branches/my_branch Replacing branches/my_branch/HelloWorld.html Adding branches/my_branch/readmeCommitted revision 9. 接著我們就到 my_branch 分支進行開發,切換到分支路徑并創建 index.html 文件。root@runoob:~/svn/runoob01# cd branches/my_branch/ root@runoob:~/svn/runoob01/branches/my_branch# ls HelloWorld.html index.html readme 將 index.html 加入版本控制,并提交到版本庫中。root@runoob:~/svn/runoob01/branches/my_branch# svn status ? index.html root@runoob:~/svn/runoob01/branches/my_branch# svn add index.html A index.html root@runoob:~/svn/runoob01/branches/my_branch# svn commit -m "add index.html" Adding index.html Transmitting file data . Committed revision 10. 切換到 trunk,執行 svn update,然后將 my_branch 分支合并到 trunk 中。 root@runoob:~/svn/runoob01/trunk# svn merge ../branches/my_branch/ --- Merging r10 into '.': A index.html --- Recording mergeinfo for merge of r10 into '.':G . 此時查看目錄,可以看到 trunk 中已經多了 my_branch 分支創建的 index.html 文件。root@runoob:~/svn/runoob01/trunk# ll total 16 drwxr-xr-x 2 root root 4096 Nov 7 03:52 ./ drwxr-xr-x 6 root root 4096 Jul 21 19:19 ../ -rw-r--r-- 1 root root 36 Nov 7 02:23 HelloWorld.html -rw-r--r-- 1 root root 0 Nov 7 03:52 index.html -rw-r--r-- 1 root root 22 Nov 7 03:06 readme 將合并好的 trunk 提交到版本庫中。root@runoob:~/svn/runoob01/trunk# svn commit -m "add index.html" Adding index.html Transmitting file data . Committed revision 11.

    十二 、 標簽

    版本管理系統支持 tag 選項,通過使用 tag 的概念,我們可以給某一個具體版本的代碼一個更加有意義的名字。Tags 即標簽主要用于項目開發中的里程碑,比如開發到一定階段可以單獨一個版本作為發布等,它往往代表一個可以固定的完整的版本,這跟 VSS 中的 Tag 大致相同。我們在本地工作副本創建一個 tag。root@runoob:~/svn/runoob01# svn copy trunk/ tags/v1.0 A tags/v1.0 上面的代碼成功完成,新的目錄將會被創建在 tags 目錄下。root@runoob:~/svn/runoob01# ls tags/ v1.0 root@runoob:~/svn/runoob01# ls tags/v1.0/ HelloWorld.html readme 查看狀態。root@runoob:~/svn/runoob01# svn status A + tags/v1.0 提交tag內容。root@runoob:~/svn/runoob01# svn commit -m "tags v1.0" Adding tags/v1.0 Transmitting file data .. Committed revision 14.

    總結

    以上是生活随笔為你收集整理的SVN基本的理解和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。