Удаление основной магистрали в иерархии ветвей и наличие ветвей того же уровня

Я решил разветвить свое решение TFS на 4 ветки. Изначально у меня было одно решение VS, которое находилось под управлением исходного кода, под названием «Разработка». По мере роста продукта я решил создать 3 ветки для трех клиентов, которые его используют. Так что я:

  1. Разработка
  2. Разработка-Клиент1
  3. Разработка-Клиент2
  4. Разработка-Клиент3

У меня был новый запрос на изменение для «Development-Client2», я написал код и внес изменения. Когда я проверил исходные файлы, я заметил, что «Разработка» также учитывает эти новые изменения.

Когда я разветвил «Разработку», я ожидал, что у меня будет 4 версии решения, и я смогу объединить наборы изменений между ними.

Судя по моим текущим настройкам, любые изменения, которые я делаю в № 2, № 3 или № 4, будут автоматически добавлены в № 1.

Поскольку ветвление произошло недавно, я чувствую, что могу разобраться с этим сейчас. Кто-нибудь знает, что мне нужно, чтобы получить 4 независимых ветки?

ОБНОВИТЬ

В моем файле решения у меня есть 6 проектов:

  1. Веб-сайт ASP.NET (работает на локальном хосте).
  2. Консольное приложение
  3. Библиотека классов (бизнес-логика)
  4. Библиотека классов (доступ к данным)
  5. Библиотека классов (сущности)
  6. Библиотека классов (общие методы)

Я заметил, что для моих новых функций в «Разработка-Клиент2» изменения в проектах 2-6 ​​не были добавлены в ветку «Разработка» или ветки «Разработка-Клиент1» или «Разработка-Клиент3».

Однако любые изменения, которые я внес в "веб-сайт ASP.NET (работает на локальном хосте)" в "Development-Client2", были реплицированы во все ветки.

ОБНОВЛЕНИЕ 2

Я думаю, что произошло в следующем порядке:

  1. У меня было решение под названием «Разработка под управлением исходного кода» (TFS).
  2. Я создал ветку под названием Development-NewFeatureX.
  3. Я разветвлял Development-NewFeatureX 3 раза, у меня осталось Development, Development-NewFeatureX, Development-Client1, Development-Client2, Development-Client3
  4. Я удалил ветку Development-NewFeatureX.
  5. Я внес множество изменений в проекты 1, 3, 4 и 5 в ветке Development-Client2.
  6. В этот момент я понял, что изменения проекта 1 были воспроизведены в других ветвях.

Я также заметил, что в части Source Explorer TFS файл решения каждой из ветвей указывает на «Development-NewFeatureX» для проекта [веб-сайт ASP.NET (работает на локальном хосте)].

Я попытался проверить файл решения и изменить путь из:

..Разработка-NewFeatureX/ASPNETSITE

to:

..Разработка-ClientX/ASPNETSITE

Однако это просто не работает, и система управления версиями, похоже, перезаписывает файл решения.

Я думаю, что именно в этот момент я признаю поражение и пытаюсь начать новое решение.

Если какие-либо гуру TFS понимают, о чем я говорю, пожалуйста, дайте мне несколько советов.

РЕЗЮМЕ ПРОБЛЕМЫ

  • У меня 4 ветки.
  • Каждый раз, когда я открываю файл решения любой из ветвей проекта: «Веб-сайт ASP.NET (работает на локальном хосте)», он не отличается. то есть это один и тот же. Поэтому, если я внесу изменения в этот проект в любой ветке, это произойдет во всех них.
  • Сопоставленная папка этого проблемного проекта — это ветка, которую я удалил ранее.
  • Структура TFS кажется правильной с ветвями/проектами. Только когда я открываю файл решения, сайт ASP.NET всегда один и тот же.
  • Пожалуйста, смотрите скриншот.

введите здесь описание изображения


person Seany84    schedule 14.02.2012    source источник
comment
Какие версии TFS и VS?   -  person John Saunders    schedule 14.02.2012
comment
Честно говоря, система управления версиями должна работать не так... и я понятия не имею, почему это происходит с вами. Ветка — это отдельное усилие, не привязанное к корню, за исключением того, что вы можете выполнять в нем RI... RI не должно быть автоматическим... Я хотел бы посмотреть, как это произошло.   -  person AdamV    schedule 23.02.2012
comment
У меня есть ощущение, что это как-то связано со всеми веб-сайтами филиалов, указывающими на один и тот же экземпляр IIS. Что такое РИ?   -  person Seany84    schedule 23.02.2012


Ответы (3)


По моему опыту, VS всегда требовал работы с веб-сайтами с локального хоста.

Вот что всегда работало для меня:

  • Создавайте веб-проекты только так: Файл -> Новый проект -> Веб.
  • Всегда указывайте расположение проекта, т.е. w:\project\code\AppWebLocation
  • Then you can in Project Properties -> Web -> Servers
    • use localhost/virtualDir - it will do the mapping for you
    • используйте VS Development Server - я ненавижу это :-\
    • используйте IIS Express - я думаю, что локальный хост - лучший вариант.

Я думаю, что произошло в вашем случае: вы использовали проект «Файл» -> «Новый веб-сайт», он поместил проект в файл решения, а затем вы подключили этот веб-сайт к своему клиентскому решению, поскольку он был в том же месте. С тех пор TFS ковырял свои файлы из одного места для всех клиентов. что такое лаваш.

person b0rg    schedule 22.02.2012
comment
Это похоже на то, как TFS разветвляет решение. то есть он разветвил проект веб-сайта, хотя путь к сайту, например. экземпляр IIS оставался одинаковым для всех ветвей. Мне все еще нужно как-то это исправить. - person Seany84; 23.02.2012
comment
Проблема заключалась в том, что мой веб-проект содержит URL-адрес, с которого его следует запускать в IIS, например localhost/Development. путь был одинаковым во всех ветвях, и этот виртуальный каталог явно указывал на один и тот же физический путь. Я изменил настройки проекта в каждой ветке и создал уникальный путь, например localhost/Development-Clien1. Так что теперь все работает. - person Seany84; 09.03.2012

Несколько вещей, чтобы попробовать.

Поскольку у вас есть 2010: вы пытались отслеживать один из ваших наборов изменений в визуализаторе ветвей? Выберите конкретный набор изменений, сделанный в одной из ваших дочерних ветвей, который, по вашему мнению, реплицировался обратно в другие ветки, и посмотрите, куда, по мнению TFS, он пошел? Если он горит в других ветвях с новыми номерами наборов изменений, то это указывает на то, что произошло слияние. Затем вы можете найти набор изменений слияния и посмотреть, как он появился.

Если нет слияний, то как насчет истории конкретных файлов в других ваших ветках, которые, по вашему мнению, были реплицированы откуда-то еще, и проверить их различия, чтобы увидеть, откуда произошли их изменения?

Вы проверяли настройки IIS/виртуальных каталогов? Каждая ветвь указывает на правильный виртуальный каталог?

Сколько локальных рабочих пространств у вас настроено и как они настроены? Несколько рабочих областей в TFS могут вызвать путаницу, поскольку та, которую вы просматриваете в обозревателе управления версиями, может не совпадать с той, которую вы видите в окне «Ожидающие изменения», и это может привести к тому, что проверки будут проходить не там, где вы намеревались.

Наконец, мне любопытно - по какой причине вы хотите, чтобы ветки были отделены от их прародителя и друг от друга? Мне не совсем понятна польза/мотив удаления этой родительской ветки и отсечения их всех; Разве TFS не любит сохранять эти отношения родитель/потомок? Или он достаточно умен, чтобы помнить?

person bsktcase    schedule 21.02.2012
comment
Спасибо за ответ. Я обновил свой вопрос. Чтобы ответить на некоторые из ваших вопросов: у меня есть только одно рабочее пространство. Все решения в филиалах используют один и тот же сайт ASP.NET, и в результате все они указывают на один и тот же экземпляр IIS. - person Seany84; 22.02.2012

Вот как я бы изложил свою стратегию ветвления и развития, используя вашу ситуацию:

  • Root
    • Development (Folder)
      • Main (Where the common base code lives)
      • Заказчик А (филиал основной)
      • Заказчик Б (филиал основной)
      • Заказчик X (филиал основной)
    • Release
      • Customer A (folder for stable dev Customer A)
        • 20110101 (branch by release date, or some other designation like version)
        • 20110301 (здесь исправлены производственные ошибки, связанные с клиентом А)
      • Customer B
        • 20120210
      • Customer X
        • 20120101

На вашем локальном компьютере в IIS настройте веб-сайт с другим портом для каждого клиента и основной ветвью на порту 80. Таким образом, вы можете получить доступ ко всем параллельным сборкам без переключения.

Эта стратегия позволит вам выполнять общие исправления ошибок или общие функции в Main и при необходимости выполнять FI в ветвях Customer. При необходимости вы можете выполнить RI в Main от Customer, но вам это действительно не нужно, если вы придерживаетесь цели ветвей.

Это также позволяет вам сохранить стабильную версию кода для будущих нужд или исправления ошибок для каждого клиента.

Я знаю, что это не решит вашу проблему, но я надеюсь, что это поможет с будущей компоновкой ваших проектов.

person AdamV    schedule 22.02.2012
comment
Спасибо за ответ. Я рассмотрю возможность включения того, что вы предложили, если разберусь с этим нынешним беспорядком. Я действительно должен был прочитать немного больше, прежде чем я начал ветвление. Я просто предположил, что это будет работать так, как я ожидал. Опасное предположение с моей стороны. - person Seany84; 23.02.2012
comment
Нет проблем, я хотел бы увидеть, что происходит физически, чтобы помочь вам, поведение tfs интригует. - person AdamV; 23.02.2012
comment
Я только что разобрался, сегодня вечером я опубликую обновление о том, как я это исправил и что, по моему мнению, вызвало это. - person Seany84; 27.02.2012