版本控制工具SVN和CVS

2021-08-25 06:31:03 字數 3871 閱讀 4889

cvs相信大家都聽說過,不過這個廣為使用的版本控制工具還有不少問題,包括中文支援和二進位制檔案的處理都有或多或少的問題。

現在好了,cvs的作者又為我們開發了svn。gnome和kde的開發團隊都已經換用svn了,您為什麼不試一下呢?

最基本的用法

建立**庫 svnadmin create /path/to/repos匯入資料 svn import /path/to/project file::///path/to/repos -m "initial import"匯出資料 svn checkout file::///path/to/repos提交更新 svn commit filename新增檔案 svn add刪除檔案 svn delele 複製檔案 svn copy移動檔案 svn move查詢狀態 svn status檢查不同 svn diff同步工作目錄 svn update合併** svn merge;svn resolvesvn的相關資源

這裡是svn的專案**。

<>的電子書。

這裡是正體中文的svn文件(只有部分被翻譯過來了)。

不能不提的cvs

雖然我已經轉入了svn的陣營,但是cvs仍然是應用最為廣泛的版本控制軟體之一。這裡收集了一些關於cvs的資源。

cvsd的安裝與配置

cvs使用簡介

什麼是cvs

cvs(cocurrent version systems,併發版本系統)是乙個c/s模式的版本控制系統,用於在軟體開發過程中記錄檔案版本,協調開發人員保證檔案同步,從而保證專案正確的進行並行開發,並支援版本回滾、bug 跟蹤和補丁生成。使用cvs可以有效地對軟體開發的源**和開發文件進行統一的管理和組織。

cvs的工作模式:

cvs的基本工作模式如下:

cvs伺服器(**文件庫) / | \ (版 本 同 步) / | \ 開發者1 開發者2 開發者3cvs在伺服器端維護**文件庫,不同的開發者在本地機器上建立對應**樹,並利用cvs保持本地**文件同**文件庫的一致。當由於多個開發者對檔案的同時修改造成本地與庫中的**檔案衝突時,cvs報告並協助解決衝突**的合併問題。普通開發者(非管理員)對cvs的使用流程如下所示:

check out(獲取) -------------------- merge(合併) | | ^ v v conflict(衝突) | modify(修改)-> update(更新) ---------------- ^ | | | no conflict(無衝突) | v update(更新) <- commit(提交) | v export(匯出)check out命令只需在開始建立本地**樹時使用一次,其後更新本地**則使用update命令。update命令比較伺服器和本地**庫的區別,並把本地**樹中過時的檔案自動更新。當完成對**的修改之後,在提交**之前同樣需要使用update命令,以獲取他人並行修改的的**。如果出現衝突(即對同一檔案同時進行了修改),cvs將在本地**中把兩者都保留並標記出來,要求開發者處理衝突。在衝突不存在或已解決的情況下,使用commit命令將伺服器**更新為本地**。cvs要求為更改提供注釋,並自動為更新的檔案處理版本編號。當軟體需要正式發布時,使用export命令匯出不包含cvs設定資訊的源**樹。

cvs的管理員還使用包括init, import, admin等命令對伺服器和**庫進行配置和設定。

cvs在linux下客戶端的使用

linux下的多種ide/editor,如emacs,eclipse等都對cvs提供了支援,但基於命令列的cvs操作是最為基本和靈活的。以下介紹cvs命令列的使用。

環境變數

cvsroot 指定**庫的位置 如果cvs**庫在本地機器上,可直接指定**庫的路徑,如: export cvsroot=/path/to/cvsroot 如果cvs**庫在伺服器上,則還需指定伺服器位置,通訊方式 及使用者等資訊,格式為: cvsroot=:method:[email protected]#port:/path/to/cvsroot 例如: export cvsroot=:ext:[email protected]:/cvs/horn 其中ext指定使用ssh協議,horn是有權訪問伺服器相應目錄的 使用者。 cvsroot的值可以在命令列上用-d選項重新指定,如: cvs -d /cvs/horn updatecvs_rsh 指定客戶端訪問伺服器的協議 使用ssh協議時,可如下設定: export cvs_rsh=ssh基本命令

cvs的命令列格式為:

cvs [options] command [options] filename具體引數可參考info cvs

cvs的命令如果不帶引數,則總是以當前所在目錄作為操作物件。

以下介紹基本命令:

init cvs**庫的初始化,管理員使用。 cvs -d /cvs/horn init 將/cvs/horn初始化為乙個**庫import 匯入乙個專案/模組,管理員使用。 cvs import -m "comments" project_name vendor_tag release_tag 執行後,會將當前目錄下所有檔案及目錄匯入到 /path/to/cvsroot/project_name 目錄下。 vender_tag: 開發商標記 release_tag: 初始版本標記 -m 引數如果不加,則cvs會自動啟動vi,要求輸入注釋。 如: cd /home/horn/blob-2.05/ cvs import blob hornworks initversioncheckout/co 從伺服器獲取**,在本地建立**樹 cvs checkout project_nameupdate/up 將本地檔案同步到最新的版本 cvs update filename 不指定檔名,cvs將當前目錄下所有子目錄下的檔案。如前 所述,在每天工作前和工作之後commit之前都應當update,以 保證本地**總是最新的,且和伺服器的**無衝突。commit/ci 將修改同步到cvs庫里 cvs commit -m "write some comments here" file_name cvs的很多動作都是通過cvs commit進行最後確認並修改的。 在確認的前,還需要使用者填寫修改注釋,以幫助其他開發人員 了解修改的原因。add 向專案中新增檔案/目錄 cvs add new_file 新增檔案之前應當首先建立檔案,之後使用cvs add新增。添 加檔案的操作只有經過cvs commit之後才真正被新增到**庫 中。對於,word文件等非純文字的專案,需要使用 cvs add -kb 選項按二進位制檔案方式匯入(k表示擴充套件選項,b表示 binary),否則有可能出現檔案被破壞的情況。remove/rm 從專案中刪除檔案 cvs remove file_name 刪除時,應當先將某個原始檔物理刪除後,再使用remove命令。 比如: rm file_name cvs remove file_name 然後commit確認刪除。 也可以加上-f引數將兩步合一: cvs remmove -f file_name cvs commit -m "why delete file" cvs不允許刪除目錄,空目錄在update時會依選項自動忽略。log/history 檢視修改歷史 cvs log file_namediff 檢視檔案不同版本的區別 cvs diff -r1.3 -r1.5 file_name 檢視1.3版本何1.5版本的區別 cvs diff file_name 檢視本地和庫中檔案的區別tag 標記版本號 cvs tag release_version cvs自動維護每個檔案的版本號,檔案每修改一次,則其版本 號自動增加。此版本號不能用作階段性發布使用。tag命令為 當前目錄下所有檔案標記乙個統一的發行版本號。 如: cd blob/ cvs tag 2.1.0-hornworks tag命令應當由專案負責人統一指定和使用。export 專案發布, 匯出不帶cvs目錄的原始檔 本地**樹的每個目錄下,cvs都建立了乙個cvs/目錄用於記 錄當前目錄和cvs庫之間的對應資訊。export可以匯出不包含 cvs目錄的**樹。 cvs export -r release project_name 匯出版本號標記為 release的** cvs export -d 20021023 project_name 匯出截至2002.10.23時最新的檔案

版本控制工具 SVN

學習svn的 svn入門使用 伺服器 tigris svn 客戶端 tortoise svn 伺服器的搭建 tigris svn server 1.6.5 2 建立中心庫 svnadmin create d share svnrepo 3 修改許可權配置 修改conf svnserve.conf 檔...

版本控制工具SVN

及時了解團隊中其他成員的進度 輕鬆比較不同版本間的細微差別 記錄每個檔案成長的每步細節,利於成功的服用 資料共享,避免以往拷貝檔案造成的版本混亂 人人為我,我為人人,所有成員維護的實際是同乙個版本庫,無需專人維護所有檔案的最新版本,系統工作,大大提高團隊工作效率,無論團隊成員分布在天涯海角 svn核...

版本控制CVS

cvs 具有以下功能 1.對 進行集中管理 大家都可以方便的看到所有人員的最新檔案,規範化了檔案的管理。2.記錄 所有的更改歷史 儲存了所有檔案的修改歷史,並可以建立分支 可以檢視以前任何的乙個版本或修改歷史。3.提供協作開發的功能 cvs不推薦使用 lock modify unlock 的序列的工...