轉載自 這裡
前言 :
這裡有一篇有關CVS的使用簡介,是我以前做項目時為初學者翻譯的,本著“夠用”的原則翻的,還有很多精華沒有翻出來,但作為一個入門進階是夠了.
- CVS 使用簡介
CVS 是RCS的前端工具,它是用於多用戶並行開發的版本控制工具,它的最大特點是使用了“copy-modify-merge”機製而不是“lock- modify-unlock”。 通過使用CVS生成一個存儲文件的倉庫(repository),存儲在倉庫中的每個目錄叫做模塊(module),在修改時將相應的模塊檢出到工作目錄中(working directory)生成對應的目錄,所有的修改都在工作目錄中完成,修改完成後再提交到倉庫中生成新的版本號,並加以保存.
CVS初始化 :
- 創建CVSROOT根目錄
編輯有關的環境變量,加入CVSROOT的定義(比如在/etc/bashrc 文件中加入下面兩行):
然後在相應位置開始創建CVSROOT
這時就會產生/usr/local/cvsroot/CVSROOT 目錄,這下面放著有關CVS的配置文件。 同時/usr/local/cvsroot/也作為文件倉庫存放所有的文件.
- 創建開發項目
如果從頭開始一個新的項目,就需要創建一個單獨的目錄,並把所有要使用的文件做一個有效的組織。 而如果在開始使用源文件的目錄之前就有了,則只需進入該目錄就行了.
這樣會生成/home/cvsroot/cvstest/c 目錄。 其中-m 用來指定註釋信息,如果後面在命令行不指定註釋信息,則會啟動缺省編輯器(vi)要求輸入註釋信息。 john, cvstest分別標識了廠商和發行標識.
注意,使用import命令會把當前目錄下的所有文件和目錄(包括子目錄)引入到文件倉庫中指定模塊(目錄)下.
命令簡介 :
- 檢出源文件
cvs checkout [-r rev][-D date][-d dir][-j merg1] [-j merg2] modules
使用下面的命令會檢出剛才生成的模塊,並在當前目錄下生成與文件倉庫中完全一樣的目錄結構 :
在當前路徑下生成的這個目錄就被稱為工作目錄,對源文件的所有修改都應該在這個目錄下完成,而絕對不允許去改動在文件倉庫中$CVSROOT 目錄下的文件.
- 刪除、增加、重命名文件和目錄
cvs add [-k kflags][-m message] files...
上述命令會加入一個新的文件到文件倉庫裡,但直到使用了提交命令它才會真正更新文件倉庫.
cvs remove [options] files
上述命令會從文件倉庫中刪除文件,但也要到提交之後才有作用.
例1 : 增加文件
例2 : 刪除文件
對於重命名的文件,可以先刪除再添加.
對於目錄的修改(重命名),可能需要修改cvs 管理文件,一般應該遵循以下步驟:
1) 確認所有有關的修改都已經提交;
2) 進入文件倉庫中要修改的模塊目錄,對相應的目錄進行修改(重命名或刪除)
- 提交源文件
cvs commit [-Rl][-m mesg] files
在檢出源文件之後,在工作目錄中對源文件進行的所有修改都必須在提交之後才能對文件倉庫中的源文件起作用,並且新的文件才能夠被分配一個新的版本號.
- 釋放工作目錄
cvs release –d SOURCE
這個命令會刪除工作目錄cvstest/c (建議在提交了修改的模塊後執行這一步), 它比使用rm –rf cvstest 正規!!
多用戶開發 :
在多用戶的情況下,如果不同用戶修改的是同一個文件的不同部分,則使用下面的命令就能進行版本合併(把檢出的文件與當前的最新版本合併):
cvs update
- 衝突解決
在有多個用戶對同一個文件進行修改時,如果修改了其中的相同部分,而修改後的內容如果有不同的話,出現衝突是不可避免的。 如果在CVS 文件倉庫中有一個文件test.c ,它的版本是1.4, 用戶A 先檢出該文件進行修改,而稍後有用戶B 檢出該文件進行修改,並提前提交成1.5, 而在用戶A再提交時就會出現衝突(如果文件內容不同的話),這時CVS會提示需要手工解決 :
提交時會提示有衝突,需要手工編輯,這時運行了$cvs update 之後再編輯test.c, 會看到 :
- 文件版本管理
cvs log [-lR][-r rev][-d date][-w login][files…]
使用上面的命令可以參看當前模塊或指定文件的所有歷史版本信息.
cvs annotate [-lR][-r rev|-D date] files
使用上面的命令可以參看指定文件(檢出之後)的所有修改信息
範例 : 檢驗 test/test.c 的修改訊息
使用下面的命令可以生成相對於一個指定主版本的分支版本
cvs rtag –b –r rev_root rev_branch file_name
使用上面的命令可以生成一個對應版本號的分支版本,由於CVS 版本號是用數字表示的,而且在同一個模塊下不同文件的版本完全可能是不同的,所以使用標識會更方便.
一個簡單範例如下 :
使用下面的命令可以看版本信息 :
cvs status [–vlR] files
範例執行結果如下 :
在遠程機器上使用CVS :
補充說明 :
* 架設 CVS 伺服器
This is a blog to track what I had learned and share knowledge with all who can take advantage of them
標籤
- [ 英文學習 ]
- [ 計算機概論 ]
- [ 深入雲計算 ]
- [ 雜七雜八 ]
- [ Algorithm in Java ]
- [ Data Structures with Java ]
- [ IR Class ]
- [ Java 文章收集 ]
- [ Java 代碼範本 ]
- [ Java 套件 ]
- [ JVM 應用 ]
- [ LFD Note ]
- [ MangoDB ]
- [ Math CC ]
- [ MongoDB ]
- [ MySQL 小學堂 ]
- [ Python 考題 ]
- [ Python 常見問題 ]
- [ Python 範例代碼 ]
- [心得扎記]
- [網路教學]
- [C 常見考題]
- [C 範例代碼]
- [C/C++ 範例代碼]
- [Intro Alg]
- [Java 代碼範本]
- [Java 套件]
- [Linux 小技巧]
- [Linux 小學堂]
- [Linux 命令]
- [ML In Action]
- [ML]
- [MLP]
- [Postgres]
- [Python 學習筆記]
- [Quick Python]
- [Software Engineering]
- [The python tutorial]
- 工具收集
- 設計模式
- 資料結構
- ActiveMQ In Action
- AI
- Algorithm
- Android
- Ansible
- AWS
- Big Data 研究
- C/C++
- C++
- CCDH
- CI/CD
- Coursera
- Database
- DB
- Design Pattern
- Device Driver Programming
- Docker
- Docker 工具
- Docker Practice
- Eclipse
- English Writing
- ExtJS 3.x
- FP
- Fraud Prevention
- FreeBSD
- GCC
- Git
- Git Pro
- GNU
- Golang
- Gradle
- Groovy
- Hadoop
- Hadoop. Hadoop Ecosystem
- Java
- Java Framework
- Java UI
- JavaIDE
- JavaScript
- Jenkins
- JFreeChart
- Kaggle
- Kali/Metasploit
- Keras
- KVM
- Learn Spark
- LeetCode
- Linux
- Lucene
- Math
- ML
- ML Udemy
- Mockito
- MPI
- Nachos
- Network
- NLP
- node js
- OO
- OpenCL
- OpenMP
- OSC
- OSGi
- Pandas
- Perl
- PostgreSQL
- Py DS
- Python
- Python 自製工具
- Python Std Library
- Python tools
- QEMU
- R
- Real Python
- RIA
- RTC
- Ruby
- Ruby Packages
- Scala
- ScalaIA
- SQLAlchemy
- TensorFlow
- Tools
- UML
- Unix
- Verilog
- Vmware
- Windows 技巧
- wxPython
訂閱:
張貼留言 (Atom)
[Git 常見問題] error: The following untracked working tree files would be overwritten by merge
Source From Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 # git clean -d -fx 方案2: 今天在服务器上 gi...
-
前言 : 為什麼程序管理這麼重要呢?這是因為: * 首先,本章一開始就談到的,我們在操作系統時的各項工作其實都是經過某個 PID 來達成的 (包括你的 bash 環境), 因此,能不能進行某項工作,就與該程序的權限有關了。 * 再來,如果您的 Linux 系統是個...
-
屬性 : 系統相關 - 檔案與目錄 語法 : du [參數] [檔案] 參數 | 功能 -a | 顯示目錄中個別檔案的大小 -b | 以bytes為單位顯示 -c | 顯示個別檔案大小與總和 -D | 顯示符號鏈結的來源檔大小 -h | Hum...
-
來源自 這裡 說明 : split 是 Perl 中非常有用的函式之一,它可以將一個字串分割並將之置於陣列中。若無特別的指定,該函式亦使用 RE 與 $_ 變數 語法 : * split /PATTERN/,EXPR,LIMIT * split /...
沒有留言:
張貼留言