3

git-tf を使用して TFS プロジェクトにプッシュしています。1 つまたは複数のコミットを TFS にチェックインしようとすると、次のようなメッセージが表示されることがあります。

TFS に接続しています...
$/MyProject にチェックインしています: 0%
git-tf: $/MyProject をロックできませんでした

これは何を意味するのでしょうか?ロックできない原因は何ですか? どうすればこれを修正できますか?

4

1 に答える 1

5

なぜそれが起こるのか

標準的な TFS の使用法では、一度に 1 つのコミットのみをチェックインします。しかし、Git を使用すると、一連のコミットを一度にプッシュできます。

そのため、git-tf は一連のコミットをアトミックに保つよう努めています。チェックイン中に誰かがチェックインすると、履歴が混乱する可能性があります。正しくマージされません。

これを防ぐために、git-tfはチェックイン中にソース ツリー全体を一時的にロックします。ただし、他の誰かがソース ツリーの一部を既にロックしている場合は、これを行うことはできません。

修正しない方法

--no-lock 引数がいくつかの場所で推奨されていることがわかります。

git tf checkin --no-lock

これは良い解決策ではありません。 潜在的なスクランブル履歴の問題を解決するのではなく、無視します。

修正方法

  1. 使用している TFS のバージョンに基づいて、適切なバージョンのTFS Sidekicksをダウンロードしてインストールします。
  2. TFS サイドキックを実行します。
  3. [ツール] > [ステータス サイドキック] に移動します。
  4. [ユーザー名] フィールドをクリアします。
  5. プロジェクトの全履歴を網羅するのに十分広い日付範囲を設定します。必要に応じて、プロジェクト名フィールドをフィルタリングできます。
  6. [検索] をクリックします。プロジェクトでチェックアウトされたすべてのファイルのリストが表示されます。
  7. [ロック タイプ] 列ヘッダーをクリックして、その列で並べ替えます。ほとんどのファイルでは、おそらくその列に「なし」と表示されます。代わりに「ロック」されているファイルを探しています。これは、マージできないバイナリ ファイルで最も一般的です。デフォルトでは、TFS はそれらがチェックアウトされたときにそれらを排他的にロックします。
  8. どのファイルがロックされているかがわかったら、そのファイルをロックしている人と話し、ロックを解除するように交渉します。その人がそこで働いていない場合は、TFS 管理者にロックを解除してもらうことができます。
  9. すべてのロックが解除されたら、TFS Sidekicks でもう一度 [検索] をクリックすると、すべてのファイルのロック タイプが「なし」になっていることがわかります。今度は git tf チェックインをもう一度試してみてください。今回は正しく動作するはずです。
于 2014-04-15T17:30:30.587 に答える