Репозиторий Nuget для каждой ветки с TFS

У меня есть среда TFS со следующей настройкой ветвления

Dev - основная рабочая ветка для разработчиковГлавная - Стабильная, съемная веткаИсправление - для исправлений производственного кода, которые не являются частью нормального цикла выпуска

Мы настраиваемся на использование Nuget, и я хочу настроить вещи так, чтобы код в ветке Dev извлекал пакеты из репозитория nuget 'Dev', main - из репозитория 'Main' и т. Д.

Теперь я разобрался с тем, что у меня есть один файл, расположенный в корне моей ветки, который сообщает nuget.exe, какой репозиторий использовать.

Сейчас я пытаюсь выяснить, как различать содержимое этих файлов в каждой из этих веток. Я могу зарегистрировать их в каждой ветке отдельно, но это вызовет проблемы с объединением из Dev-> Main и Main-> HotFix.

Итак, я думаю, что я хочу как-то исключить этот конкретный конфигурационный файл из слияния с Dev-> Main и т. Д. Любой способ сделать это?

Или, в качестве альтернативы, есть какой-то другой способ выполнить то, что я хочу сделать с Nuget, с точки зрения указания его на разные репозитории Nuget для разных веток?

 Betty12 окт. 2012 г., 21:57
Таким образом, при выпуске компонента А что-то может сломаться, потому что это зависит от функциональности, которая еще не была выпущена в компоненте В? или вы все равно выпускаете их одновременно?
 Betty12 окт. 2012 г., 21:21
Могу ли я спросить, что вы получаете от этого?
 Craig Vermeer12 окт. 2012 г., 22:11
Более или менее да. Компонент B может иметь серьезные изменения в ветке Dev. Таким образом, разработчик, работающий над исправлением к компоненту A, может даже не скомпилировать свой код для версии B. Dev. Мы хотим, чтобы они ссылались на версию B. Prod версии B.
 Craig Vermeer12 окт. 2012 г., 21:50
Из разных хранилищ для разных веток? Ну, мы хотим использовать nuget для поддержки ссылок между различными командными проектами TFS. Итак, когда разработчик работает над Компонентом A (который имеет ссылку на Компонент B в другом командном проекте) в ветке Dev, мы хотим, чтобы их ссылка на nuget указывала на версию Dev. При работе с веткой HotFix мы хотим, чтобы эта ссылка указывала на версию Prod. Имеет ли это смысл?

Ответы на вопрос(1)

Решение Вопроса

Вы должны будете сделать немного обмана ...

Иметь другой канал для каждой ветви. Простой способ настроить несколько каналов - www.myget.orgВключите восстановление пакета NuGet в решениях, которые вы хотите зарегистрировать в этом поведенииВ файле решения .nuget \ nuget.config добавьте следующее:
<configuration>
  <packageSources>
    <add key="Branch X packages" value="http://www.myget.org/F/corpxyzbranchxyz" />
  </packageSources>
  <disabledPackageSources />
  <activePackageSource>
    <add key="Branch X packages" value="http://www.myget.org/F/corpxyzbranchxyz" />
  </activePackageSource>
</configuration>

Этотделает Это означает, что для каждой ветви у вас должен быть другой файл nuget.config, и вы должны быть осторожны при слиянии / ветвлении.

 Craig Vermeer30 нояб. 2012 г., 18:43
Благодарю. На этом я и остановился, хотя не знал об узле activePackageSource. Я надеялся найти способ предотвратить простые ошибки при объединении веток, но похоже, что это так же хорошо, как мы собираемся получить.

Ваш ответ на вопрос