Plastic SCM は視覚的なバージョン管理システムです。しかし、コマンドラインから使用することもできます。
このガイドでは、Plastic の操作に慣れていただくために、一般的なコマンドラインインターフェース(CLI)のシナリオを順を追ってご説明します。
cm help command_name を使用すると、すべてのコマンドに関する詳細情報をいつでも取得できます。
Plastic でサポートされているさまざまなオブジェクト指定の定義を確認するには、cm help objectspec コマンドを実行します。
新規ワークスペースの作成に必要なのは、cm workspace create コマンドを使用することだけです。
>cm workspace create quakewk quake_path --repository=quake@localhost:6060 Workspace quakewk has been correctly createdそして次のコマンドを実行し、新規に作成されたディレクトリへ移動します。
>cd quake_path >cm status /main@quake@localhost:6060 (cs:0 - head)これは、依然として変更セット 0 にいることを意味します。更新をまだ実行していなかったためです。デフォルトでは、ワークスペースはブランチ main を使用するよう設定されています。
次のように cm status --head を実行することで、対象ブランチの最新の変更セットを確認することができます。
>cm status --head cs:573@quake@localhost:6060最新の変更セットに更新するには、次のように入力するだけです。
>cm updateその後、コピーされる対象のファイルに関する全情報のダンプがコマンドによって開始され、これは最新の変更セットへ更新がされるまで続けられます。
>cm status /main@quake@localhost:6060 (cs:573 - head)これで最新の変更セット(このケースでは 573)になりました。
新規ブランチを作成するには、次のように cm branch(または cm branch create)コマンドを実行するだけで済みます。
> cm branch main/fix-1342ここでは新規ブランチを作成したのみで、cm status に示されているように、まだそのブランチには切り替えていません。
>cm status /main@quake@localhost:6060 (cs:573 - head)開始点を指定しなかったため、新規ブランチは単に親ブランチの最新の変更セット(このケースでは main の cset 573)から始まります。--changeset 修飾子と --label 修飾子を使用して、ブランチを開始する変更セットまたはラベルを指定できます。
次は、switch コマンドを使用してワークスペースをそのブランチに切り替えます。
> cm switch main/fix-1342 Performing switch operation... Searching for changed items in the workspace... Setting the new selector... Plastic is updating your workspace. Wait a moment, please... The workspace c:\Users\pablo\wkspaces\quake_path is up-to-date (cset:573@quake@localhost:6060)新規ブランチはまだ空であるため、Plastic は実際には切り替えを実行するためにワークスペース上で何も更新しませんでした。この時点では、fix-1342 は同じ cset 573 をポイントしているためです。
ワークスペース内のファイルを編集し、その後変更を検索することでそのファイルを特定します。
>vim code\FileSystem-renamed.cs >cm status /main/fix-1342@quake@localhost:8084 (cs:573 - head) Changed Status Size Last Modified Path Changed 80 bytes 6 seconds ago code\FileSystem-renamed.csstatus は、(以前に示した)ワークスペースの設定のみでなく、変更、チェックアウト、移動、削除などが行われたファイルも表示します。
次は、FileSystem-renamed.cs
を新しい場所に移動します。
それから status を実行して移動されたファイルを探します。
>cm status /main/fix-1342@quake@localhost:8084 (cs:573 - head) Moved Status Size Similarity Path Moved locally 86 bytes 99% code\FileSystem-renamed.cs -> code\lib\FileSystem.csここで Moved locally とは、ファイルを Plastic のコントロール外に移動したが、その移動されたファイルは引き続き以前のバージョンと 99% 同じであるため、検出は可能であることを意味します。
その後、変更を簡単にチェックインできます。
>cm ci --all The selected items are about to be checked in. Please wait ... Assembling checkin data Validating checkin data Uploading file data Uploaded 0 bytes of 2.77 KB (0%) Confirming checkin operation Modified c:\Users\pablo\wkspaces\quake_path\code Modified c:\Users\pablo\wkspaces\quake_path\code\lib Modified and moved from c:\Users\pablo\wkspaces\quake_path\code\FileSystem-renamed.cs to c:\Users\pablo\wkspaces\quake_path\code\lib\FileSystem.cs Created changeset cs:575@br:/main/fix-1342@quake@localhost:6060 (mount:'/')デフォルトの ci コマンドは、追加されたすべてのファイルをチェックインします。ci --all は基本的に、変更されたファイルをすべて検出してチェックインを実行するよう Plastic に指示します。そして、all は変更、削除、または移動されたファイルを指します。ci --all --private を使用してプライベートファイルを含めることもできます。
Plastic SCM は、チェックアウト - 編集 - チェックインのワークフローにも対応しています。
cm log このコマンドで、指定した変更セット、あるいは特定の変更セットの範囲に対して行われた変更が表示されます。
>cm log cs:575 Changeset number: 575 Branch: /main/fix-1342 Owner: pablo Date: 7/18/2015 19:41:29 Comment: Changes: C code\lib\FileSystem.cs M code\lib\FileSystem.cs
ここで、チェックインを行い、最終変更セット内で、ファイル FileSystem.cs
を変更して移動したことが表示されます。
コマンド cm diff でも同様の処理が行われますが、常に対象は指定の変更セットに限定されます。
>cm diff cs:575 C "code\lib\FileSystem.cs" M "code\FileSystem-renamed.cs" "code\lib\FileSystem.cs"実験的な変更をしばらく試してみた後で、保留中の変更をすべて捨てて、最初からやり直すことに決めました。どうすればよいでしょうか?
まず現在のステータスを確認します。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 49.23 KB 2 hours ago code\bsp-renamed.c Changed 23.42 KB 2 hours ago code\cgame\cg_drawtools.c Changed 61.23 KB 8 minutes ago libs\cmdlib.h Changed 398 bytes 7 minutes ago libs\str.h必要なのは、すべての変更を元に戻すことだけです。このために、undo コマンドをただ繰り返して実行します。
>cm undo -r c:\Users\pablo\wkspaces\quake_path\libs\str.h unchecked out correctly c:\Users\pablo\wkspaces\quake_path\libs\cmdlib.h unchecked out correctly c:\Users\pablo\wkspaces\quake_path\code\cgame\cg_drawtools.c unchecked out correctly c:\Users\pablo\wkspaces\quake_path\code\bsp-renamed.c unchecked out correctlyステータスは次のようになります。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head)つまり、クリーンになりました。
備考:
デフォルトでは、undo は、本当の「チェックアウト」か単なる変更済みファイルかにかかわらず、すべての変更に適用されますが、undo を特定の変更の種類に限定することができます。Plastic では「変更済みファイル」と「チェックアウト済みファイル」は少し異なり、一部のコマンドにはそれが反映されています。
上述のように、特定の変更の種類に undo を限定できます。これはフィルターオプションを使用して行います。
上述と同じ変更があるが、今回は 2 つのファイルを追加して削除したとします。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 49.23 KB 2 hours ago code\bsp-renamed.c Changed 23.42 KB 2 hours ago code\cgame\cg_drawtools.c Changed 61.23 KB 9 minutes ago libs\cmdlib.h Changed 398 bytes 8 minutes ago libs\str.h Deleted Status Size Path Removed 12.41 KB code\bsp-temp.c Added Status Size Last Modified Path Added 4.42 KB 17 seconds ago code\bsp-experimental.c今回は、追加と削除を元に戻しますが、変更はそのままにします。これはフィルターを使用して行います。
>cm undo --added --deleted -r c:\Users\pablo\wkspaces\quake_path\code\bsp-experimental.c unchecked out correctly c:\Users\pablo\wkspaces\quake_path\code\bsp-temp.c unchecked out correctlyステータスは次のようになります。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 49.23 KB 2 hours ago code\bsp-renamed.c Changed 23.42 KB 2 hours ago code\cgame\cg_drawtools.c Changed 61.23 KB 10 minutes ago libs\cmdlib.h Changed 398 bytes 9 minutes ago libs\str.h望んだとおりになっています。
1 つの変更済みファイルを元に戻すにはどうすればよいでしょうか?
次のように、いくつかのファイルを変更したとします。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 15.83 KB 50 seconds ago code\cgame\cg_ents.c Changed 35.27 KB 30 seconds ago code\cgame\cg_main.c
cg_main.c
への変更のみを元に戻したい場合は、次のコマンドを実行します。
特定のパスの下にあるいくつかの変更を元に戻す必要がある場合は、次のようにコマンドを実行できます。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 15.83 KB 50 seconds ago code\lib\be_aas_cluster.c Changed 35.27 KB 5 minutes ago code\cgame\cg_ents.c Changed 73.15 KB 5 minutes ago code\cgame\cg_localents.c Changed 62.62 KB 5 minutes ago code\renderer\tr_cmds.c Changed 12.26 KB 5 minutes ago merge\Socket.cs
code
の下にある変更を元に戻したいが、merge
の下にあるものはそのままにしたいという場合は、次のようにできます。
意図したとおりのステータスになりました。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 12.26 KB 5 minutes ago merge\Socket.csワイルドカードを使用して、元に戻す対象をさらに厳密に指定することもできます。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 15.83 KB 4 minutes ago code\lib\be_aas_cluster.c Changed 3.14 KB 4 minutes ago code\lib\be_aas_cluster.h Changed 35.27 KB 8 minutes ago code\cgame\cg_ents.c Changed 3.24 KB 2 minutes ago code\cgame\cg_ents.h Changed 73.15 KB 8 minutes ago code\cgame\cg_localents.c Changed 6.14 KB 2 minutes ago code\cgame\cg_localents.h Changed 62.62 KB 8 minutes ago code\renderer\tr_cmds.c Changed 1.98 KB 2 minutes ago code\renderer\tr_cmds.h Changed 12.26 KB 8 minutes ago merge\Socket.cs
今度は、code
の下のヘッダーファイルを元に戻しながらも、ソースファイルはそのままにしたいと思います。
意図したとおりのステータスになりました。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 15.83 KB 5 minutes ago code\lib\be_aas_cluster.c Changed 35.27 KB 9 minutes ago code\cgame\cg_ents.c Changed 73.15 KB 9 minutes ago code\cgame\cg_localents.c Changed 62.62 KB 9 minutes ago code\renderer\tr_cmds.c Changed 12.26 KB 9 minutes ago merge\Socket.csここでは、指定したパスにある特定のファイルのみをチェックインします。次のように変更済みのファイルがいくつかあります。
>cm status /main/fix-1342@quake@localhost:8084 (cs:575 - head) Changed Status Size Last Modified Path Changed 12.26 KB 5 minutes ago merge\Socket.cs Changed 42.26 KB 5 minutes ago q3radiant\alpha\osf\tst\sort.sbk Changed 86.27 KB 5 minutes ago q3radiant\alpha\osf\tst\spill.2bk Changed 85.27 KB 5 minutes ago q3radiant\alpha\osf\tst\spill.sbk Changed 34.26 KB 5 minutes ago q3radiant\alpha\osf\tst\stdarg.1bk Changed 34.26 KB 5 minutes ago q3radiant\alpha\osf\tst\stdarg.2bk Changed 34.26 KB 5 minutes ago q3radiant\alpha\osf\tst\stdarg.sbk
しかし、チェックインしようとしているのは q3radiant\alpha
内のもののみです。したがって、次のように checkin コマンドを実行します。
Plastic SCM では、ファイルを単に変更することも、チェックアウトすることもできます。つまり、edit-checkin または checkout-edit-checkin という 2 つのワークフローを行うことができます。
ファイルのチェックアウトとは、これからファイルを変更すると Plastic に対して通知することです。これで、ファイルがチェックアウト済みファイルの内部リストに追加されます。
チェックアウトを使用する理由は主に 3 つあります。
チェックアウト - 編集 - チェックインの形式での作業は、非常にシンプルです。すべきことは、ファイルを編集する前に cm co コマンドを実行するだけです。
>cm co q3radiant\Bmp.cpp The selected items are about to be checked out. Please wait ... Item q3radiant\Bmp.cpp was correctly checked out >cm status /main/fix-1342@quake@localhost:8084 (cs:576 - head) Changed Status Size Last Modified Path Changed 12.26 KB 5 minutes ago merge\Socket.cs Checked-out 12.21 KB 65 minutes ago q3radiant\Bmp.cpp
ここで、Bmp.cpp
が変更済みではなくチェックアウトとしてマークされていることを確認できます。
次の例に示すように、cm mv コマンドを使用して移動されたファイルは、チェックアウトのもう 1 つの形式とみなされます。
>cm mv common\aselib.c q3asm common\aselib.c has been moved to q3asm >cm status /main/fix-1342@quake@localhost:8084 (cs:576 - head) Changed Status Size Last Modified Path Changed 12.26 KB 5 minutes ago merge\Socket.cs Checked-out 12.21 KB 65 minutes ago q3radiant\Bmp.cpp Moved Status Size Similarity Path Moved 88 bytes common\aselib.c -> q3asm\aselib.c
aselib.c
が、「ローカルで移動」されたのではなく、ただ移動されたことが表示されます。
チェックアウト済みの 2 つのファイルを次のようにチェックインできます。
>cm ci -c "changed bmp and moved aselib" The selected items are about to be checked in. Please wait ... Assembling checkin data Validating checkin data Uploading file data Uploaded 0 bytes of 9.26 KB (0%) Confirming checkin operation Modified c:\Users\pablo\wkspaces\quake_path\q3radiant\Bmp.cpp Modified c:\Users\pablo\wkspaces\quake_path\common Modified c:\Users\pablo\wkspaces\quake_path\q3asm Move from c:\Users\pablo\wkspaces\quake_path\common\aselib.c to c:\Users\pablo\wkspaces\quake_path\q3asm\aselib.c Created changeset cs:577@br:/main/fix-1342@quake@localhost:6060 (mount:'/')
--all 修飾子を checkin に指定しなかったため、チェックアウト済みファイルのみがチェックインされ、Socket.cs
ファイルは保留中の変更のままになります。
CLI からのマージは非常に簡単で、cm merge コマンドを実行するだけです。
これまでのすべての変更は main/fix-1342 ブランチで行っていたので、変更をマージするために main に切り替えます。この時点での状況は次のようになります。
main に切り替えます。
>cm switch main Performing switch operation... Searching for changed items in the workspace... Cannot perform the switch to branch/label/changeset since there are pending changes. Please review the pending changes and retry the operation again.
Socket.cs
をそのままにしていたので、まだ切り替えができません。変更を取り消してから、もう一度切り替えを試みます。
switch コマンドによってワークスペースが更新され、ブランチ上で変更したすべてのファイルが main 内のバージョンに置き換えられます。
ステータスは次のようになります。
>cm status /main@quake@localhost:6060 (cs:573 - head)これはブランチエクスプローラーにも反映されます。
ここで merge コマンドを実行します。
>cm merge main/fix-1342 The file /q3radiant/Bmp.cpp#cs:577 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/sort.sbk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/spill.2bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/spill.sbk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.1bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.2bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.sbk#cs:576 was modified on source and will replace the destination version The file /code/lib/FileSystem.cs#cs:575 was modified on source and will replace the destination version The item /common/aselib.c has been moved to /q3asm/aselib.c on source and will be moved as result of the merge The item /code/FileSystem-renamed.cs has been moved to /code/lib/FileSystem.cs on source and will be moved as result of the merge修飾子なしでマージを実行すると、何がマージされるかのプレビューのみが出力されるので、これから起こることを理解するのに非常に役立ちます。
マージをもう少し面白くするために、FileSystem-renamed.cs
を変更します(このファイルをブランチ上で移動して、名前変更したことを思い出してください)。
マージを再実行し、コメントを追加します。
>cm merge main/fix-1342 -c="Added changes and fixes to the interface" The file /q3radiant/Bmp.cpp#cs:577 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/sort.sbk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/spill.2bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/spill.sbk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.1bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.2bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.sbk#cs:576 was modified on source and will replace the destination version The item /common/aselib.c has been moved to /q3asm/aselib.c on source and will be moved as result of the merge The item /code/FileSystem-renamed.cs has been moved to /code/lib/FileSystem.cs on source and will be moved as result of the merge The file /code/FileSystem-renamed.cs needs to be merged from cs:575 to cs:578 base cs:573. Changed by both contributors.
最後の行を見るとわかるように、FileSystem-renamed.cs
は 2 人の共同作成者によって変更されたので、3 方向マージが必要です。
そこで、修飾子 --merge(マージを実際に実行するため)と --commentsfile(ファイルのコンテンツから新しい変更セットのコメントを設定するため)を merge コマンドに追加して、マージを実行します。
>cm merge main/fix-1342 --merge --commentsfile=comment-merge-fix-1342.txt The file /q3radiant/Bmp.cpp#cs:577 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/sort.sbk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/spill.2bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/spill.sbk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.1bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.2bk#cs:576 was modified on source and will replace the destination version The file /q3radiant/alpha/osf/tst/stdarg.sbk#cs:576 was modified on source and will replace the destination version The item /common/aselib.c has been moved to /q3asm/aselib.c on source and will be moved as result of the merge The item /code/FileSystem-renamed.cs has been moved to /code/lib/FileSystem.cs on source and will be moved as result of the merge The file /code/FileSystem-renamed.cs needs to be merged from cs:575 to cs:578 base cs:573. Changed by both contributors. Merging c:\Users\pablo\wkspaces\quake_path\q3asm\aselib.c c:\Users\pablo\wkspaces\quake_path\common\aselib.c has been moved to c:\Users\pablo\wkspaces\quake_path\q3asm\aselib.c Merging c:\Users\pablo\wkspaces\quake_path\code\lib\FileSystem.cs c:\Users\pablo\wkspaces\quake_path\code\FileSystem-renamed.cs has been moved to c:\Users\pablo\wkspaces\quake_path\code\lib\FileSystem.cs Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\Bmp.cpp The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\Bmp.cpp@cs:577 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\sort.sbk The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\sort.sbk@cs:576 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\spill.2bk The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\spill.2bk@cs:576 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\spill.sbk The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\spill.sbk@cs:576 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.1bk The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.1bk@cs:576 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.2bk The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.2bk@cs:576 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.sbk The revision c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.sbk@cs:576 has been loaded Merging c:\Users\pablo\wkspaces\quake_path\code\lib\FileSystem.cs Merge done
ご覧のように、これによってすべてのマージがワークスペースに適用され、設定済みの 3 方向マージツール(デフォルトでは Plastic の Xmerge)が FileSystem.cs
内の競合を解決するために起動されます。どのように FileSystem.cs
の移動と名前変更が正しく行われ、ファイルのコンテンツが正しくマージされているかに注目してください。
status コマンドを実行すると、マージされたすべてのファイルがチェックアウト済みステータスになっています。
>cm status /main@quake@localhost:6060 (cs:578 - head) Pending merge links Merge from cs:577 at /main/fix-1432@test@localhost:8084 Changed Status Size Last Modified Path Checked-out (Merge from 577) 41.32 KB 6 hours ago code\lib\FileSystem.cs Replaced (Merge from 577) 42.26 KB 6 hours ago q3radiant\alpha\osf\tst\sort.sbk Replaced (Merge from 577) 86.27 KB 6 hours ago q3radiant\alpha\osf\tst\spill.2bk Replaced (Merge from 577) 85.27 KB 6 hours ago q3radiant\alpha\osf\tst\spill.sbk Replaced (Merge from 577) 34.26 KB 6 hours ago q3radiant\alpha\osf\tst\stdarg.1bk Replaced (Merge from 577) 34.26 KB 6 hours ago q3radiant\alpha\osf\tst\stdarg.2bk Replaced (Merge from 577) 34.26 KB 6 hours ago q3radiant\alpha\osf\tst\stdarg.sbk Replaced (Merge from 577) 12.21 KB 6 hours ago q3radiant\Bmp.cpp Moved Status Size Similarity Path Moved 14.41 KB code\FileSystem-renamed.cs -> code\lib\FileSystem.cs Moved 88 bytes common\aselib.c -> q3asm\aselib.c
ここでは新しいステータス Replaced が使用されています。これは効率のために、バージョン管理にファイルをコピーする代わりにブランチ上の元の場所へのポインターが格納されることを意味しており、FileSystem.cs
ファイルはマージされたので実際に「チェックアウト済み」としてマークされます。
この時点で、ブランチエクスプローラーは次のようになります。
点線は、マージがまだ進行中であり、まだチェックインされていないことを意味します。
あとは cm ci コマンドを使用してチェックインするだけです。
>cm ci -m "merged from fix-1342" The selected items are about to be checked in. Please wait ... Assembling checkin data Validating checkin data Uploading file data Uploaded 0 bytes of 2.80 KB (0%) Confirming checkin operation Modified c:\Users\pablo\wkspaces\quake_path\common Modified c:\Users\pablo\wkspaces\quake_path\q3asm Move from c:\Users\pablo\wkspaces\quake_path\common\aselib.c to c:\Users\pablo\wkspaces\quake_path\q3asm\aselib.c Modified c:\Users\pablo\wkspaces\quake_path\code Modified c:\Users\pablo\wkspaces\quake_path\code\lib Modified and moved from c:\Users\pablo\wkspaces\quake_path\code\FileSystem-renamed.cs to c:\Users\pablo\wkspaces\quake_path\code\lib\FileSystem.cs Modified c:\Users\pablo\wkspaces\quake_path\q3radiant Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\Bmp.cpp Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\sort.sbk Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\spill.2bk Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\spill.sbk Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.1bk Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.2bk Replaced c:\Users\pablo\wkspaces\quake_path\q3radiant\alpha\osf\tst\stdarg.sbk Created changeset cs:579@br:/main@quake@localhost:6060 (mount:'/')新しくマージされたコードにラベルを付けるには、次のように cm label コマンドを実行します。
>cm label BL612 cs:579ブランチエクスプローラーの表示は次のようになります。
特定のサーバー上のリポジトリをリスト表示するのは簡単で、repository [list] コマンドを使用するだけです。
>cm repository codice@localhost:6060 pnunit@localhost:6060 nervathirdparty@localhost:6060 quake@localhost:6060
デフォルトでは、repository によって default server(設定ウィザードで設定し、client.conf
に書き込まれるサーバー)内のリポジトリが表示されます。
次のように別のサーバーも入力できるので、repository list コマンドはサーバーでの接続の問題を診断するのに非常に役立ちます。
>cm repository list tube:dianaserver@codice.es --format=TABLE 4 codice tube:dianaserver@codice.es 4_1 codice/unitymerge tube:dianaserver@codice.es 5 pnunit tube:dianaserver@codice.es 6 nervathirdparty tube:dianaserver@codice.es 6_1 nervathirdparty/yamldotnet tube:dianaserver@codice.es 6_2 nervathirdparty/yamldotnet_buildutils tube:dianaserver@codice.es 35 licensetools tube:dianaserver@codice.es 55 plasticscm.com tube:dianaserver@codice.es 64 indexertest tube:dianaserver@codice.es 1741 tts tube:dianaserver@codice.esPlastic SCM では、ユーザーのマシン上にあるワークスペース(少なくとも Plastic SCM によって認識されているもの。ユーザーは常にどこかからワークスペースをコピーすることができ、それは Plastic のリストには含まれないため)のリストが保持されます。
>cm workspace list codebase@MODOK c:\Users\pablo\wkspaces\four doc@MODOK c:\Users\pablo\wkspaces\doc mkt@MODOK c:\Users\pablo\wkspaces\marketing quakecode@MODOK c:\Users\pablo\wkspaces\testwkspaces\quakewk codicediana@MODOK c:\Users\pablo\wkspaces\codicedianaこのガイドでは、CLI を使用してできるすべてのことのほんの一部を紹介します。他にどのようなコマンドを使用できるかについては、cm showcommands を実行して確認できます。
また、すべてのコマンドで cm <command> --usage を使用してそれぞれのオプションに関する組み込みのドキュメントを確認することも、cm <command> --help を使用してより包括的なヘルプを例とともに確認することもできます。
CLI が期待通りに動作しない場合は、Plastic のサポートチームにお問い合わせください。サポートチームが問題を診断するのを支援するために、有用な診断情報が入っている zip ファイルを送信してください。zip ファイルは、次のように cm support を使用して生成できます。
>cm support bundle c:\supportbundle.zip Creating a new support bundle... Adding clientinfo.txt... Adding clientprocessinfo.txt... Adding client.conf... Adding filetypes.conf... Adding guiclient.conf... Adding mergetool.conf... Adding plastic.uisettings.conf... Adding plasticgui.conf... Adding syncviews.conf... Adding logs\plastic.debug.log.txt... Adding logs\plastic.relevant.log.txt... Support bundle created at c:\supportbundle.zip CommandResult 0ローカルの移動と削除を含む、大量の変更をソースファイルに加えるスクリプトを実行しました。status は次のようになっています。
>cm status /main@quake@localhost:6060 (cs:578 - head) Deleted Status Size Path Removed locally 34.26 KB q3radiant\alpha\osf\tst\stdarg.sbk Moved Status Size Similarity Path Moved locally 88 bytes 100% q3asm\aselib.c -> q3asm\aselib_fixed.cファイルが移動または削除されているこの時点で、これらの変更をソース管理下に置くにはどうすればよいでしょうか?問題ありません。move または remove コマンドを実行し、管理対象の変更を作成するだけです。
>cm remove q3radiant\alpha\osf\tst\stdarg.sbk Item q3radiant\alpha\osf\tst\stdarg.sbk has been removed. >cm move q3asm\aselib.c -> q3asm\aselib_fixed.c q3asm\aselib.c has been moved to q3asm\aselib_fixed.c >cm status /main@quake@localhost:6060 (cs:578 - head) Deleted Status Size Path Removed 34.26 KB q3radiant\alpha\osf\tst\stdarg.sbk Moved Status Size Similarity Path Moved 88 bytes q3asm\aselib.c -> q3asm\aselib_fixed.c私はいくつかの実験的なコード変更を行っているのですが、それらをソース管理内に保存して、同僚と共有できるようにしたいと考えています。ただし、まだ実験段階のアイデアなので、いずれのブランチにもチェックインはしたくありません。
このような場合、私は shelveset コマンドを使用して、いずれのブランチにも関連付けられていない変更セットをコミットします。
>cm shelveset src\experimental_changes Uploading file data Confirming checkin operation Modified src\experimental_changes Created shelve sh:25@myrepo@localhost:8080 (mount:'/')私はリポジトリでの自分のローカルの変更をシェルブしました。私は自分のブランチを別のワークスペースに切り替え、通常と同じように作業を続けています。後で、前に作業していた実験的変更に戻りたいと考えています。これを行う場合、私は apply サブコマンドを使用して、シェルブセットを自分のワークスペースに適用します。
>cm shelveset apply sh:25 The item /newtonraphson.cs#sh:25 has been added on source and will be added as result of the merge Merging \src\experimental_changes\newtonraphson.cs The revision \src\experimental_changes\newtonraphson.cs@sh:25 has been loadedPlastic CLI の機能の中でも見過ごされがちな機能なのですが、- オプションを使用して、stdin から引数を 1 つずつ読み取る機能があります。次に例を示します。
>cm add - a.txt b.txt c.txt The selected items are about to be added. Please wait ... Item c:\Users\pablo\wkspaces\mcga\a.txt was correctly added Item c:\Users\pablo\wkspaces\mcga\b.txt was correctly added Item c:\Users\pablo\wkspaces\mcga\c.txt was correctly added >cm ci - a.txt b.txt c.txt The selected items are about to be checked in. Please wait ... \ Checkin finished 12 bytes/12 bytes [##################################] 100 % Modified c:\mcga Added c:\Users\pablo\wkspaces\mcga\a.txt Added c:\Users\pablo\wkspaces\mcga\b.txt Added c:\Users\pablo\wkspaces\mcga\c.txt Created changeset cs:22@br:/main@test@localhost:8084 (mount:'/') >cm rm - a.txt Item a.txt has been removed. b.txt Item b.txt has been removed. c.txt Item c.txt has been removed.これがなぜ便利かというと、他のコマンドからの出力を cm 内に送ることができるからです。
パイプを使ったパスが受け入れられるのは、次のコマンドです。
いくつか例を見てみましょう。
皆さんも、パイプと cm を使って便利なスクリプトを作成してみてください。