山外筆記-工具框架】SVN版本控制系統

      網友投稿 939 2022-05-30

      【山外筆記-框架工具】SVN版本控制系統

      1、本文打印版-:[山外筆記-框架工具筆記]SVN版本控制工具-打印版.pdf

      2、SVN和TortoiseSVN在線中文文檔:http://svndoc.iusesvn.com/

      3、SVN教程-菜鳥教程:https://www.runoob.com/svn/svn-tutorial.html

      4、SVN中文手冊-:svnbook1.4中文手冊.pdf

      5、TortoiseSVN中文文檔-:TortoiseSVN-1.9.3-zh_CN中文使用手冊.pdf、TortoiseMerge-1.9.3-zh_CN.pdf

      6、TortoiseSVN安裝包:TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi

      7、TortoiseSVN語言包(中文):LanguagePack_1.13.1.28686-x64-zh_CN.msi

      本文重點內容:

      1、SVN概述

      2、SVN安裝

      3、SVN生命周期

      4、SVN服務端操作

      5、SVN客戶端操作

      6、TortoiseSVN 使用教程

      (1)SVN是Apache Subversion的縮寫,是一個開源的版本控制系統。

      (2)SVN在2000年由CollabNet Inc開發,現已發展成為Apache軟件基金會的一個項目。

      (3)SVN管理著隨時間改變的數據(比如代碼),這些數據放置在一個中央資料檔案庫(repository)中,這個檔案庫會記住每一次文件的變動,可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。

      (4)SVN管理源代碼以行為單位,只要不是修改同一行代碼,SVN都會自動合并兩種修改。如果是同一行,SVN 會提示文件沖突(Conflict),需要手動確認。

      (5)SVN相對于的RCS、CVS,采用了分支管理系統,設計目標就是取代CVS。

      (6)SVN源代碼地址:https://github.com/apache/subversion

      (1)repository(源代碼庫):源代碼統一存放的地方。

      (2)Checkout(提取):從版本庫創建一個工作副本到本地目錄。

      (3)Commit(提交):提交本地已修改的代碼到版本庫(repository)中。

      (4)Update (更新):更新本地工作副本,和版本庫同步。

      (1)目錄版本控制

      CVS只能跟蹤單個文件的歷史,但SVN能夠依時間跟蹤整個目錄的變動,目錄和文件都能進行版本控制。

      (2)真實的版本歷史

      無論是文件還是目錄,在SVN中可以增加(add)、刪除(delete)、復制(copy)和重命名(rename),所有的新加的文件都從一個新的、干凈的版本開始。

      (3)自動提交

      SVN允許一次提交,不管是單個還是多個文件都是作為一個整體提交的。允許開發人員以邏輯區間建立并提交變動,以防止當部分提交成功時出現的問題。

      (4)納入版本管控的元數據

      每一個文件與目錄都附有一組可以創建的屬性關鍵字和屬性值,即Key/Value。屬性是隨著時間來作版本管控的,就像文件內容一樣。

      (5)選擇不同的網絡層

      ① SVN有抽象的檔案庫存取概念, 可以很容易地實施新的網絡機制。

      ② SVN可以作為一個擴展模塊嵌入到Apache HTTP服務器中。

      ③ SVN還提供了許多重要功能: 如身份認證, 授權, 在線壓縮, 以及文件庫瀏覽等等。

      ④ SVN還有一個輕量級的獨立SVN服務器,使用自定義的通信協議,可通過ssh以tunnel方式使用。

      (6)一致的數據處理方式

      SVN使用二進制差異算法來異表示文件的差異,將文件以壓縮形式儲存在檔案庫中,而且文件差異是以兩個方向在網絡上傳輸的。

      (7)有效的分支(branch)與標簽(tag)

      SVN建立分支與標簽的方法, 就只是復制該項目, 使用的方法就類似于硬連接(hard-link)。

      (8)Hackability

      SVN沒有任何的歷史包袱,主要是一群共用的C程序庫,具有定義完善的API,便于維護。

      (1)原子提交:一次提交不管是單個還是多個文件,都是作為一個整體提交的。

      (2)重命名、復制、刪除文件等動作都保存在版本歷史記錄當中。

      (3)對于二進制文件,使用了節省空間的保存方法。

      (4)目錄也有版本歷史。整個目錄樹可以被移動或者復制,而且能夠保留全部版本記錄。

      (5)分支的開銷非常小。

      (6)優化數據庫訪問,減少了不必要的數據庫訪問。

      (1)-:

      (2)下載完成后,雙擊下載的安裝文件進行安裝,指定SVN的安裝目錄。

      (3)添加環境變量:將SVN安裝目錄中的bin目錄添加到path路徑中。

      (4)在CMD命令行窗口中輸入svnserve -help命令驗證是否安裝成功。

      (1)大多數GNU/Linux發行版系統自帶了SVN,使用svn --version命令檢查是否安裝。

      (2)如果SVN客戶端沒有安裝,將報告svn命令找不到的錯誤。

      (3)如果SVN客戶端已安裝,將報告SVN的版本號和編譯日期。

      (4)安裝命令:yum install -y subversion

      (1)大多數GNU/Linux發行版系統自帶了SVN,使用svn --version命令檢查是否安裝。

      (2)如果SVN客戶端沒有安裝,將報告svn沒有安裝。

      (3)如果SVN客戶端已安裝,將報告SVN的版本號和編譯日期。

      (4)安裝命令:apt-get install subversion

      (1)版本庫相當于一個集中的空間,用于存放開發者所有的工作成果代碼。

      (2)版本庫不僅能存放文件,還包括了每次修改的歷史,即每個文件的變動歷史。

      (3)Create操作:用來創建一個新的版本庫。

      (1)Checkout操作:用來從版本庫創建一個工作副本。

      (2)工作副本是開發者私人的工作空間,可以進行內容的修改,然后提交到版本庫中。

      (1)update操作:用來更新版本庫,將版本庫同步到工作副本。

      (2)版本庫一直保持最新的代碼,版本庫一有更新,本地工作副本就會過期。

      (1)Rename操作:可以更改文件/目錄的名字。

      (2)移動操作:用來將文件/目錄從一處移動到版本庫中的另一處。

      (3)添加操作:用來添加文件/目錄,但這些添加的文件目錄只是被添加進待變更列表中,直到執行了commit操作后才會成為版本庫的一部分。

      (4)刪除操作:用來將文件從工作副本中刪除掉,但該文件的實際刪除只是被添加到了待變更列表中,直到執行了commit操作后版本庫才會真正刪除。

      (1)在commit操作之前復查下在工作副本中所進行的變動是一個很好的習慣。

      (2)Status操作:列出工作副本中所進行的變動。

      (3)Status操作只是提供了一個變動列表,但并不提供變動的詳細信息。

      (4)對工作副本的任何改動都會成為待變更列表的一部分,Status 操作就是用來查看這個待變更列表。

      (5)diff操作:用來查看這些變動的詳細信息。

      (1)Revert操作:重置對工作副本的修改,將會銷毀待變更列表并將工作副本恢復到原始狀態。

      (2)Revert操作可以重置一個或多個文件/目錄,也可以重置整個工作副本。

      (1)Merge操作:自動處理可以安全合并的東西,其它的會被當做沖突。

      (2)Resolve操作:用來幫助用戶找出沖突并告訴版本庫如何處理這些沖突。

      (1)Commit操作:用來將更改從工作副本到版本庫。

      (2)Commit操作會修改版本庫的內容,其它開發者可以通過更新他們的工作副本來查看這些修改。

      【山外筆記-工具框架】SVN版本控制系統

      (3)Commit是一個原子操作,要么完全提交成功,要么失敗回滾,用戶不會看到成功提交一半的情況。

      (4)在提交之前,必須將文件/目錄添加到待變更列表中。列表中記錄了將會被提交的改動。

      (5)當提交的時候,通常會提供一個注釋來說明改動。這個注釋也會成為版本庫歷史記錄的一部分。

      (1)新建版本庫目錄:mkdir /opt/svn

      (2)創建版本庫:svnadmin create /opt/svn/svntest

      (3)啟動版本庫:svnserve -d -r 目錄--listen-port 端口號

      ① -r:配置方式決定了版本庫訪問方式。

      ② --listen-port:指定SVN監聽端口,不加此參數,SVN默認監聽3690

      (4)單庫svnserve方式:-r直接指定到版本庫

      ① 命令:svnserve -d -r /opt/svn/svntest

      ② 一個svnserve只能為一個版本庫工作。

      ③ authz配置文件中對版本庫權限的配置:

      [groups] admin=user1 dev=user2 [/]@admin=rw user2=r

      ④ URL:輸入svn://192.168.0.1/,即可訪問svntest版本庫

      (5)多庫svnserve方式:-r指定到版本庫的上級目錄

      ① 命令:svnserve -d -r /opt/svn

      ② 一個svnserve可以為多個版本庫工作。

      ③ authz配置文件中對版本庫權限的配置:

      [groups] admin=user1 dev=user2 [svntest:/]@admin=rw user2=r [svntest01:/]@admin=rw user2=r

      ④ 用[/],則表示所有庫的根目錄,即[/src]表示所有庫的根目錄下的src目錄。

      ⑤ URL:svn://192.168.0.1/svntest,即可訪問svntest版本庫。

      (1)新建版本庫目錄:mkdir /opt/svn

      (2)創建版本庫:svnadmin create /opt/svn/svntest

      (3)以多庫svnserve方式啟動SVN:svnserve -d -r /opt/svn,URL:svn://192.168.0.1/svntest01

      (4)配置目錄:/opt/svn/svntest/conf,包括svnserve.conf、passwd、authz配置文件。

      (5)SVN服務配置文件:svnserve.conf

      [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表示無訪問權限。默認值:read

      ② auth-access:控制鑒權用戶訪問版本庫的權限。默認值:write

      ③ password-db:指定用戶名口令文件,默認為conf目錄中的passwd。

      ④ authz-db:指定權限配置文件,實現以路徑為基礎的訪問控制。默認值:authz

      ⑤ realm:指定版本庫的認證域,即在登錄時提示的認證域名稱。

      ? 若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件。

      ? 默認值: UUID(Universal Unique IDentifier,全局唯一標示)。

      (6)用戶名口令文件passwd

      ① 用戶名口令文件由svnserve.conf的配置項password-db指定,默認為conf目錄中的passwd。

      ② passwd文件僅由一個[users]配置段組成。

      ③ [users]配置段配置行格式:<用戶名> = <口令>

      [users] admin = admin thinker = 123456

      (7)權限配置文件authz

      ① 權限配置文件由svnserve.conf的配置項authz-db指定,默認為conf目錄中的authz。

      ② authz配置文件由一個[groups]配置段和若干個版本庫路徑權限段組成。

      ③ [groups]配置段中配置行格式如下:<用戶組> = <用戶列表>

      ④ 版本庫路徑權限段的段名格式如下:[<版本庫名>:<路徑>]

      [groups] g_admin = admin,thinker [admintools:/] @g_admin = rw * = [test:/home/thinker] thinker = rw * = r

      (1)創建版本庫svntest,URL為svn://192.168.0.1/svntest,svn用戶user01有讀寫權限。

      (2)檢出命令:svn checkout svn://192.168.0.1/svntest --username=user01

      (3)查看檢出工作副本信息命令:svn info .

      (1)在工作副本中新建一個文件:echo “Hello,SVN” > HelloSVN.txt

      (2)查看工作副本狀態:svn status,狀態顯示為?,說明還未加到版本控制中。

      (3)添加到版本控制中:svn add HelloSVN.txt

      (4)查看工作副本狀態:svn status,狀態顯示為A,說明已添加到版本控制中。

      (5)提交到版本庫:svn commit -m "SVN readme."

      ① -m:備注本次提交的注釋信息,如果忽略了,SVN會打開一個文本編輯器來讓你輸入提交信息。

      ② 命令執行后會輸出提交的文件,并且修訂版本號自動增加了1。

      (1)沖突的原因:SVN管理源代碼以行為單位,只要不是修改同一行代碼,SVN都會自動合并兩種修改。如果是同一行,SVN 會提示文件沖突(Conflict),需要手動確認。

      (2)解決過程:假設版本庫版本號為10時,用戶A和用戶B同時對修改了svntest.txt文件中的同一行。

      ① 用戶A先提交了自己修改的文件到版本庫,提交成功后,版本庫版本號變更為11.

      ② 用戶B提交自己修改的文件到版本庫時,提交失敗,產生沖突。

      ③ 用戶A提交后版本號已經變更,用戶B的工作副本已經失效,SVN不會允許用戶B提交修改操作。

      ④ 用戶B先查看用戶A提交的修改和自己的修改的差異,執行svn diff命令。

      ⑤ 用戶B需要更新工作副本,執行svn update命令,可以指定更新到的版本,默認是最新的版本。

      ⑥ 工作副本和版本庫同步后,用戶B可以提交自己的修改到版本庫。

      (1)svn revert操作:撤銷任何文件或目錄里的局部更改,即對文件的修改。

      (2)撤銷文件修改的具體操作流程:

      ① 查看SVN狀態:執行svn status命令,顯示文件名及其狀態,狀態為M,說明文件被修改。

      ② 撤銷文件的修改:執行svn revert filename

      ③ 再次查看SVN狀態:執行svn status命令,沒有任何顯示,說明撤銷成功。

      (3)撤銷目錄修改操作同撤銷文件修改,只是恢復目錄用需要使用-R選項,即svn revert -R dirname。

      (4)恢復一個已經提交的版本

      ① 消除舊版本,必須撤銷舊版本里的所有更改然后提交一個新版本,這種操作叫做reverse merge。

      ② 命令:svn merge -r 22:21 filename,當前版本22,上一個版本21。

      通過svn命令可以根據時間或修訂號去除過去的版本,或者某一版本所做的具體的修改。

      ① 只查看特定的某兩個版本之間的信息:svn log -r 6:8

      ② 只查看某一個文件的版本修改信息:svn log file_path/filename

      ③ 只查看目錄的版本修改信息:svn log -v file_path

      ④ 顯示限定N條記錄的目錄信息:svn log -l N -v

      (2)svn diff:用來顯示特定修改的行級詳細信息。

      ① 比較工作副本接本地版本庫的修改:svn diff

      ② 比較工作副本與版本庫的修改:svn diff -r 3 filename

      ③ 比較版本庫與版本庫的修改:svn diff -r 2:3 filename,版本號之間用冒號分隔。

      (3)svn cat:查看在特定版本中的某文件的內容,執行svn cat -r 版本號 filename。

      (4)svn list:顯示一個目錄或某一版本存在的文件,執行svn list -r 版本號 dir_path。

      Branch分支就是trunk版(主干線)的一個copy版,也具有版本控制功能,而且和主干線相互獨立,最后可以通過合并功能,將分支合并到trunk上來,合并為一個項目。

      (1)在本地工作副本創建一個分支:svn copy trunk/ branch/mybranch

      (2)查看SVN狀態:svn status

      (3)提交新增的分支到版本庫:svn commit -m "add my_branch"

      (4)合并my_branch分支到trunk中:svn merge . ./branches/my_branch/

      SVN支持tag選項,可以給某一個具體版本的代碼一個標簽,主要用于項目開發中的里程碑,往往代表一個可以固定的完整的版本。

      (1)在本地工作副本創建一個tag分支:svn copy trunk/ tags/v1.0

      (2)查看SVN狀態:svn status

      (3)提交tag內容: svn commit -m "tags v1.0"

      TortoiseSVN是Subversion版本控制系統的一個免費開源GUI客戶端

      (1)-:https://tortoisesvn.net/downloads.html, 頁面里有語言包補丁的下載鏈接。

      (2)運行下載的 TortoiseSVN 安裝程序

      (3)運行下載的 TortoiseSVN 中文語言包

      (4)重啟電腦,確認TortoiseSVN安裝完成。

      (5)修改TortoiseSVN默認語言

      ① TortoiseSVN默認語言英文,可以通過設置修改成已安裝語言。

      ② 鼠標在桌面空白處右擊—>TortoiseSVN—>設置。

      (1)在本地新建一個目錄,進入新建的目錄.

      (2)創建版本庫:鼠標在空白右擊—>TortoiseSVN—>在此創建版本庫

      (3)版本庫創建完成后,目錄中會出現Server端的文件,和svnserve命令創建的一致。

      (1)在本地創建工作目錄,進入創建的目錄.

      (2)SVN檢出:鼠標在空白右擊,選擇 SVN檢出(checkout),彈出檢出會話框。

      ① 版本庫URL:repository(版本庫)的位置URL,即svn://192.168.0.1/svntest

      ② 檢出至目錄:本地創建的工作目錄路徑。

      ③ 檢出深度和版本默認(最新版)即可,點擊確定。

      ④ 檢出完成后,可以看到工作目錄里多了一個.svn的隱藏目錄。

      (1)svn update操作:鼠標在工作副本空白處右擊—>SVN 更新(U)

      (2)svn add操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>增加(A)

      (3)svn commit操作:鼠標在工作副本空白處右擊—>SVN 提交(C)

      (4)svn copy操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>分支/標簽(T)

      (5)svn merge操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>合并(M)

      (6)svn import操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>導入(I)

      (7)svn export操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>導出(X)

      (8)svn lock操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>獲取鎖定(K)

      (9)svn unlock操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>解除鎖定(K)

      (10)svn cleanup操作:鼠標在工作副本空白處右擊—> TortoiseSVN—>清理(C)

      SVN

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:基于華為云一站式智能IOT平臺快速打造行業解決方案(操作篇)
      下一篇:園區第三方認證類API概述及向導
      相關文章
      免费在线观看亚洲| 亚洲欧美自偷自拍另类视| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲成综合人影院在院播放| 亚洲精品在线观看视频| 亚洲国产精品久久久天堂| 亚洲熟女一区二区三区| 国产AV无码专区亚洲AWWW| 国产亚洲?V无码?V男人的天堂| 久久精品国产精品亚洲人人| 亚洲精品岛国片在线观看| 国产成人亚洲精品蜜芽影院| 国产精品日本亚洲777| 亚洲成av人在片观看| 亚洲精品视频在线看| 亚洲伊人久久综合中文成人网| 亚洲国产精品尤物yw在线| 亚洲精品NV久久久久久久久久| 亚洲人成人网站在线观看| 亚洲综合无码精品一区二区三区| 亚洲午夜久久久久妓女影院 | 亚洲情综合五月天| 人人狠狠综合久久亚洲婷婷| 亚洲VA成无码人在线观看天堂| 亚洲高清国产拍精品26U| 亚洲网站在线观看| 亚洲第一成年网站大全亚洲| 亚洲一卡二卡三卡| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 亚洲AV一宅男色影视| 久久亚洲AV无码精品色午夜| 亚洲日韩乱码中文无码蜜桃| 色在线亚洲视频www| 亚洲AV永久无码精品放毛片| 亚洲成a人无码av波多野按摩 | 亚洲精品综合久久中文字幕| 国产精品高清视亚洲精品| 亚洲av无码成人精品国产| 亚洲人成电影在线播放| 亚洲AV无码久久| 亚洲精品在线免费观看|