On Tue, Oct 17, 2006 at 05:27:26AM +0400, Alexey Tourbin wrote: > При импорте с помощью parsecvs коммиты могут отличаться (например, > за счет модификации списка Authors), но соответствующие им деревья > одинаковые. > > Теперь мне нужно слить два дерева: все коммиты разные, но все > деревья совпадают. > > * new-cvs > * commitV > * commitU > * commitT > * cvs * commitS > * commit9 --> tree9 <-- * commitR > * commit8 --> tree8 <-- * commitQ > * commit7 --> tree7 <-- * commitP > ................................. > * commit0 --> tree0 <-- * commitA > | | > --- --- Здесь я немного наврал. На самом деле есть общий коммит, где-то там ближе к самому низу. > Стратегия слияния recursive ищет общего предка по коммитам и не находит; > поэтому при заливании new-cvs в cvs фактически делается черти-что: > происходит откат на самое начало cvs и дальше патч-за-патчем применяются > коммиты из new-cvs. Заканчивается это успешншо (потому что все патчи > совпадают), но получается совсем некрасиво. > > Мне нужна стратегия, которая дойдет до commit9/commitR, увидит у них > одинаковое дерeво tree9 и пойдет раскручивать "как бы fast-worward", > вливая в cvs commitS..commitV. > > Есть такая стратегия? > > (Я понимаю, что можно сделать rebase, т.е. "насадить" commitS..commitV > прямо на бранч cvs. Но это всё же ручная работа по нахождению общего > дерева.)