別名是可以在來源控制中唯一識別項目的簡稱。別名為四位數(括上括弧),會顯示在它們所參照項目的左側。例如:
$ scm status
Workspace: (6377) "My Workspace" <-> (7487) "Stream"
Component: (6429) "Flux Capacitor"
Baseline: (8471) 6815 "v20091102"
Outgoing:
Change sets:
(8459) --@ 98314 "Degauss Flux Capacitor" - <No comment>
在上例中,括弧中的每一個數字(6377、7487、6429、8471、8459)都是別名。
每一個次指令都有一組回覆碼。如果次指令成功,則傳回 0。當發生錯誤或問題,例如,衝突或是本端沙盒和遠端工作區不同步,就會傳回非零。
下列範例假設您已使用 lscm login 登入儲存庫。因此, 您只需對每一個次指令提供 -r repositoryNickName。例如:
$ lscm login -r https://your.repository.com:9443/jazz -n nickname -u echughes -c Password (echughes @ https://your.repository.com:9443/jazz): Logged in to https://your.repository.com:9443/jazz
您也可以使用暱稱來參照儲存庫 https://your.repository.com:9443/jazz。例如,將 -r nickname 傳遞給次指令,而不傳遞 URL、使用者名稱和密碼。
在您開始進行某專案之前,您必須提供儲存庫的使用者名稱、密碼和 URL。您也應該是團隊區域的成員。
如果您不知道要協同作業的串流名稱,您可以使用 lscm list streams -r nickname 來列出您具備存取權的串流。例如:
$ lscm -a y list streams -r l DeLorian Upgrades Home Energy Converter Doc Brown's playpen
在您找到要使用的串流之後, 可以建立一個遠端工作區來包含您所做的變更。例如:
$ lscm create workspace -r l myNewWorkspace -s "DeLorian Upgrades" Workspace (8551) "myNewWorkspace" successfully created
新增 -s 參數是指定工作區應和哪一條串流協同作業。新工作區會以該串流作為預設流程目標,以及以串流的狀態作為其起始狀態。
如果要載入遠端工作區,請執行下列動作:
$ lscm load myNewWorkspace -r l Downloading /flux.capacitor/requirements.txt (0 B) Downloading /flux.capacitor/diagrams/design.cad (0 B)
在來源控制 CLI 中,您可以遵循一般的工作流程進行,例如:修改檔案、移入檔案、接受新變更,以及交付變更。
CLI 中的移入和交付動作,和 Eclipse 用戶端中的相同。移入是將變更從本端磁碟推送至遠端工作區;交付是將變更從遠端工作區推送至串流。
在下列 CLI 範例中,您修改了數個檔案,並執行 status 來判斷何者已修改:
$ lscm status
Workspace: (8551) "myNewWorkspace" <-> (8552) "DeLorian Upgrades"
Component: (8553) "Flux Capacitor"
Baseline: (8554) 1 "Initial Baseline"
Unresolved:
-c /flux.capacitor/requirements.txt
Outgoing:
Change sets:
(8555) --$ "Initial CAD"
status 指令會掃描所有的共用目錄中是否有變更, 因此可能會耗費長久時間。如果您只想檢視遠端工作區如何與串流比較,可以執行 lscm status –n, 如此就會忽略本端磁碟的掃描。
如果要確定變更,請使用 lscm checkin:
$ lscm checkin flux.capacitor/
Committing...
Workspace: (8551) "myNewWorkspace" <-> (8552) "DeLorian Upgrades"
Component: (8553) "Flux Capacitor"
Outgoing:
Change sets:
(8556) --@ <No comment>
這個範例隱含地建立了新的變更集。輸出中會列出確定期間已接收檔案與資料夾的變更集。
在建立變更集之後, 可以讓它和工作項目相關聯,並加入註解。如果要指派工作項目,請使用 lscm changeset associate。如果要設定註解,請使用 lscm changeset comment。
您可以執行 lscm status,以定期檢視串流中的狀態:
$ lscm status -C
Workspace: (8551) "myNewWorkspace" <-> (8552) "stream19_test_max_results_1256765247692134"
Component: (8553) "Flux Capacitor"
Baseline: (8554) 1 "Initial Baseline"
Outgoing:
Change sets:
(8556) --@
Changes:
---c /flux.capacitor/requirements.txt
Incoming:
Change sets:
(8615) --$ "Initial layout"
Changes:
---c /flux.capacitor/diagrams/design.cad
-C 旗標顯示變更集的內容。
在上述範例中,只有一項變更送入至 design.cad。您可以接受這項變更,因為它沒有修改變更集中的任何檔案。
執行 lscm accept:
$ lscm accept -v
Repository: https://localhost:9443/jazz/
Workspace: (8551) "myNewWorkspace"
Component: (8553) "Flux Capacitor"
Change sets:
(8615) ADMIN --$ "Initial layout"
Changes:
--c /flux.capacitor/diagrams/design.cad
有時候,送入的變更會修改您已修改的檔案。
在以下的範例中,修改 flux.capacitor/requirements.txt 以併入規劃會議中的一項附註,然後移入檔案,並執行 status:
$ lscm status -C
Workspace: (8551) "myNewWorkspace" <-> (8552) "stream19_test_max_results_1256765247692134"
Component: (8553) "Flux Capacitor"
Baseline: (8554) 1 "Initial Baseline"
Outgoing:
Change sets:
(8617) -#@ "Update from November planning meeting"
Changes:
-#-c /flux.capacitor/requirements.txt
Incoming:
Change sets:
(8616) -#$ "Results of initial trials"
Changes:
-#-c /flux.capacitor/requirements.txt
發生衝突。將變更交付至串流的另一位使用者亦修改了您已修改的檔案。參與的檔案和變更集前面會用 # 表示衝突。當您接受別名為 8616 的變更集時,就會發生衝突。
$ lscm accept 8616 -v -i
Repository: https://localhost:9443/jazz/
Workspace: (8551) "myNewWorkspace"
Component: (8553) "Flux Capacitor"
Change sets:
(8616) ADMIN -#$ "Results of initial trials"
Changes:
!-c /flux.capacitor/requirements.txt
Following workspaces still have conflicts after accept:
myNewWorkspace
Run 'scm resolve' or 'scm conflicts' or 'scm status' for help in resolving the conflicts.
-i 會將衝突標記插入至檔案。這些標記類似於其他來源控制系統所用的標記。
變更清單中的 ! 指出檔案現在發生衝突。
您可以執行 scm conflicts,取得目前所載入元件中的衝突清單。
檔案含有就地衝突標記,指出發生問題:
- Must not need any more than 1.5 gigawatts of power - Determine minimum necessary speed <<<<<<< mine - Twin Pines parking lot? ======= - Initial trials suggest 60kmh >>>>>>> proposed
<<<<<<< mine 和等號之間的字行來自您工作區中的變更集。等號和 >>>>>>> proposed 之間的字行來自送入的變更集。您可以執行 lscm conflicts -m flux.capacitor/requirements.txt,取得原始檔案。如果您想取得送入的版本,可以執行 lscm conflicts -p flux.capacitor/requirements.txt。-m 是 mine 的簡短格式,-p 是 proposed 的簡短格式。
利用提案來解決變更。清除檔案中的衝突標記:
- Must not need any more than 1.5 gigawatts of power - Determine minimum necessary speed Initial trials suggest 60kmh
執行 lscm resolve,來確定變更,並和已使用移入的版本來解決衝突的儲存庫通訊:
lscm resolve -c flux.capacitor/requirements.txt
無任何輸出指出已解決衝突。
-c 指出應使用移入的版本來解決衝突。您也可以利用 -p,以提議的版本來解決。
現在您可以進行更多的變更,或是使用 lscm deliver 來交付變更集:
$ lscm deliver Delivering changes from "myNewWorkspace" into "DeLorian Updates" No baselines to flow.
如果要判斷何人修改了檔案中的某些字行,請執行 lscm annotate:
$ lscm annotate flux.capacitor/requirements.txt 1 Marty (8556) 2009-11-04 - Must not need any more than 1.5 gigawatts of power 2 Marty (8556) 2009-11-04 - Determine minimum necessary speed 3 Doc (8616) 2009-11-04 Results of initial t - Initial trials suggest 60kmh
註釋的輸出有下列六個直欄:
如果要比較檔案的不同版本,請使用 scm diff,這會產生一個標準修補程式。
如果要刪除未確定的變更,請使用 scm undo。
本節說明進階指令,這些指令主要供會配置其他使用者之 Rational Team Concert Source Control 的管理者使用。大部分使用者只會從現有的串流來建立和載入工作區。
元件是原始檔樹狀結構的分組, 隨時將原始碼邏輯地分組在一起。
隨著專案的增長,您有時需要新增一些原始檔樹狀結構。如果用現有的元件來保留變更沒有意義, 就需要加入新的元件:
$ lscm create component "Flux Capacitor" "DeLorian Upgrades" -r l Component (8553) "Flux Capacitor" successfully created.
在上述範例中,您在 DeLorian Upgrades 串流中建立一個新元件。其工作區會和該串流協同作業的使用者, 會看到這項元件的新增項目,以送入的變更形式出現。當它們接受送入的變更時, 使用者會收到元件中的內容。
如果使用者想將檔案新增至為該目的而建立的元件中, 使用者可以使用 share 次指令來執行這項作業。Rational Team Concert Source Control 只容許將目錄和資料夾放到工作區中共用。使用者必須將新元件加入遠端工作區:
$ lscm workspace add-component -r l myNewWorkspace 8553 Component (8553) "Flux Capacitor" successfully added.
在上例中, 別名 8553 參照您在先前範例中新建的元件。
現在新元件位於工作區中,因此使用者必須執行 share,將原始檔樹狀結構放到工作區中共用:
$ lscm share -r l myNewWorkspace 8553 flux.capacitor Uploading files... Shared successfully
在上例中,這個動作是將 flux.capacitor 目錄內容,上傳至名為 myNewWorkspace 的遠端工作區,並將它新增至 8553 所指定的元件,亦即前一個步驟中的 Flux Capacitor。