LINUX.ORG.RU

Вопрос к знатокам CVS: проблема при слиянии двух веток проекта


0

0

У меня возникла проблема с CVS, и я не могу понять, где баг - у меня или в CVS. Прошу помощи.

Имеется две ветки исходников проекта: B1 и B2. Первая активно развивается, вторая почти заморожена. Тем не менее во второй ветке есть фичи F1 и F2, которых нет в B1. Время от времени (примерно раз в два месяца) в ветке B1 ставится tag, и производится merge B1->B2 командой, запускаемой в песочнице B2:

cvs update -jtag1 -jtag2

Здесь tag1 старше tag2 по возрасту.

По моему разумению (см. manual http://www.network-theory.co.uk/docs/cvsmanual/cvs_61.html), должно произойти слияние кода B2 с изменениями в B1, которые накопились между моментами проставления tag1 и tag2. Вроде бы так оно и есть, но: фича F1 исчезает (хотя не должна), и что ещё более удивительно, фича F2 остаётся.

Замечены и другие странности, вроде конфликта без меток (два конфликтующих фрагмента наличествуют в тексте, но отсутствуют метки <<<<<<< и >>>>>>>).

В чём тут может быть дело?

★★★★

[Честно говорю - CVS никогда не пользовался, советую мигрировать на что-нибудь приличное]

Это первый merge с B1 -> B2 ? Были ли уже успешные merge в этом направлении?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Не первый. Раньше тоже замечали странности, но в целом вроде бы работало нормально. Возникали закономерные конфликты, их разрешали, потом прогоняли регрессионные тесты, всё работало...

hbee ★★★★
() автор топика
Ответ на: комментарий от tailgunner

Я к тому, используемая методика по сути правильная или нет? А то закралось страшное сомнение.

hbee ★★★★
() автор топика
Ответ на: комментарий от hbee

Вроде всё по уму, в SVN я бы так и делал, хотя в Mercurial всё по-другому.

А успешные merge - там теги шли сплошняком? Что будет, если на рабочую копию наложить diff между tag1 и tag2 ?

tailgunner ★★★★★
()

Все описанные явления (кроме "конфликтов без меток") проще всего объяснить какой-нибудь неаккуратностью, типа tag2 поставленного на B2, а не на B1.

В CVS нет багов. Есть особенности поведения, но в их число, естественно, не входит ничего похожего.

anonymous
()
Ответ на: комментарий от anonymous

> Все описанные явления (кроме "конфликтов без меток") проще всего объяснить какой-нибудь неаккуратностью, типа tag2 поставленного на B2, а не на B1.

> В CVS нет багов. Есть особенности поведения, но в их число, естественно, не входит ничего похожего.

Спасибо! Буду искать баг в собственной ДНК :)

hbee ★★★★
() автор топика
Ответ на: комментарий от anonymous

> Все описанные явления (кроме "конфликтов без меток") проще всего объяснить какой-нибудь неаккуратностью, типа tag2 поставленного на B2, а не на B1.

А как определить, в какой ветке был поставлен определённый tag?

В CVS даже нет средств для вывода списка всех тегов, приходится пользоваться скриптами, вроде http://docs.codehaus.org/display/ninja/List+CVS+Tags

hbee ★★★★
() автор топика
Ответ на: комментарий от anonymous

Так и есть, баг в ДНК. Слишком лихо разрешал конфликты (по крайней мере, часть неприятностей объясняется этим). Вопрос закрыт.

hbee ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.