0

私のチームは、Visual Studio 2008 を使用して SSIS パッケージを開発し、Perforce をソース管理システムとして使用しています。ユーザーがプロジェクトにファイルを追加すると、プロジェクトは、現在のバージョンであるかどうかを確認することなく、自動的にチェックアウトされます。 ファイルをチェックアウトする前に、Visual Studio にファイルの最新バージョンを強制的に取得させる方法はありますか?

通常、これは Visual Studio でファイルが「見つからない」状態になった後に発生したと判断されます。通常は次のようになります。

  1. ユーザー A がプロジェクトにファイルを追加します。
  2. ユーザー A は、プロジェクトと新しいファイルの両方をチェックインします。
  3. ユーザー B が最新バージョンを取得せずにプロジェクトをチェックアウトする
  4. ユーザー B がファイルを追加します。
  5. ユーザー B は、プロジェクトと新しいファイルの両方をチェックインします。
  6. ユーザー A は最新のプロジェクト定義を取得し、ファイルが「見つからない」ことに気付きます。

予防策として、ファイルを追加する直前に最新のプロジェクト定義を取得するようチーム メンバーに要求しています。この予防策にもかかわらず、間違いが起こり続け、ファイルが「消えて」しまいます。Perforce から手動でそれらを取得して、プロジェクト定義に追加し直すことはできますが、この苦労をまったく経験する必要はありません。Perforce がファイルへの変更を自動的に検出できることは知っています。PERFORCE は自動的にローカル コピーをサーバー バージョンと比較し、[チェックアウトの取り消し] を選択したときに違いが検出された場合は、ローカル バージョンを置き換えます。VSS のようにファイルをチェックアウトできるようにする前に、強制的にチェックする方法が必要です。 開発者が VSS に戻りたいと言うのは悲しいことです。

4

1 に答える 1

1

これは、P4SCC および Visual Studio で使用されている「共有」ワークスペース クライアントで問題になる可能性があります。ワークスペース クライアントは、各ユーザーおよびマシンに固有のものである必要があります。Perforce はワークスペース クライアントを使用して、特定のマシンのワークスペースの内容を追跡します。

両方のユーザーが同じワークスペース クライアントを使用している場合は、次のようになります。

  • ユーザー A と B の両方が、「standard_1」クライアントを使用して最新のリビジョンに強制的に同期します。サーバーの have テーブルが更新され、プロジェクト「foo」がリビジョン #12 であることがわかります。

  • ユーザー B は「foo」をチェックアウトし、ファイルを追加して送信します。これで have テーブルが更新され、プロジェクト "foo" が standard_1 ワークスペースのリビジョン #13 であることがわかります。

  • ユーザー A は、プロジェクト「foo」をチェックアウトし、ファイルを追加して、コンフリクトなしで、standard_1 ワークスペースのリビジョン #14 としてサブミットします。これは、PERFORCE がワークスペースに既に #13 があると考えているためです。

解決策は、各ユーザーが自分のマシンに固有のワークスペース クライアント仕様を持っていることを確認することです。これにより、各ユーザー ワークスペースの所有リストが分離され、編集時の警告とチェックイン時の競合が毎回機能します。

于 2009-06-13T00:22:28.427 に答える