1

免責事項: 私は TFS に行き詰まっており、嫌いです。

私のソース管理構造は次のようになります。

  • /dev
  • /リリース
  • /支店
  • /実験的アップグレード

私はdevからexperimental-upgradeに分岐しましたが、触れませんでした。その後、dev でさらに作業を行い、experimental-upgrade にマージしました。どういうわけか、TFS は、ソースとターゲットの両方に変更があり、それらを解決する必要があると不平を言いました。5 つのアイテムすべてに対して「ソース ブランチからアイテムをコピーする」を選択しました。

私は実験的アップグレードをローカル フォルダーにチェックアウトし、そこにあるメイン ソリューション ファイルを開こうとしました。TFS は私にプロンプ​​トを表示します:

「最近、プロジェクトがこのソリューションに追加されました。ソース管理からプロジェクトを取得しますか?

私が「はい」と言った場合、それはいくつかのことを行いますが、最終的には一握りのプロジェクトの読み込みに失敗して戻ってきます。いいえと言うと、同じ結果が得られます。

両方のブランチで私の sln を比較すると、それらが等しいことがわかります。

誰かが私が間違っていることを教えてもらえますか? これは簡単なブランチ/マージ操作である必要があります...

ティア。


アップデート:

上記のダイアログで「はい」をクリックすると、プロジェクトがソース管理の $/ ルートにダウンロードされることに気付きました... (つまり、dev & ブランチ フォルダーから)

ブランチでソリューションを開いてデッド プロジェクトを削除し、それらを再度追加しようとすると (sln を右クリックして既存のプロジェクトを追加し、ブランチ フォルダにあるプロジェクトを選択すると、エラーが発生します...

プロジェクト c:\sandbox\my_solution\proj1\proj1.csproj を読み込めません。ファイルは削除または削除されています。追加しようとしていたプロジェクト パスは次のとおりです: c:\sandbox\my_solution\branches\experimental-upgrade\proj1\proj1.csproj

これらのプロジェクトをローカルルートの外に向けているのは一体何なのでしょうか? ソリューション ファイルは dev ブランチのものと同一であり、これらのプロジェクトは正常に読み込まれます。vspscc および vssscc ファイルも調べましたが、何も見つかりませんでした。

アイデア?

4

6 に答える 6

2

@ベン

実際にはTFSで完全削除を実行できますが、何を実行しているかを理解していない限り、これは強くお勧めしません。コマンドラインからコマンドtfdestroyを使用して実行する必要があります

tf destroy [/keephistory] itemspec1 [;versionspec]
           [itemspec2...itemspecN] [/stopat:versionspec] [/preview]
           [/startcleanup] [/noprompt]

Versionspec:
    Date/Time         Dmm/dd/yyyy
                      or any .Net Framework-supported format
                      or any of the date formats of the local machine
    Changeset number  Cnnnnnn
    Label             Llabelname
    Latest version    T
    Workspace         Wworkspacename;workspaceowner

これを行う直前に、/previewで試してみてください。また、誰もが分岐のための独自の方法論を持っています。私はリリースを分岐し、開発フォルダーまたはルートフォルダーですべての開発を行います。また、ブランチが正常に機能しているように聞こえました。ソリューションファイルが台無しにされただけでした。これは、バインディングの問題とvssssファイルが原因である可能性があります。

于 2008-09-03T20:51:26.177 に答える
0

@ニック:これにはまだ変更が加えられていません。削除して再分岐する必要があるかもしれません(ただし、TFSでは完全に削除することはできません)

そして、私は反対しなければなりません...分岐は実験的な変更のための絶対に良い習慣です。棚は、まだチェックインしたくない場合にバックアップされる一時的なストレージです。ただし、実際の機能を開発する際には、これを開発する必要があります。

于 2008-09-03T20:40:01.790 に答える
0

ソリューションのセットアップについて詳しく知らなければ、確信が持てません。しかし、それを説明できるプロジェクト参照がある場合。「ブランチ」の下に「experimental-upgrade」サブフォルダがあるため、相対パスが変更されました。

これは、VSが.. \ .. \ project \で参照されているプロジェクトを検索していたときに、現在.. \ .. \ .. \ project\whateverで検索する必要があることを意味します。余分な..\に注意してください

これを修正するには、プロジェクト参照を再度追加する必要があります。私はより良い方法を見つけていません。それらを削除して再度追加するか、プロパティウィンドウに移動してパスを変更してから再ロードすることができます。いずれにせよ、プロジェクトからそれらへの参照をやり直す必要があります。

また、作業フォルダーをチェックして、プロジェクトが間違ったフォルダーにダウンロードされていないことを確認します。これは時々起こる可能性があります...

于 2008-09-03T20:47:18.183 に答える
0

いくつかのこと。フォルダ構造は同じですか?プロジェクト参照を正常に削除して読み取ることができますか?

ソリューションを作成してからすべてのプロジェクトを手動で追加すると、それは機能します。(それは実現可能ではないかもしれません-私たちは100以上のプロジェクトで解決策を持っています)。

もう1つ(そしてそれはばかげているかもしれません)-あなたがブランチをした後、あなたはそれをコミットしましたか?分岐してチェックインせずにマージしてから、チェックインしようとすると、TFSが大混乱したのではないかと思います。

于 2008-09-03T20:53:56.780 に答える
0

@ケビン:

これは、VSが参照されているプロジェクトを.... \ project \ whateverで検索していた場合、現在は...... \ project\whateverで検索する必要があることを意味します。余分な..\に注意してください

ここで何かをしているかもしれませんが、一部のプロジェクトがロードされ、他のプロジェクトがロードされない理由は説明されていません。私はまだそれらの間の相関関係を見つけていません。

プロジェクトを再度追加して、それが機能するかどうかを確認してみようと思います。

于 2008-09-03T20:56:51.733 に答える
0

@コーリー:

それが私がやろうとしていることだと思います...私は約20のプロジェクトを持っていて、8つほどがロードされていません。フォルダ構造はルートと同じです...つまり、DEVの外部に参照はありません。

于 2008-09-03T20:58:07.847 に答える