Добавление ссылки на проект в перенаправлениях TFS к ранее разветвленной версии проекта ♦ - PullRequest
1 голос
/ 31 мая 2011

У меня есть структура TFS, которая выглядит примерно так:

$

-MainSoftwareBranch

-Dev

-Main

-Enterprise

-Project1

-Test

-TeamProjectA

-Main

-Enterprise

-Project1

-TeamProjectB

-Main

-Enterprise

-Project1

Конечной целью этого является то, что MainSoftwareBranch (MSB) содержит все программное обеспечение, которое разрабатывает наша компания.Когда вам нужен фрагмент программного обеспечения, вы добавляете его в свою ветку проекта и добавляете ссылку на проект, где это необходимо.

Некоторое время назад кто-то, кто не очень хорошо знал нашу стратегию ветвления, разветвил Project1непосредственно из TeamProjectB в TeamProjectA, а не из MSB.Я попытался исправить это и удалил ссылку на проект на $ / TeamProjectB / Main / Enterprise / Project1, откуда он был указан в TeamProjectA.Я разветвил Project1 из $ / MSB / Main / Enterprise / Project1 и попытался добавить проект в решение, используя «Добавить существующий проект ...» и перейдя по локальному пути, где находится файл csproj.Загруженный проект - это проект из $ / TeamProjectB.Я удалил привязки управления исходным кодом, как в TFS, так и вручную в файлах csproj и sln, но ничего не изменилось.Он всегда «перенаправляет» мой запрос на открытие правильного файла csproj к старому, который недопустим.

Кто-нибудь знает, что может быть причиной такого странного поведения?

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Несколько вещей для проверки ... но перед тем, как вносить какие-либо изменения в структуру TFS / проекта, я рекомендую проверить все текущие изменения (для всех команд), выполнить последние действия для извлечения всех этих изменений и выполнитьрезервная копия всей вашей локальной папки рабочего пространства.

Один момент, который мне нужно уточнить, чтобы полностью ответить вам ... какие подпапки разветвляются?IE вы обычно используете от MSB/Main до TeamProjectA/Main или отдельные проекты, например, MSB/Main/Enterprise/Project1, Project2 и т. Д .?

Сначала : проверьте сопоставления рабочей области ... в Visual Studio откройте проводник управления версиями.В верхней части окна есть раскрывающееся рабочее пространство ... выберите "Управление рабочими пространствами ..." и отредактируйте основное рабочее пространство.

В идеале есть только одна рабочая папка, отображающая корень вашей TFS.проект (в вашем случае '$') в корневую локальную рабочую папку.Если у вас более одной рабочей папки, убедитесь, что вторая (-ые) папка (-и) не являются подпапками корня.То есть у вас не должно быть отдельной папки для $/TeamProjectA/Main/Enterprise/Project1.Если вы это сделаете, удалите его и получите последнюю версию из корня.

Это мое первое предположение, потому что если TeamProjectB/Project1 сопоставлен с папкой TeamProjectA, то не имеет значения, сколько развы меняете ссылки, вы всегда будете загружать проект команды B.

Второй : Вы делаете ветку только один раз.Все после этого сливается, и вы можете объединяться только между непосредственным родителем и детьми (если только вы не перепрыгиваете через обручи, чтобы вручную связываться со слиянием ... стрельба в 9 странах).

Это означает, что до тех пор, пока Project1 был отделен от TeamProjectB, вы всегда будете привязаны к TeamProjectB ... Вы можете исправить ссылки в TFS для каждой команды и для проекта, но когда вы сливаете TeamProjectA обратно в MSB, Project1 не будет сливаться в MSB со всем остальным.

Мне непонятно, что случилось бы ... либо этот проект просто не слился ни с чем, либо он вернулся в папку TeamProjectB.Я сильно сомневаюсь, что последний случай, но первый тоже не имеет особого смысла ... Я бы почти ожидал, что TFS каким-то образом закоротит.

Я предполагаю (завершите WAG), что, поскольку вы смогли разветвляться Project1 с TPB до TPA, вы не разветвляетесь /Main или /Main/Enterprise ... Я надеюсьответ в том, что TFS не позволит вам перейти в подпапку другой ветви.

Чтобы исправить это

  1. Слияние Project1 назад к TPB.Регистрация.

  2. Слияние TPB/Project1 назад к MSB.Регистрация.

  3. Выберите TPA/Project1.Перейти к File -> Source Control -> Branching and Merging -> Reparent.Выберите MSB's Project 1 в качестве нового родителя.Если ваши ветки сделаны из /Main или /Main/Enterprise, вам придется переписываться от того, какой корень ветки есть.(Обратите внимание, что если TPB/Project1 не был получен из MSB, это не будет вариантом ... Перейти к плану 'B')

  4. Не уверен, что вы можете / должны проверить эти изменения в ... выполните проверку на TPA и MSB, чтобы быть в безопасности

Plan 'B' : Если это не сработает, вам придется удалить TPA/Project1 и повторно перейти с MSB.Перед тем, как сделать это, убедитесь, что все объединено до MSB (и зарегистрировано).

TFS может жаловаться на повторный переход в существующий каталог (поскольку он хранит историю удалений TPA/Project1) ... Я не думаю, что это произойдет, но еслиэто так, вам придется использовать инструмент командной строки для окончательного удаления TPA/Project1.Команда tf destroy ... убедитесь, что вы запускаете ее из локальной папки TPA/Project1, иначе tf не сможет разрешить сервер / путь tfs.

HTH!Джеймс

0 голосов
/ 01 июня 2011

Ссылки на проекты не имеют ничего общего с TFS.Они являются ссылками относительно вашего локального диска.

Теперь, если ваши проекты окажутся в рабочей области TFS на локальном диске, у вас будут ссылки относительно рабочей области.

Посмотритевнутри отдельных файлов .csproj или .vbproj, чтобы увидеть ссылки на них.Я подозреваю, что вы обнаружите, что у вас есть относительные ссылки, такие как ../../../../SomeProject.csproj, где относительный путь идет вверх из вашей рабочей области, а затем обратно.

...