The best method for branches' merging
От: windj007  
Дата: 16.06.11 06:05
Оценка:
Добрый день!

Задача: смержить две ветки большого проекта, которые были выделены из транка уже давно (различий много). Одна ветка хранится в SVN, другая — в VSS. Не спрашивайте, почему так получилось, изменить это невозможно.

Проблема: существующие инструменты для слияния файлов (WinMerge, TortoiseMerge, Araxis) сравнивают файлы построчно, что не очень удобно в случае больших файлов и больших изменений. Даже если просто банально переставить два метода местами (особенно если они перегруженые), эти проги выдадут достаточно много различий.

Вопросы:
1) может быть, у кого-нибудь есть know-how по поводу слияния больших проектов?
2) слышал ли кто-нибудь про инструменты для merge со встроенным синтаксическим анализатором? Наличие анализатора позволило бы выделять отдельные блоги, сравнение которых действительно имеет смысл. Например, можно было бы сравнивать не файлы целиком, а только тела функций с одинаковыми сигнатурами или объявления одноимённых переменных.
3) пробовал ли кто нибудь организовывать merge разных репозиториев посредством миграции этих репозиториев в ветки одного репозитория git (или hg), а потом сливать код средствами этих dcvs? По идее, dcvs должны сильно облегчать дело слияния, потому что для них это — повседневная операция.

спасибо!
merge migration syntax analyser git svn vss hg branch
Re: The best method for branches' merging
От: Aquary Россия https://wmspanel.com/
Дата: 16.06.11 10:10
Оценка: +1
Здравствуйте, windj007, Вы писали:

W>Задача: смержить две ветки большого проекта, которые были выделены из транка уже давно (различий много). Одна ветка хранится в SVN, другая — в VSS. Не спрашивайте, почему так получилось, изменить это невозможно.


Попробуй для начала взять общего предка обеих версий (сам знаешь, в которой из систем он хранится), и сделать 3-хсторонний мёрдж (3-way merge). Например в Araxis Merge идли другом туле, который это умеет.
Думаю, это должно упростить задачу и убрать немало неоднозначностей.
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re[2]: The best method for branches' merging
От: windj007  
Дата: 16.06.11 10:24
Оценка:
A>3-хсторонний мёрдж (3-way merge)

блин, про него-то я и забыл! спасибо!

Однако задача ещё не решена, поэтому тема не закрыта
Re[3]: The best method for branches' merging
От: Aquary Россия https://wmspanel.com/
Дата: 16.06.11 10:53
Оценка: +1
Здравствуйте, windj007, Вы писали:

W>Однако задача ещё не решена, поэтому тема не закрыта


К слову, ты в пунтке 3 сам ответил на свой вопрос — слей всё на ветки в git (не забываем сначала слить туда общего предка), а потом сделать их слияние. Тот же гит по слухам весьма крут по части трекания перемещений функций между файлами, не говоря уже про "внутри файлов" (там вообще понятие файл во внутренней структуре репо — отсутствует).
Из svn в гит экспортнуть можно. Насчет VSS — не уверен, но из него тебе нужна будет только одна версия (ну или две, если там общий предок), так что нужные версии можно тупо выгрузить руками и залить в гит.


Ну а после этой операции думай, как дальше с этим жить. Остаться в гите или коммитить результит слияния обратно в SVN (надеюсь, в VSS тебя ничто не тянет?).
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.