Shelve コマンド (Team Foundation バージョン管理)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Team Foundation バージョン管理 (TFVC) の shelve コマンドを使用して、一連の保留中の変更と、保留中のチェックイン メモ、コメント、関連する作業項目の一覧を、実際にこれらをチェックインせずに Azure DevOps サーバーに保存します。

前提条件

shelve コマンドを使用してシェルブセットを削除する場合は、シェルブセットの所有者であるか、[シェルブされた変更の管理] アクセス許可が [許可] に設定されている必要があります。 詳細については、「既定の TFVC アクセス許可」を参照してください。

構文

tf shelve  [/replace] [/comment:("comment"|@commentfile)] [shelvesetname] [/validate][/noprompt] [/login:username,[password]]
tf shelve [/move] [/replace] [/comment:("comment"|@commentfile)] 
[/recursive] [shelvesetname] itemspec [/validate] [/noprompt] [/login:username,[password]]
tf shelve /delete shelvesetname[;owner] [/login:username,[password]] [/collection:TeamProjectCollectionUrl]

パラメーター

引数

Argument 説明
<commentfile> シェルブセットのコメントを読み取るファイルのファイル システム パスを指定します。
<comment> シェルブセットのコメントを指定します。
<itemspec> シェルブするファイルまたはフォルダーを識別します。 このパラメーターを指定しない場合、既定では、現在のワークスペースの保留中の変更がすべてシェルブされます。 Team Foundation でどのように itemspec が解析され、スコープ内にある項目が特定されるかの詳細については、「オプションを使用してコマンドの機能を変更する」を参照してください。
<shelvesetname> Azure DevOps サーバーからシェルブセットを取得するのに使用できる名前を指定します。 shelvesetnameowner の既存の組み合わせを指定できますが、/replace も指定されている場合に限ります。

このパラメーターの値を指定する必要があります。
<owner> シェルブセットの現在または想定された所有者をユーザー名で識別します。 所有者が指定されていない場合、既定では、現在のユーザーにシェルブセットの所有権が割り当てられます。
<username> /login オプションに値を指定します。 ユーザー名の値は、DOMAIN\username または username の形式で指定できます。
<TeamProjectCollectionUrl> シェルブするファイルまたはフォルダーを含むプロジェクト コレクションの URL (例: http://myserver:8080/tfs/DefaultCollection/)。

Options

オプション 説明
/new 保留中の変更それぞれの選択された状態 (Visual Studio の [チェックイン] ダイアログ ボックスに表示)、コメント、関連する作業項目、チェックイン メモ、およびチェックイン ポリシーのオーバーライドの理由は、チェックインするまで保留中の変更として開発用マシンに保存されます。 /new オプションを使用して、チェックイン前にこのチェックイン メタデータをクリアします。
/move シェルブ操作が正常に行われた後に、ワークスペースから保留中の変更を削除します。
/replace 既存のシェルブセットを、ご自身で指定したものと同じ名前と所有者に置き換えます。
/delete 指定したシェルブセットを削除します。 このオプションと組み合わせることができるのは、/server オプションのみです。 /noprompt オプションを含めない場合、/delete オプションを指定すると確認メッセージが表示されます。
/comment シェルブされた変更について記述する、指定されたコメントを追加します。
/recursive 指定したシェルブセット フォルダー内のすべての項目、そのサブフォルダー、さらに、指定した itemspec がフォルダーである場合は、その中のすべての項目をシェルブします。
/noprompt ユーザーからの入力を求めるプロンプトが表示されないようにします。
/validate このオプションを指定した場合、[Shelve - Source Files] (シェルブ - ソース ファイル) ダイアログ ボックスを開くと、その中の [シェルブする前に、ポリシーおよびチェックイン メモを評価] チェック ボックスがオンになります。 検証チェック ボックスをオンにすると、ダイアログでチェックイン ポリシーが評価され、必要なチェックイン メモが入力されていることが確認されます。 このオプションは、他のユーザーにレビューおよびチェックインしてもらうために、変更を渡す場合に便利です。 /noprompt と組み合わせた場合は無効です。
/login Azure DevOps Server でユーザーを認証するためのユーザー名とパスワードを指定します。
/collection プロジェクト コレクションを指定します。

解説

tf コマンドライン ユーティリティの shelve コマンドを指定すると、シェルブセット内の保留中の変更、関連する作業項目の一覧、進行中のチェックイン メモ、コメントが Azure DevOps サーバーにバックアップされます。 "シェルブセット" は、サーバーにコミットされていない変更セットによく似ています。 変更セットと同様に、十分なアクセス許可を持つユーザーならだれでも、シェルブセットをサーバーからローカル ワークスペースに取得できます。

シェルブは、十分にテストされていない保留中の変更をチェックインする代わりに行う方法です。 以下を行うために作業を中断する場合は、シェルブを使用します。

  • 変更をバージョン管理サーバーにチェック インせずに、一連のローカル作業ファイルを別の開発者またはテスト担当者と共有する。

  • 一連の保留中の変更をチェックインせずに一時的に中止しておき、代わりに優先度の高い問題に取り組むことができるようにする。 優先度の高いタスクの作業が完了したら、シェルブされた変更を Unshelve コマンドを使用して復元できます。

/move オプションを含める場合、shelve コマンドを使用すると、それぞれのシェルブされたファイル リビジョンが "基本ワークスペース バージョン" (サーバーから現在のワークスペースに取得された最新バージョン) にロール バックされます。 具体的には、シェルブするすべての項目に対し、/move オプションで以下が行われます。

  • Undo を使用して、シェルブされた変更を元に戻します。 追加が保留中だったファイルは、ワークスペースから削除されます。

  • 保留中の編集が存在するすべてのファイルの基本ワークスペース バージョンを、サーバーから現在のワークスペースに取得します。

  • 現在のワークスペース内のすべての項目に読み取り専用とマークします。

/delete オプションを含めると、TFVC では指定されたシェルブセットを Azure DevOps サーバーから完全に削除します。

tf コマンド ライン ユーティリティの使用方法の詳細については、「Team Foundation バージョン管理コマンドの使用」を参照してください。

次の例では、Reflector_BuddyTest という名前の新しいシェルブセットを Azure DevOps サーバーに作成し、所有権をユーザー Pat に割り当て、現在のワークスペース内のすべての項目を、最後の get 操作中にダウンロードされた最新バージョンに返し、読み取り専用状態を設定します。

c:\projects> tf shelve Reflector_BuddyTest;Pat /move

次の例では、既存のシェルブセット new-feature をサーバーから削除し、その名前で新しいシェルブセットを作成し、保留中のすべての変更を現在のワークスペースに保持します。

c:\projects> tf shelve new-feature /replace

次の例では、C:\projects 作業フォルダーとそのサブフォルダー内のすべての .cs ファイルに対するすべての保留中の変更を含む、HelloWorld_TestMe という名前のシェルブセットを作成します。

c:\projects> tf shelve HelloWorld_TestMe c:\projects\*.cs /recursive

次の例では、HelloWorld_24 シェルブセットを削除します。

c:\projects> tf shelve HelloWorld_24 /delete