Найкращий спосіб: реструктурувати існуюче рішення сервера Team Foundation Server (TFS)


12

У моєму відділі ми розробляємо кілька менших AddOns для якогось єдиного сервера зв'язку. Для розробки версій та розподілених версій ми використовуємо Team Foundation Server 2012.

Але: існує лише одне велике рішення TFS для всіх наших програм і бібліотек:

  • Основне рішення
    • Програми
      • Додаток 1
      • Додаток 2
      • Додаток 3
    • Зовнішні
    • Бібліотеки
      • Lib 1
      • Lib 2
    • Інструменти

Шлях "Додаток" містить усі основні програми. Вони не залежать один від одного, але залежать від проектів "Бібліотеки та зовнішні організації".

Шлях "Зовнішні" містить деякі зовнішні DLL-файли, на які посилаються наші програми та бібліотеки.

Шлях до бібліотек містить часто використовувані файли (шаблони користувальницького інтерфейсу, класи Helper тощо). Вони не залежать один від одного і на них посилаються в бібліотеках та проектах Інструменти.

Шлях до Інструментів містить деякі допоміжні програми, такі як помічники з налаштування, оновлення веб-служб тощо.

Тепер є кілька основних моментів, чому я хотів би змінити цю структуру:

  • Ми не можемо використовувати збірки серверів.
  • Незручно керувати керуванням scrums TFS за допомогою спринтів, перешкод тощо тощо із такою структурою рішення.
  • Кожен розробник завжди має доступ до всіх проектів у рішенні.
  • Повна збірка триває занадто довго, якщо випадково потрапить [F6] у Visual Studio ...

Що ви змінили б у цьому рішенні? Як би ви поділили ці проекти на більш дрібні рішення, як вони повинні бути структуровані.

Першим моїм підходом було б створення одного проекту TFS для кожної програми, бібліотеки та інструменту. Але як я можу переконатися, що наприклад, у додатку 2 завжди є найновіша версія Lib 1? Чи потрібно контролювати зміни в Lib 1 та оновлювати додаток 2 вручну, як тільки Lib зміниться? Або я можу якось змусити Visual Studio завжди якось використовувати найновішу версію зовнішнього проекту?

Редагувати: На TFS є лише одна колекція TFS Team Project, що містить один проект TFS Team. Командний проект містить одне велике рішення Visual Studio, яке містить кілька папок, що містять (див. Структуру вище), причому кожна з них містить кілька проектів VS.

Зараз у мене запитання, як би ви переорганізувались:

  1. Проекти команди TFS
  2. Проекти VS

1
Коли ви говорите "одне велике рішення TFS", ви говорите про колекцію проекту TFS Team Project, або команду проекту TFS, або рішення Visual Studio?
Зугбо

Як сказав Зугбо, я думаю, що вам потрібно отримати правильну термінологію, перш ніж хто-небудь зможе допомогти відповісти на це, оскільки ви, здається, змішуєте проектні команди TFS з рішеннями Visual Studio. Ви можете мати єдиний командний проект із кількома рішеннями.
Том Робінсон

Вибачте за надання занадто мало деталей. Я відредагую своє початкове запитання.
dhh

Відповіді:


11

Дотримуйтесь одного командного проекту TFS, коли декілька стає болем при спробі оновлення та має деякі обмеження, коли справа стосується перехресних елементів роботи командного проекту. Натомість вам слід активно використовувати Області та Ітерації.

Розподіліть свій VS Solution на кілька рішень, по одному на основне застосування. Це значно пришвидшить локальні побудови, а також сервер збірки.

TFS2012 має нову концепцію під назвою Команди, створює команду за програмою та встановлює ітерації та відставання за замовчуванням для кожного. Таким чином ви можете керувати відставаннями для кожного або переглядати кореневу команду, щоб побачити згорнутий пробіг. Тоді ви можете керувати спринтами або на рівні програми, або загалом залежно від того, що вам підходить.

Створіть пакети NuGet для всіх сторонніх бібліотек, у яких його ще немає. Зберігайте їх у приватному сховищі (спільна папка Windows) та увімкніть функцію відновлення пакету для NuGet, клацнувши правою кнопкою миші кожне рішення та включивши його (також дозволяйте відновити пакет для завантаження пакетів у налаштуваннях проти).

Якщо у вас є спільні внутрішні бібліотеки, тоді також створіть пакети NuGet для них і створіть рішення vs, що містить цю бібліотеку. Додайте команду build post, щоб створити пакунок nuget, або розгорніть свій шаблон збирання tfs, щоб це зробити (там є ряд шаблонів, які вже роблять це).


+1 - бажаю, щоб я міг зробити це більше. Прив’язання структури репо до структури програми - це рецепт проблем із зміною структури додатків. Нехай «м'яка» сегрегація файлів рішення, областей та ітерацій слугує межею та ділиться тим, що має сенс поділитися.
Теластин
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.