scm コマンドの例

Rational Team Concert™ ソース管理 のコマンド行インターフェース (CLI) では、1 つ以上のサブコマンドが続く scm コマンドを使用します。 例えば、scm help および scm create workspace などです。

別名は、ソース管理で項目を一意的に識別する短縮名です。 別名は、参照する項目の左に表示される、long 型の (括弧で囲まれた) 4 桁の番号です。 以下に例を示します。

$ scm status 
 ワークスペース: (6377) "My Workspace" <-> (7487) "Stream"
   コンポーネント: (6429) "Flux Capacitor"
     ベースライン: (8471) 6815 "v20091102"
     発信:
       変更セット:
				(8459) --@ 98314 "Degauss Flux Capacitor" - <コメントなし>

上の例の括弧内に示された各番号 (6377、7487、6429、8471、8459) が別名です。

各サブコマンドには、一連の戻りコードがあります。 サブコマンドが成功した場合は 0 が返されます。 エラー、または競合などの問題がある場合、またはローカル・サンドボックスがリモート・ワークスペースと同期していない場合には、ゼロ以外が返されます。

リポジトリーへのログイン

以下の各例では、lscm login を使用してリポジトリーにログインしていることが前提になります。 したがって、各サブコマンドで -r repositoryNickName を指定するだけで済みます。 以下に例を示します。

$ lscm login -r https://your.repository.com:9443/jazz -n nickname -u echughes -c
パスワード (echughes @ https://your.repository.com:9443/jazz):
https://your.repository.com:9443/jazz にログインしました。

ニックネームを使用してリポジトリー https://your.repository.com:9443/jazz を参照することもできます。 例えば、URL、ユーザー名、およびパスワードの代わりに -r nickname をサブコマンドに渡します。

入門

プロジェクトを開始する前に、リポジトリーのユーザー名、パスワード、および 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"
ワークスペース (8551) "myNewWorkspace" が正常に作成されました。

-s パラメーターを追加して、ワークスペースのコラボレーションの対象となるストリームを指定します。 新規ワークスペースでは、そのストリームがデフォルトのフロー・ターゲットとなり、そのストリームの状態がワークスペースの初期状態になります。

リモート・ワークスペースをロードするには、以下のようにします。

$ lscm load myNewWorkspace -r l
/flux.capacitor/requirements.txt のダウンロード中 (0 B)
/flux.capacitor/diagrams/design.cad のダウンロード中 (0 B)

独立した作業

ソース管理 CLI からは、ファイルの変更、ファイルのチェックイン、新しい変更の受諾、および変更の提出などの標準的なワークフローに従うことができます。

CLI のチェックインおよび提出のアクションは、Eclipse クライアントの場合と同じです。 チェックインによりローカル・ディスクからリモート・ワークスペースに変更がプッシュされ、提出によってリモート・ワークスペースからストリームに変更がプッシュされます。

変更のコミット中

以下の CLI の例では、いくつかのファイルを変更しており、何が変更されたかを status を実行して判別しています。

$ lscm status
ワークスペース: (8551) "myNewWorkspace" <-> (8552) "DeLorian Upgrades"
  コンポーネント: (8553) "Flux Capacitor"
    ベースライン: (8554) 1 "Initial Baseline"
    未解決:
      -c /flux.capacitor/requirements.txt
    発信:
      変更セット:
        (8555) --$ "Initial CAD"

status コマンドは、すべての共有ディレクトリーで変更をスキャンします。これには長時間を要する場合があります。 リモート・ワークスペースとストリームの比較のみを表示する場合は、lscm status –n を実行することで、ローカル・ディスク・スキャンを無視できます。

変更をコミットするには、lscm checkin を使用します。

$ lscm checkin flux.capacitor/
コミット中...
ワークスペース: (8551) "myNewWorkspace" <-> (8552) "DeLorian Upgrades"
  コンポーネント: (8553) "Flux Capacitor"
    発信:
      変更セット:
        (8556) --@ <コメントなし>

この例では、暗黙的に新規の変更セットが作成されます。 出力には、コミット中にファイルおよびフォルダーを受け取った変更セットがリストされます。

変更セットの作成後は、それをワークアイテムに関連付けて、コメントを追加することができます。 ワークアイテムを割り当てるには、lscm changeset associate を使用します。 コメントを設定するには、lscm changeset comment を使用します。

変更の受諾中

lscm status を実行することによって、ストリーム内の状況を定期的に表示することができます。

$ lscm status -C
ワークスペース: (8551) "myNewWorkspace" <-> (8552) "stream19_test_max_results_1256765247692134"
  コンポーネント: (8553) "Flux Capacitor"
    ベースライン: (8554) 1 "Initial Baseline"
    発信:
      変更セット:
        (8556) --@ 
          変更:
            ---c /flux.capacitor/requirements.txt
    着信:
      変更セット:
        (8615) --$ "Initial layout"
          変更:
            ---c /flux.capacitor/diagrams/design.cad

-C フラグは、変更セットの内容を表示します。

上記の例では、design.cad に対して着信する変更が 1 つあります。 この変更は、変更セットにあるどのファイルも変更しないため、受諾することができます。

lscm accept を実行します。

$ lscm accept -v
リポジトリー: https://localhost:9443/jazz/
  ワークスペース: (8551) "myNewWorkspace"
    コンポーネント: (8553) "Flux Capacitor"
      変更セット:
        (8615) ADMIN --$ "Initial layout" 
          変更:
            --c /flux.capacitor/diagrams/design.cad

競合の解決

場合により、既に変更したファイルが、着信する変更によって変更されることがあります。

以下の例では、計画ミーティングのメモが含まれるように flux.capacitor/requirements.txt を変更し、ファイルをチェックインして、status を実行します。

$ lscm status -C
ワークスペース: (8551) "myNewWorkspace" <-> (8552) "stream19_test_max_results_1256765247692134"
  コンポーネント: (8553) "Flux Capacitor"
    ベースライン: (8554) 1 "Initial Baseline"
    発信:
      変更セット:
        (8617) -#@ "Update from November planning meeting"
          変更:
            -#-c /flux.capacitor/requirements.txt
    着信:
      変更セット:
        (8616) -#$ "Results of initial trials"
          変更:
            -#-c /flux.capacitor/requirements.txt

衝突が発生しました。変更したファイルは、ストリームに対する変更を提出した別のユーザーによっても変更されています。 関係するファイルおよび関係する変更セットの前にある # によって衝突が示されます。 別名 8616 の変更セットを受諾すると、競合が発生します。

$ lscm accept 8616 -v -i
リポジトリー: https://localhost:9443/jazz/
  ワークスペース: (8551) "myNewWorkspace"
    コンポーネント: (8553) "Flux Capacitor"
      変更セット:
        (8616) ADMIN -#$ "Results of initial trials" 
          変更:
            !-c /flux.capacitor/requirements.txt
次のワークスペースには、受諾後にも競合があります:
  myNewWorkspace
競合を解決する際には、「scm resolve」、「scm conflicts」、または「scm status」を実行すると便利です。

-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
"myNewWorkspace" から "DeLorian Updates" に変更を提出中
  フローするベースラインはありません。

変更の処理

ファイルの特定の行をだれが変更したかを判別するには、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 

注釈の出力は 6 列からなります。

異なるバージョンのファイルを比較するには、標準パッチを生成する scm diff を使用します。

コミットされていない変更を削除するには、scm undo を使用します。

releng タスク

このセクションでは、他のユーザー用の Rational Team Concert ソース管理を構成する管理者が主に使用する、拡張コマンドについて説明します。 ほとんどのユーザーは、既存のストリームからワークスペースを作成してロードするだけです。

新規コンポーネントの追加

コンポーネントとは、ソース・コードの論理グループをすべて保持した、1 つのソース・ツリー・グループです。

プロジェクトが大きくなるにつれて、新規のソース・ツリーを追加する必要が生じる場合があります。 既存のコンポーネントに変更を保持させても意味がない場合、新規コンポーネントを追加する必要があります。

$ lscm create component "Flux Capacitor" "DeLorian Upgrades" -r l
コンポーネント (8553) "Flux Capacitor" が正常に作成されました。

上記の例では、ストリーム DeLorian Upgrades に新規コンポーネントを作成しました。 そのストリームとコラボレーションするワークスペースを持つユーザーには、そのコンポーネントの追加が、着信する変更として表示されます。 それらのユーザーは、着信する変更を受諾すると、コンポーネントの内容を受け取ります。

新規ファイルをその目的用に作成されたコンポーネントに追加する場合、ユーザーはこのタスクを、share サブコマンドを使用して実行できます。 Rational Team Concert ソース管理 では、ディレクトリーおよびフォルダーはワークスペース内でのみ共有することができます。 ユーザーは、新規コンポーネントをリモート・ワークスペースに追加する必要があります。

$ lscm workspace add-component -r l myNewWorkspace 8553
コンポーネント (8553) "Flux Capacitor" が正常に追加されました。

上の例で、別名 8553 は、前の例から新規に作成されたコンポーネントを指しています。

これで新規コンポーネントがワークスペース内に追加されました。ユーザーはワークスペースでソース・ツリーを share する必要があります。

$ lscm share -r l myNewWorkspace 8553 flux.capacitor
ファイルのアップロード中...
正常に共有されました。

上の例では、このアクションにより、ディレクトリー flux.capacitor の内容が myNewWorkspace というリモート・ワークスペースにアップロードされ、それが 8553 によって指定されたコンポーネント (直前のステップの Flux Capacitor) に追加されます。


フィードバック

この情報はお役に立ちましたか? Jazz.net でフィードバックをお送り頂けます (登録が必要です): フォーラムにコメントを記入したり、バグを送信したりすることができます。