0


0

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

通常、これはVisual Studioでファイルが "なくなった"後に発生したと判断します。 これは通常起こることです:

  1. ユーザーAがプロジェクトにファイルを追加します。

  2. ユーザーAがプロジェクトと新しいファイルの両方をチェックインします。

  3. ユーザーBは最新バージョンを入手せずにプロジェクトをチェックアウトします

  4. ユーザーBがファイルを追加します。

  5. ユーザーBがプロジェクトと新しいファイルの両方をチェックインします。

  6. ユーザーAは最新のプロジェクト定義を取得し、それらのファイルが「欠落している」ことに気付きます。

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

1 Answer


1


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

これは、両方のユーザーが同じワークスペースクライアントを使用している場合の動作です。

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

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

  • ユーザAはプロジェクト "foo"をチェックアウトし、ファイルを追加し、矛盾なく - standard_1ワークスペースのリビジョン#14として送信します。これは、Perforceがすでにそのワークスペースに#13があると見なすためです。

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