溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux中的cvs是什么

發(fā)布時(shí)間:2022-07-21 14:01:22 來(lái)源:億速云 閱讀:130 作者:iii 欄目:建站服務(wù)器

這篇文章主要介紹“l(fā)inux中的cvs是什么”,在日常操作中,相信很多人在linux中的cvs是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”linux中的cvs是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

在linux中,cvs全稱(chēng)“Concurrent Version System”,中文意思為“代碼版本控制軟件”,它是一種GNU軟件包,主要用于在多人開(kāi)發(fā)環(huán)境下源碼的維護(hù)。CVS可以維護(hù)任意文檔的開(kāi)發(fā)和使用,例如共享文件的編輯修改,而不僅僅局限于程序設(shè)計(jì);CVS維護(hù)的文件類(lèi)型可以是文本類(lèi)型也可以是二進(jìn)制類(lèi)型。CVS基于客戶端/服務(wù)器的行為使其可容納多個(gè)用戶。

本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。

linux中的cvs

CVS(Concurrent Versions System,代碼版本控制軟件),是一種GNU軟件包,主要用于在多人開(kāi)發(fā)環(huán)境下源碼的維護(hù)。與它相類(lèi)似的代碼版本控制軟件有subversion。多個(gè)開(kāi)發(fā)人員通過(guò)一個(gè)中心版本控制系統(tǒng)來(lái)記錄文件版本,從而達(dá)到保證文件同步的目的。CVS版本控制系統(tǒng)是一種GNU軟件包,主要用于在多人開(kāi)發(fā)環(huán)境下的源碼的維護(hù)。但是由于之前CVS編碼的問(wèn)題,大多數(shù)軟件開(kāi)發(fā)公司都使用SVN替代了CVS。

Concurrent有并發(fā)的、協(xié)作的、一致的等含義。實(shí)際上CVS可以維護(hù)任意文檔的開(kāi)發(fā)和使用,例如共享文件的編輯修改,而不僅僅局限于程序設(shè)計(jì)。CVS維護(hù)的文件類(lèi)型可以是文本類(lèi)型也可以是二進(jìn)制類(lèi)型。

CVS用Copy-Modify-Merge(拷貝、修改、合并)變化表支持對(duì)文件的同時(shí)訪問(wèn)和修改。它明確地將源文件的存儲(chǔ)和用戶的工作空間獨(dú)立開(kāi)來(lái),并使其并行操作。

CVS基于客戶端/服務(wù)器的行為使其可容納多個(gè)用戶。這一特性使得CVS成為位于不同地點(diǎn)的人同時(shí)處理數(shù)據(jù)文件(特別是程序的源代碼)時(shí)的首選。

工作思路

在一臺(tái)服務(wù)器上建立一個(gè)源代碼庫(kù),庫(kù)里可以存放許多不同項(xiàng)目的源程序。由源代碼庫(kù)管理員統(tǒng)一管理這些源程序。每個(gè)用戶在使用源代碼庫(kù)之前,首先要把源代碼庫(kù)里的項(xiàng)目文件下載到本地,然后用戶可以在本地任意修改,最后用CVS命令進(jìn)行提交,由CVS源代碼庫(kù)統(tǒng)一管理修改。這樣,就好像只有一個(gè)人在修改文件一樣,既避免了沖突,又可以做到跟蹤文件變化等。

CVS是并發(fā)版本系統(tǒng)(Concurrent Versions System)的意思,主流的開(kāi)放源碼網(wǎng)絡(luò)透明的版本控制系統(tǒng)。CVS對(duì)于從個(gè)人開(kāi)發(fā)者到大型、分布團(tuán)隊(duì)都是有用的。

它的客戶機(jī)/服務(wù)器存取方法使得開(kāi)發(fā)者可以從任何因特網(wǎng)的接入點(diǎn)存取最新的代碼。它的無(wú)限制的版本管理檢出(check out:注1)的模式避免了通常的因?yàn)榕潘鼨z出模式而引起的人工沖突。它的客戶端工具可以在絕大多數(shù)的平臺(tái)上使用。

CVS被應(yīng)用于流行的開(kāi)放源碼工程中,像Mozilla,GIMP,XEmacs,KDE和GNOME等。那么它到底怎么樣。

你可能會(huì)說(shuō),它非常棒,但是對(duì)于"我"來(lái)說(shuō)它能做什么。首先,基本的 :一個(gè)版本控制系統(tǒng)保持了對(duì)一系列文件所作改變的歷史記錄。對(duì)于一個(gè)開(kāi)發(fā)者來(lái)說(shuō),那就意味著在你對(duì)一個(gè)程序所進(jìn)行開(kāi)發(fā)的整個(gè)期間,能夠跟蹤對(duì)其所作的所有改動(dòng)的痕跡。對(duì)你來(lái)說(shuō),有沒(méi)有出現(xiàn)過(guò)由于在命令行上按錯(cuò)鍵而導(dǎo)致一天的工作都白費(fèi)的情況呢。版本控制系統(tǒng)給了你一個(gè)安全的網(wǎng)絡(luò)。

版本控制系統(tǒng)對(duì)任何人都有用,真的。(畢竟,誰(shuí)不愿意使用一個(gè)安全的網(wǎng)絡(luò)呢。)它們經(jīng)常被軟件開(kāi)發(fā)團(tuán)隊(duì)使用。在團(tuán)隊(duì)中工作的開(kāi)發(fā)者需要能夠調(diào)整他們的各自的修改;一個(gè)集中式版本控制系統(tǒng)允許那樣做。

代碼調(diào)整

在傳統(tǒng)的版本控制系統(tǒng)中,一個(gè)開(kāi)發(fā)者檢出一個(gè)文件,修改它,然后將其登記回去。檢出文件的開(kāi)發(fā)者擁有對(duì)這個(gè)文件修改的排它權(quán)。沒(méi)有其它的開(kāi)發(fā)者可以檢出這個(gè)文件-- 并且只有檢出那個(gè)文件的開(kāi)發(fā)者可以登記(check in:注2)所做的修改。(當(dāng)然對(duì)于管理員有很多方法可以超越這個(gè)限制。)

想一下排它的檢出可能會(huì)如何工作:Bob的兄弟檢出 foo.java以便加入注釋?zhuān)瑢?xiě)好代碼后他什么也沒(méi)做。然后他去吃午飯了。Bob吃完午飯后,發(fā)現(xiàn)他的老板所指給他的一個(gè)bug在 foo.java里。他試圖簽出 foo.java … 但是版本控制系統(tǒng)不允許他這樣做,因?yàn)樗男值芤呀?jīng)把它簽出了。Bob不得不等著他的兄弟吃完午飯回來(lái)(在這個(gè)"好"日子用了兩個(gè)小時(shí)),他才可以修正bug。

在一個(gè)大型的開(kāi)放源碼工程中,因?yàn)殚_(kāi)發(fā)者可能在任意的時(shí)區(qū)工作得很晚,給予一個(gè)開(kāi)發(fā)者阻止任意地方的其它開(kāi)發(fā)者繼續(xù)處理任意文件的能力很明顯無(wú)法運(yùn)轉(zhuǎn)。他們最終將因?yàn)椴荒軌蛟谒麄兿胍臅r(shí)候開(kāi)展項(xiàng)目而感到厭煩。

CVS通過(guò)它的無(wú)限制的簽出模式解決了這個(gè)問(wèn)題。簽出一個(gè)文件并不給定開(kāi)發(fā)者對(duì)那個(gè)文件的排它權(quán)。其它的開(kāi)發(fā)者也可以對(duì)其檢出,進(jìn)行他們自己的修改,并且將其登記回去。

"等一下"你可能會(huì)說(shuō)。"但是后面的登記不是會(huì)覆蓋前面的嗎"回答是不會(huì)。詳細(xì)地回答就是當(dāng)多個(gè)開(kāi)發(fā)者對(duì)同一個(gè)文件作了修改CVS會(huì)檢測(cè),并且自動(dòng)合并那些改變。

哇噢。自動(dòng)的,不用擔(dān)心 -- CVS 會(huì)很小心,并且將會(huì)自動(dòng)合并那些只要不是對(duì)代碼的同一行所作的改動(dòng)。如果CVS不能安全的處理這些改動(dòng),開(kāi)發(fā)者將不得不手工合并它們。從此去往何處。

有大量在許多平臺(tái)上可用的CVS附加工具,它們給CVS增加了功能或使得CVS更容易使用。

使用好處

  • 修改軟件時(shí)可能會(huì)不知不覺(jué)混進(jìn)一些bug,而且可能過(guò)了很久你才會(huì)察覺(jué)到它們的存在。有了 cvs,你可以很容易地恢復(fù)舊版本,并從中看出到底是哪個(gè)修改導(dǎo)致了這個(gè)bug。有時(shí)這是很有用的。

  • cvs 用一種聰明的辦法把一個(gè)文件的所有版本保存在一個(gè)文件里,僅僅保存不同版本之間的差異。

  • cvs 最初由 Dick Grune 在 1986 年 12 月以 shell腳本的形式發(fā)布在 comp.sources.unix 的新聞組第 6 卷里;1989 年 4 月,Brian Berliner 設(shè)計(jì)了 cvs 并編寫(xiě)了代碼。之后 Jeff Polk 幫助 Brian 設(shè)計(jì)了 cvs 模塊和銷(xiāo)售商分支支持。

  • cvs 不能指導(dǎo)你如何構(gòu)造什么。它只是將你所設(shè)計(jì)的一種樹(shù)結(jié)構(gòu)文件保存下來(lái)以備恢復(fù)之用。

  • cvs 不能決定如何在一個(gè)檢出工作目錄使用磁盤(pán)空間。如果你在每一個(gè)目錄中都寫(xiě)下 Makefile 或腳本,且必須知道其它一切的相對(duì)位置,有時(shí)不得不檢出整個(gè)倉(cāng)庫(kù)。

  • 如果你將你的工作模塊化,并且建立了一個(gè)共享文件的 build 系統(tǒng)(通過(guò)links,mounts,Makefiles 里的 VPATH 等),你就可以隨意安排磁盤(pán)的使用。

  • 你應(yīng)該在 cvs 下放一個(gè)工具來(lái)支持這樣一個(gè)構(gòu)造系統(tǒng)(腳本、Makefile 等等)。

  • 有些變化發(fā)生在 cvs 范圍之外時(shí),要想想什么文件需要重建。一個(gè)傳統(tǒng)的方法是用 make 來(lái)構(gòu)造,并用一些自動(dòng)化的工具來(lái)產(chǎn)生 make 所用的相關(guān)文件。

到此,關(guān)于“l(fā)inux中的cvs是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI