相對于傳統(tǒng)的版本控制,具有如下優(yōu)點:
更輕松的管理。傳統(tǒng)的版本控制系統(tǒng)使用集中式的 repository,一些和 repository相關(guān)的管理就只能由管理員一個人進行。由于采用了分布式的模型,Mercurial 中就沒有這樣的困擾,每個用戶管理自己的 repository,管理員只需協(xié)調(diào)同步這些repository。 更健壯的系統(tǒng)。分布式系統(tǒng)比集中式的單服務(wù)器系統(tǒng)更健壯,單服務(wù)器系統(tǒng)一旦服務(wù)器出現(xiàn)問題整個系統(tǒng)就不能運行了,分布式系統(tǒng)通常不會因為一兩個節(jié)點而受到影響。 對網(wǎng)絡(luò)的依賴性更低。由于同步可以放在任意時刻進行,Mercurial 甚至可以離線進行管理,只需在有網(wǎng)絡(luò)連接時同步。
Revision
在使用 Mercurial 的系統(tǒng)中每個改動隔離在各自的 repository 里,既避免把不相關(guān)的代碼混雜起來, 又便于一個接一個的測試每一部分工作,用戶做的每個改動稱為一個 revision。一般會有一個所有用戶都可以訪問得到的 repository 保存了項目的“主要”版本,工作repository 是用戶自己做事情的地方,實現(xiàn)新的特性,修改漏洞,重構(gòu),實驗等,當(dāng)完成改變后,你可以 push 到共用的 repositor y中,即完成了一個 revision。
Changeset
一個或多個文件的改變集合在一起形成一個邏輯單元,稱為 changeset。每一個 changeset由兩部分內(nèi)容描述,版本號和 changeset 標(biāo)識,例如:changeset: 207:58e4906e69e3
冒號前面的數(shù)字代表版本號,它用來標(biāo)識本地 changeset。這個版本號只有在用戶的本地repository 中才有意義。冒號后面的那個很長的十六進制串是 changeset標(biāo)識, 它是確定changeset的全局唯一標(biāo)識符, 在所有包含這個 changese 的 repository 中都相同。多個用戶之間討論changeset,一般使用這個 changeset 標(biāo)識,而不是上面說的版本號,因為完全有可能每個用戶的 repository 中同樣的 changeset 版本號不同。
Head
Head 表示 repository 中每個分支最新的 revision,通常在合并幾個分支時會用到這個概念。
Tip
Tip 是最新的一個 changeset 的版本號的一個別名。在命令中任何使用版本號的地方都可以使用 tip 來代替最新的 changeset的版本號。Tip在各個repository中是不同的,同時一個repository 中只有一個 tip。
Log
Log 命令按時間順序從近到遠(yuǎn)的記錄著在 repository 中發(fā)生的每一次事件??梢酝ㄟ^指定-v診斷輸出選項來獲得更多更詳細(xì)的歷史信息,或者指定—debug選項來獲得歷史信息中的一切細(xì)節(jié)。
Mercurial通過hg命令加上關(guān)鍵字來進行操作,可以遠(yuǎn)程同步、上傳代碼。
用法
拷貝(同步)源碼并提交修改:
$ hg clone repository (這里repository是源碼的地址)
$ cd hello
$ (edit files)
$ hg add (new files)
$ hg commit -m 'My changes'
$ hg push
創(chuàng)建新的hg項目,并提交:
$ hg init (project-directory)
$ cd (project-directory)
$ (add some files)
$ hg add
$ hg commit -m 'Initial commit'
Mercurial - Spectre
最近更新: 6.43b
基本操作
以下使用大多基于命令行形式,版本是1.2.11
因為本地即是版本庫的服務(wù)端也是版本庫的客戶端,所以首先得區(qū)分好版本庫和工作目錄兩個概念,版本庫存放了所有的版本,工作目錄只是某個特定的版本,這個概念同svn是一致的,只是svn的版本庫不在本地,而在集中的一臺服務(wù)器上。
hg init創(chuàng)建新倉庫,版本庫的文件放在一個.hg的文件夾下面
hg add添加未版本化的文件
hg commit提交修改,使用-m 填寫comments,同svn是一樣的
hg tip查看當(dāng)前版本庫的最新版本,注意:不是當(dāng)前工作目錄的最新版本。tip是版本庫最新版本的意思
hg parents查看當(dāng)前工作目錄的最新版本,如果這個版本有多個parent,會顯示出來,如果沒有則不顯示。parent是指某個版本的前一個版本,如果某個版本通過 兩個版本merge而來,則會出現(xiàn)多個parents。mercurial還不支持超過兩個的parents,也就是說只能將版本兩個兩個的合并,合并3 個版本需要操作2次,合并4個版本需要操作3次,依次類推,如果碰到8個版本需要合并,則需要合并7次...
hg clone克隆一個版本庫到本地,當(dāng)項目開始的時候,建議在一臺電腦上init項目后,然后大家從他那clone出來,而不是各自init。
hg pull從另一個版本庫更新版本到本地
hg push將本地版本庫更新到其他版本庫中,其他版本庫需要開通ssh服務(wù),Windows下需要cygwin來啟動ssh,linux下用openssh實現(xiàn)。Windows客戶端連接ssh服務(wù)器時,需要在mercurial.ini的ui段配置,如下
[ui]
ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe"
putty.exe 無法配合hg使用。
TortoisePlink.exe對于 ssh://xx/ 之后的路徑需要再加一個"/" 以示根路徑,如下:
ssh://192.168.107.129//home/arthur/hg/hello
hg incoming將本地版本庫同其他版本庫進行比較,看看有哪些changeset在其他版本庫中可以pull過來
hg outgoing將本地版本庫同其他版本庫進行比較,看看有哪些changeset可以push到其他版本庫中
hg update更新工作目錄,默認(rèn)參數(shù)是tip,參數(shù)也可以是版本號、tag名字、branch名字。svn中的切換branch/tag通過這個命令來實現(xiàn)
hg tag制定一個永久的版本號,tag存放在.hgtags文件中,這個文件也需要版本化
hg branch顯示當(dāng)前branch,或者新建一個branch,默認(rèn)的branch名字是default。
hg diff對比版本間的差異
hg merge合并版本到當(dāng)前工作目錄,hg pull之后會提示hg update,hg update之后如果提示hg merge,這時候的merge是在最新版本的基礎(chǔ)上進行的merge,merge之后所作的修改需要通過commit來生成新的版本號。
合并branch : hg merge branchname ,先確認(rèn)hg branch是什么再執(zhí)行這個命令。
當(dāng)一個branch的歷史使命完成的時候,這時候需要決定是基于這個branch新開一個branch,還是在某個之前的版本開立branch. default是一個沒有創(chuàng)立任何branch時的默認(rèn)branch名字。
如果希望繼續(xù)工作在default branch下,則需要先hg update default,然后再考慮需要合并哪些版本到default里面,之后就可以在default下一直工作了。
對于開了多個branch需要合并到default時,需要一個個branch來合并,諸如這樣:
hg merge foo
hg merge bar
hg ci -m "merge foo and bar to default
"
在windows下,如果安裝了beyond compare,會自動被調(diào)用出來。
顯示三個窗口:本地文件、基文件((在分支分開前的最后一個版本))、其他文件(外來的文件)。這種合并模式同svn是一樣的。
merge做完之后,需要hg ci提交修改,這時可以看到tip 信息中的parent有兩個,表明是從兩個版本中merge過來的。
beyond compare對于沖突有三個基本選項:Take left, take center, take right,分別對應(yīng)以上三個文件的內(nèi)容。還有其他幾個選項也很容易明白。有沖突時還可能需要手工輸入內(nèi)容。
另外,如果我們沒有安裝圖形合并程序, 我們就會開啟文本編輯器來訪問需要合并的文件。用手工來做這些事情是非常容易出錯并且繁瑣的。 最好是退出編輯器并用hg rollback指令來清除["Pull"]帶來的改變,然后安裝合并程序,再做一次。
hg headshead指的是沒有兒子chaneset的changeset,也就是版本樹的葉子節(jié)點,多個葉子節(jié)點可以進行合并為一個葉子, branch heads指那些給了tag但還沒有兒子changeset的changeset。 用hg heads顯示當(dāng)前庫所有的heads , 如果存在多個heads則說明有多條并行開發(fā)的路徑,這時需要考慮是否需要合并。
hg serve -n "hellohg" -p 80運行網(wǎng)絡(luò)服務(wù)。之后可以通過hg pull http://localhost/hellohg 來下載這個版本庫。這是一個臨時性的便捷的提供pull版本庫服務(wù)的方法
hg export導(dǎo)出changeset,默認(rèn)導(dǎo)出tip,需要用重定向來導(dǎo)出到文件中,之后這個文件可以通過郵件附件發(fā)出,這樣可以實現(xiàn)無網(wǎng)絡(luò)連接狀態(tài)下的版本同步
hg import導(dǎo)入changeset2100433B
一般需單獨計算。垂直立線這一段一般是采用金屬軟管敷設(shè)的。
什么是化工集散控制系統(tǒng)(DCS控制系統(tǒng))
就是化工廠采用DCS控制系統(tǒng)來控制和監(jiān)視整個裝置的生產(chǎn)工藝參數(shù),可以節(jié)省人力,提高控制的質(zhì)量和安全系數(shù)。DCS,也稱集散控制系統(tǒng);是集中控制,分散危險的意思。整個控制系統(tǒng)將現(xiàn)場的儀表信號(溫度、壓力、...
集散控制系統(tǒng)與分散控制系統(tǒng) 區(qū)別
其實是一回事。英文原名:DCS-Distributed Control System,直譯的話即為分布式控制系統(tǒng)或分散控制系統(tǒng),只是其也有集中操作管理的功能,所以一般我們用的都是意譯:集散控制系統(tǒng)?,F(xiàn)...
格式:docx
大?。?span id="al5bbw4" class="single-tag-height">631KB
頁數(shù): 24頁
評分: 3.9
泵站控制系統(tǒng)適用于城市供水系統(tǒng)中加壓泵站的遠(yuǎn)程監(jiān)控及管理。