Объединение решений — из разных систем управления версиями

#svn #tfs #visual-studio-2015 #tortoisesvn #azure-devops

#svn #tfs #visual-studio-2015 #tortoisesvn #azure-devops

Вопрос:

У меня возникли несколько проблем. Трудно действительно объяснить, в чем заключается эта проблема, не вдаваясь в предысторию.

Мы работаем с партнером по разработке, который периодически предоставляет нам пакет разработки, представляющий собой решение Visual Studio для многих проектов, представляющих около 30 000 исходных файлов. Они предоставляют нам репозиторий Subversion, куда мы заходим и загружаем пакеты разработки по мере их выпуска.

Мы начали с этого «пакета разработки» и работали с ним в нашей команде много месяцев. Мы добавили наши собственные исходные файлы и изменили некоторый базовый код. Мы используем Visual Studio Team Services для управления системой управления версиями в нашей команде.

Теперь наш партнер предоставил нам новый пакет разработки. Итак, у меня есть новое репозиторий subversion (только для чтения), из которого можно загрузить новый код.

Последние несколько дней я пытался загрузить и объединить новый DevPack с нашим текущим кодом.

Я считаю, что мы должны иметь возможность использовать TortoiseSVN для извлечения кода из репозитория в мой рабочий каталог TFS. Затем Tortoise должен выделить новые и измененные файлы и также предоставить мне параметры слияния. Но это не работает. Просто появляется сообщение о том, что файлы уже существуют и являются «версионными».

У кого-нибудь есть какие-нибудь идеи?

Ответ №1:

Независимо от вашего выбора системы управления версиями я бы сделал следующее:

Начальная настройка с помощью первого пакета разработки

  1. Зафиксируйте полученный DevPack в папке, назовем ее веткой Partner, без внесения каких-либо изменений.
  2. Создайте филиал партнера, назовем его Dev, для внесения собственных изменений.

При получении нового пакета разработки

  1. Проверьте всю ветку Partner и скопируйте новый пакет разработки в локальную папку.
  2. Сравните сервер с локальным, чтобы обнаружить удаленные / добавленные файлы и соответственно удалить / добавить их.
  3. Внесите изменения в ветку партнера.
  4. Объединение от партнера к разработчику и фиксация при удовлетворении.

Используя описанный выше подход, вы можете одновременно видеть, какие изменения вносит ваш партнер в свою доставку, и иметь возможность объединить их изменения с вашей модифицированной версией.

Комментарии:

1. Я пробовал это сегодня.

2. Я пробовал это сегодня — это позволяет получить недостающие исходные файлы, но не обновляет проект. Я переключился на рассмотрение этого для каждого файла. Посмотрим, смогу ли я исправить это в одном файле и применить ту же логику к остальной части решения. В файле .CSPROJ в SVN, если я загружаю новую копию, файлы перечислены правильно. Если я попытаюсь выполнить какое-либо слияние / обновление для этого конкретного файла, моя рабочая копия просто никогда не обновляется — она всегда сохраняет исходный файл.

3. Я попытался улучшить предлагаемое решение, чтобы его было легче понять.

4. Спасибо — Это легче понять. Однако ситуация, в которой я нахожусь, заключается в том, что у нас уже есть «ветвь» кода, который использует старый DevPack, поэтому между ними нет взаимосвязи Дерево / ветвь. Вместо этого я попытался загрузить последний пакет разработки и сделать его филиалом (партнером). Затем я создал новую ветку (Dev) на основе этого, чтобы сделать связь такой, чтобы она была, по сути, дублирующей копией. Затем я проверил ветку Dev и скопировал свое решение в эту ветку, перезаписав файлы и вернув их все. Однако, когда я пытаюсь «объединить» разработчика с партнером, он говорит, что изменений нет.

5. Я бы предпочел объединить от партнера к разработчику , но все еще странно, что он утверждает, что изменений нет. Что произойдет, если сравнить две ветви?

Ответ №2:

Для достижения этой цели вы можете обратиться к следующим шагам:

  1. Загрузите последний пакет разработки в систему управления версиями и сделайте его филиалом (партнером)
  2. Создайте новую ветку (Dev) из партнерской ветки
  3. Проверьте изменения в ветке разработки
  4. Скопируйте ваше решение в ветку разработки (локальная папка сопоставления)
  5. Внесите изменения (изменения на шаге 4) в ветку разработки (в противном случае вы получите результат «изменений нет»)
  6. Объедините ветку разработчика с веткой партнера и устраните конфликт