Я пытаюсь разработать рабочий процесс, который позволяет нам поддерживать отдельные версии библиотек Visual Studio 2005 и 2008, в то же время следя за тем, чтобы изменения в одной ветви всегда реплицировались в другой ветви.
В настоящее время я рекомендую вносить изменения только в ветку по умолчанию (VS2005), а затем после ее завершения объединять с веткой VS2008. К сожалению, это зависит от дисциплины, а не просто для устранения проблем, когда и когда они обнаруживаются, и когда вы находитесь в затруднительном положении, это может быть сложно. Это привело к тому, что мне пришлось позднее попытаться переоборудовать изменения из одной ветви в настройку по умолчанию.
Я знаю, что мы могли бы сохранить изменения между проектом VS2005 и VS2008 в очереди исправлений, но я единственный в моей команде, которому удобно использовать командную строку, мои коллеги предпочитают делать все, хотя Tortoise HG .
Таким образом, я полагаюсь на исправление проблем после факта. Моя текущая процедура включает в себя экспорт патчей для каждого набора изменений в ветке VS2008 и применение их к ветке по умолчанию. Это отнимает много времени, но гораздо менее подвержено ошибкам, чем попытка объединить верхушку ветки VS2008 с верхушкой по умолчанию, а затем вручную преобразовать обратно в VS2005.
Прочитав эту статью , я попытался выполнить резервное копирование набора изменений 'upgrade', но результирующий набор изменений backout всегда заканчивается как новый совет ветки VS2008, плюс я не могу затем объединить изменения обратно, так как результирующее слияние заканчивается в ветке VS2008, даже если я пытаюсь явно закрыть ветку при фиксации.
Я пытался пойти на это несколькими способами, но я всегда получаю новую ветку VS2008 и не могу объединить изменения обратно с веткой по умолчанию. Таким образом, я начинаю осознавать, что упустил здесь нечто очевидное.
Итак, в конечном итоге, что другие люди считают наилучшей практикой, когда пытаются поддерживать две версии библиотеки, где единственное различие между ними - номера версий Visual Studio, встроенные в файлы проекта и решения?
Редактировать: проблема, которую я пытаюсь избежать, заключается в том, что если вы добавляете проект VS2005 в решение VS2008 (для упрощения отладки), он автоматически «обновляет» проект VS2005 до VS2008, что приводит к «измененной» рабочей копии и разбрызгивание ненужных «конверсионных» файлов. Таким образом, вместо того, чтобы соблазняться совершить «обновление» до основной линии, я предпочитаю держать ветки отдельно и требовать, чтобы пользователь выбирал нужную им версию при первом обновлении после клона.
Дальнейшее редактирование, с решением.
С еще большим беспорядком я нашел способ заставить этот рабочий процесс работать со стандартными инструментами TortoiseHg, и вмешательство командной строки необходимо только для настройки.
Во-первых, я обновил набор изменений, в котором проект был преобразован из VS2005 в VS2008. Я отказался от этой ревизии, создал патч возврата и удалил набор изменений (поскольку он был в ветке по умолчанию). Затем я применил патч возврата к ревизии преобразования (используя: hg patch --no-commit patch), а затем применил патч с новым именем ветки "VS2005". Затем я объединил кончик (неназванной) ветки VS2005.
Следующим шагом было обновление до старой вершины ветки VS2008 (без имени), внесение несущественного изменения и принятие его в качестве новой ветки VS2008. Затем я объединил изменения из подсказки VS2005, но когда я это сделал, не позволил внести изменения в файлы csproj. Затем я вернул эти файлы после коммита.
Наконец, я обновился до подсказки VS2005 и объединил в подсказку VS2008.
Это привело к двум подсказкам с одинаковым кодом, за исключением различий, связанных с преобразованием VS2005 в VS2008.
Новый рабочий процесс:
- Работайте в ветке VS2005 или VS2008, как требуется.
- Как только обновления будут выполнены в одной ветви, обновитесь в другой ветви, объедините изменения из измененной ветви и зафиксируйте в своей собственной ветви. Затем вернитесь к предпочитаемой ветке.
- Если обновления происходят в обеих ветвях одновременно, делайте обе ветки по отдельности, т.е. обновите подсказку VS2005 и объедините в подсказку VS2008, затем обновите подсказку VS2008 и объедините в предыдущую (до объединения) подсказку VS2005.