Subversion简介
Subversion?
Subversion 是一個(gè) 免費(fèi)/開源 的?版本控制系統(tǒng)?(version control system, 簡(jiǎn)稱 VCS), 也就是說(shuō), Subversion 可以跨越時(shí)間對(duì)文件和目錄, 以及它們的修改進(jìn)行管理. 這就允許你恢復(fù) 數(shù)據(jù)的舊版本, 或檢查數(shù)據(jù)的修改歷史.?
?Subversion 的架構(gòu)
?
?
基本工作周期
Subversion 支持的特性與選項(xiàng)非常豐富, 但是能夠在日常工作中用到的卻很 少. 日常工作中最常用到的 Subversion 操作.
典型的工作周期就像:
更新工作副本.?這會(huì)用到命令?svn update.
修改.最常見的修改就是編輯已有文件的內(nèi)容, 但有時(shí)還要添加, 刪除, 復(fù)制和移動(dòng)文件或目錄 — 命令?svn add,?svn delete,?svn copy?和?svn move?負(fù)責(zé) 處理工作副本的結(jié)構(gòu)性調(diào)整.
審核修改.?用命令?svn status?和?svn diff?查看工作副本發(fā)生了哪些變化.
修正錯(cuò)誤.?人無(wú)完人, 在審核修改時(shí)用戶可 能會(huì)發(fā)現(xiàn)某些修改是不正確的. 有時(shí)候修正錯(cuò)誤最簡(jiǎn)單的方式是撤消所有的 修改, 重新開始. 命令?svn revert?可以把文件或目 錄恢復(fù)到修改前的樣子.
解決沖突 (合并其他人的修改).?當(dāng)一個(gè)用戶 正在修改文件時(shí), 其他人可能已經(jīng)把自己的修改提交到了服務(wù)器上. 為了防止 在提交修改時(shí), 由于工作副本過(guò)舊導(dǎo)致提交失敗, 用戶需要把其他人的修改 更新到本地, 用到的命令是?svn update. 如果命令 的執(zhí)行結(jié)果有沖突產(chǎn)生, 用戶需要用命令?svn resolve?解決沖突.
發(fā)布 (提交) 修改.?命令?svn commit?把工作副本的修改提交到倉(cāng)庫(kù)中, 如果修改 被接受, 其他用戶就可以看到這些修改.
?
基本用法:
出去上面那些,還有一下比較常用的如下:
在版本庫(kù)目錄下:? svn? ?+? ?help ,? import , list , checkout , status , log , cat , annonate , lock , changelist , copy , merge .
?
倉(cāng)庫(kù)的定義
如果站在文件瀏覽器 (例如 Windows 資源管理器) 或基于命令行的文件 系統(tǒng)導(dǎo)航工具來(lái)看, Subversion 倉(cāng)庫(kù)只是一個(gè)包含了眾多數(shù)據(jù)的普通目錄, 其中一些子目錄包含了人類可讀的配置文件, 還有些子目錄包含的是人類不可 讀的文件.?
基本組件:
# ls
conf db format hooks locks README.txt
?conf/? ?存放配置文件的目錄
db/? 該目錄包含了與所有版本化數(shù)據(jù)相關(guān)的數(shù)據(jù)
format??該文件描述了倉(cāng)庫(kù)的內(nèi)部組織結(jié)構(gòu). (目錄?db/?有時(shí)候也會(huì)有一個(gè)叫做?format?的文件, 這個(gè)?format?僅僅是在描述?db/?的內(nèi)容, 這兩個(gè)?format?之間并沒有關(guān)系.)
hooks/??該目錄包含了鉤子腳本模板和已安裝的鉤子腳本.
locks/??Subversion 用該目錄存放倉(cāng)庫(kù)的鎖文件, 鎖文件用于管理倉(cāng)庫(kù)的并發(fā) 訪問(wèn).
README.txt??包含了一小段內(nèi)容的文本文件, 文件的內(nèi)容僅僅是為了提醒計(jì)算機(jī) 用戶該文件所在的目錄是一個(gè) Subversion 倉(cāng)庫(kù).
創(chuàng)建倉(cāng)庫(kù)
創(chuàng)建 Subversion 倉(cāng)庫(kù)是一件非常簡(jiǎn)單的工作, 用到的命令是?svnadmin create.
$ # Create a repository $ svnadmin create /var/svn/repos $假設(shè)父目錄?/var/svn?已存在, 并且管理員對(duì)父 目錄擁有寫權(quán)限, 上面的命令在?/var/svn/repos?創(chuàng)建了一個(gè)新的倉(cāng)庫(kù), 使用的是默認(rèn)的后端存儲(chǔ)類型 (FSFS). 你還可以利用 選項(xiàng)?--fs-type?顯式地指定后端存儲(chǔ)類型, 該選項(xiàng)接受 的參數(shù)是?fsfs?或?bdb.
$ # Create an FSFS-backed repository $ svnadmin create --fs-type fsfs /var/svn/repos $ # Create a legacy Berkeley-DB-backed repository $ svnadmin create --fs-type bdb /var/svn/repos使用 svnadmin 遷移倉(cāng)庫(kù)數(shù)據(jù)
無(wú)論遷移倉(cāng)庫(kù)歷史是出于什么樣的原因,?svnadmin dump?和?svnadmin load?的用法都非常 簡(jiǎn)單直接.?svnadmin dump?按照 Subversion 的文件 系統(tǒng)轉(zhuǎn)儲(chǔ)格式, 輸出一段范圍內(nèi)的版本號(hào). 轉(zhuǎn)儲(chǔ)的結(jié)果會(huì)被打印到標(biāo)準(zhǔn)輸出, 而提示性的信息則會(huì)打印到標(biāo)準(zhǔn)錯(cuò)誤, 這就允許管理員把輸出重定向到文件 的同時(shí), 在終端窗口中查看命令的狀態(tài)輸出, 例如:
$ svnlook youngest myrepos 26 $ svnadmin dump myrepos > dumpfile * Dumped revision 0. * Dumped revision 1. * Dumped revision 2. …命令執(zhí)行結(jié)束時(shí), 你將得到一個(gè)文件 (在上面的例子里, 文件名是?dumpfile), 這個(gè)文件包含了在指定的版本號(hào)范圍 內(nèi), 存放在倉(cāng)庫(kù)中的所有數(shù)據(jù). 因?yàn)?svnadmin dump?從倉(cāng)庫(kù)中讀取版本號(hào)的過(guò)程和其他?“讀者”?(例如?svn checkout) 讀取倉(cāng)庫(kù)的過(guò)程是一樣的, 所以 可以在任意時(shí)刻, 安全地執(zhí)行?svnadmin dump.
與?svnadmin dump?配對(duì)的命令?svnadmin load?從標(biāo)準(zhǔn)輸入讀取 Subversion 倉(cāng)庫(kù)的轉(zhuǎn)儲(chǔ)文件, 把文件中 的版本號(hào)重放到目標(biāo)倉(cāng)庫(kù)中. 在命令的執(zhí)行過(guò)程中仍然會(huì)輸出提示性的信息, 不過(guò)這次是打印到標(biāo)準(zhǔn)輸出:
$ svnadmin load newrepos < dumpfile <<< Started new txn, based on original revision 1* adding path : A ... done.* adding path : A/B ... done.…倉(cāng)庫(kù)備份
對(duì)于 Subversion 倉(cāng)庫(kù)管理員來(lái)說(shuō), 有兩種備份策略—全量備份與 增量備份.
$ svnadmin hotcopy /var/svn/repos /var/svn/repos-backup得到的備份是一個(gè)完整的 Subversion 倉(cāng)庫(kù), 能夠在原倉(cāng)庫(kù)出現(xiàn)故障時(shí) 頂替上去.
移動(dòng)與刪除倉(cāng)庫(kù)
Subversion 倉(cāng)庫(kù)的所有數(shù)據(jù)都存放在倉(cāng)庫(kù)目錄中, 所以說(shuō)管理員可以使用 操作系統(tǒng)提供的命令—Unix 系統(tǒng)的?mv,?cp -a,?rm -r; Windows 系統(tǒng)的?move,?copy,?rmdir /s /q; 或其他圖形化文件瀏覽器提供的鼠標(biāo)和菜單操作— 實(shí)現(xiàn)倉(cāng)庫(kù)的移動(dòng), 重命名, 復(fù)制和刪除.
?
?
版本庫(kù)維護(hù)
svnadmin程序除了提供創(chuàng)建Subversion版本庫(kù)的功能,這個(gè)程序使你可以維護(hù)這些版本庫(kù)。
# svnadmin help general usage: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...] Type 'svnadmin help <subcommand>' for help on a specific subcommand. Type 'svnadmin --version' to see the program version and FS modules.Available subcommands:crashtestcreatedeltifydumphelp (?, h)hotcopylist-dblogslist-unused-dblogsloadlslockslstxnspackrecoverrmlocksrmtxnssetlogsetrevpropsetuuidupgradeverifysvnlook是Subversion提供的用來(lái)查看版本庫(kù)中不同的修訂版本和事務(wù)(正在產(chǎn)生的修訂版本)。這個(gè)程序不會(huì)修改版本庫(kù)內(nèi)容-這是個(gè)“只讀”的工具。
# svnlook help general usage: svnlook SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...] Note: any subcommand which takes the '--revision' and '--transaction'options will, if invoked without one of those options, act onthe repository's youngest revision. Type 'svnlook help <subcommand>' for help on a specific subcommand. Type 'svnlook --version' to see the program version and FS modules.Available subcommands:authorcatchangeddatediffdirs-changedfilesizehelp (?, h)historyinfolocklogpropget (pget, pg)proplist (plist, pl)treeuuidyoungest?
轉(zhuǎn)載于:https://www.cnblogs.com/zwj-linux/p/11599688.html
總結(jié)
以上是生活随笔為你收集整理的Subversion简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: fc安卓模拟器_fc模拟器pc版下载-f
- 下一篇: 微星武士 76 评测