2010-06-08 2 views
1

Я просто перенесли команду из 7 разработчиков из VSS в TFS. Я перенесил весь их код в папку DEV, которую я затем разветвил в папку QA (которую я разветвил в папку PROD). Разработчики обычно не работают над одними и теми же файлами, но есть некоторые общие классы полезности. Весь код предназначен для большого веб-сайта ASP.NET. Когда разработчики готовы объединиться с DEV в QA, они хотят только объединить свои изменения. Например, предположим, что Developer1 работает над проектом в течение последних 3 месяцев, и он готов объединить весь свой код в QA. Однако Developer2 работает над другим проектом за последние 2 месяца, который не готов к объединению. Изменения Developer1 и Developer2 никоим образом не зависят друг от друга, но они не разделены на разные структуры папок, и каждый из них регулярно получает последнюю информацию. Кажется, что разработчик не может объединить свои изменения, не сводя вместе все изменения разработчика2. В настоящее время разработчик1 просматривает окно «Ожидающие изменения» и «Отмена ожидающих изменений» для всех изменений Developer2, но это занимает много времени. Они могут объединять каждый файл по отдельности, но это также требует много времени. Есть ли более простой способ? Я собираюсь иметь коронар, если узнаю, что еще один человек объяснит, насколько проще было работать в VSS.Слияние TFS для пользователей, которые используются для VSS

ответ

0

Похоже, что лучшая стратегия (продолжение) - это разветвление по проекту. Если Dev1 и Dev2 работают над принципиально разными вещами, они должны иметь свою собственную ветвь кода.

Помните, что все в TFS хранится как дельта и указатели, поэтому вы не увеличиваете размер своего репозитория, не увеличивая его размер. Пока файл не изменится, новая ветвь является только указателем на исходный файл, а затем, когда файл проверен, сохраняется только дельта.

В вашей текущей ситуации вы делаете так называемое слияние «вишневого». Это не забавная вещь (как вы узнаете), и она подвержена ошибкам PEBKAC. По этой причине слияние вишневых щелей категорически не рекомендуется. Однако, если вам нужно делать слияния вишни, вы можете установить некоторый контроль путем слияния с помощью набора изменений (вместо последнего).

Для этого определите набор изменений, которые Dev1 проверил в вашей ветке Dev, затем объедините эти изменения в свою ветку mainline. Вам нужно будет сделать это в порядке от старейшего до новейшего, чтобы получить все файлы. Лучше всего, если вы собираетесь это сделать, придется либо написать утилиту для этого, либо перейти к командной строке TF.EXE, чтобы вы могли объединить свои слияния.

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

Основной урок, который вы изучаете здесь является то, что ваша стратегия разветвление/методология является одним из самые важные вещи о SCM (в общем). Мы перешли из StarTeam в TFS чуть более полутора лет назад, и когда мы это сделали, мы потратили примерно 4 месяца на пересмотр нашего подхода к ветвям, пока не придумали что-то, что соответствует нашей среде и нашим процессам разработки.

+0

Это действительно наш веб-мастер, который делает это трудным. Он в основном меняет HTML и CSS, но он меняет страницы .aspx по всей нашей структуре каталогов.По большей части разработчики могут разделить свои проекты на разные папки (за исключением общего кода), но из-за того, что у нас есть веб-мастер, ответственный за страницы .aspx, это делает невозможным разделение его работы на отдельные папки , Да, мы могли бы сделать это разделение, перейдя к архитектуре, такой как ASP.NET MVC, или поставив наш код позади в разных папках, – JacksonD

+0

, но есть огромная база кода устаревшего кода, и это будет долгим мероприятием. В настоящее время мы не собираем вишни. Мы всегда объединяем последнюю версию файлов. Я подумал о том, чтобы дать веб-мастеру собственную ветку DEV, которую он мог бы затем объединить в QA, но для решения этой проблемы представляется сложной сложностью - например, разработчикам тогда придется периодически (по крайней мере, один раз день) сливаются с QA на DEV, чтобы получить изменения веб-мастера. Спасибо за ваш ответ. – JacksonD

+0

Разветвление для веб-мастера вполне разумно. Что касается слияния от QA до DEV ежедневно, то это хорошая практика, чтобы войти, и они должны быть в состоянии сделать это из своего браузера решений (щелкните правой кнопкой мыши, получите последнюю версию). Это то, как это делают наши разработчики. – Robaticus

0

Есть ли причина, по которой они, кажется, ветвятся все вместо своих собственных изменений?

В диалоговом окне слияния задается вопрос, хотите ли вы разветвить «все изменения до определенной версии» или «только конкретные изменения». Если вы выберете последний, вы можете вишнево выбрать свои изменения и не нужно принимать код каждого. Предполагая, что каждый разработчик работает над неперекрывающимся набором файлов, это не то, что должно вызывать проблемы.

+0

Я читал, что следует избегать сбора вишни. Один из пользователей - это веб-мастер. то есть он работает в основном с HTML и CSS на страницах .aspx, и он вносит небольшие изменения в большое количество страниц в структуре каталогов сайтов - поэтому файлы не перекрываются, но каталоги накладываются довольно немного. Я думаю, что внесение изменений в вишне для него было бы очень утомительным, так как ему пришлось бы объединять один набор изменений за раз, когда у другого пользователя есть изменения, установленные между его наборами изменений (т. Е. Когда он не может выбрать серию своих собственных наборов изменений). Спасибо за ваш ответ. – JacksonD

Смежные вопросы