URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 80657
[ Назад ]

Исходное сообщение
"Как в SVN изменить старый файл"

Отправлено Алексей , 07-Июн-08 23:21 
Вопрос по Subversion.
Допустим у меня первоначальная версия файла А, затем от нее отделились ветки А1 и А2.
После определенного этапа я понял что  в файле А есть опечатка, которая перешла во все ветки.
Я пытаюсь изменить файл А, получив из репозитария его вид до отделения от него веток.
Но при попытке сохранить он сохраняется как новая версия, а старая как была так и осталась.
Как  обновить старый релиз файла А в SVN.

Содержание

Сообщения в этом обсуждении
"Как в SVN изменить старый файл"
Отправлено PavelR , 08-Июн-08 08:25 
>Вопрос по Subversion.
>Допустим у меня первоначальная версия файла А, затем от нее отделились ветки
>А1 и А2.
>После определенного этапа я понял что  в файле А есть опечатка,
>которая перешла во все ветки.
>Я пытаюсь изменить файл А, получив из репозитария его вид до отделения
>от него веток.
>Но при попытке сохранить он сохраняется как новая версия, а старая как
>была так и осталась.

А дальше ты обновляешь все ветки, которые тебе надо, командой svn merge.

>Как  обновить старый релиз файла А в SVN.

ИМХО правильный процесс разработки заключается в выделении центрального ствола разработки и обмена изменениями между ветками и стволом в обе стороны.

первоначальная версия развивается в одной ветке, в trunk (А)

Затем от неё отпочковываются девелоперские ветки, например А1 и А2

Релизы продукта делаются из основной ветки А, либо из дополнительной релизной ветки.

Изменения при этом мержатся из А1 и А2 в транк А, откуда делаются релизы, либо из транка они мержатся всем скопом в релизную ветку, и релиз делается уже оттуда.

При этом нужно чаще закрывать А1 и А2 и обновлять их созданием заново из основной ветки А.
Сделал какую-то атомарную работу, слил изменения, обновил исходник до свежей версии.

Если делается несколько версий продукта, то вся эта картина смещается на уровень ниже, появляются основные ветки для каждой версии и общий ствол всей разработки. Обмен изменениям тогда делать сложнее, но оно и в принципе правильно - это же всё-таки две разные версии ( для случая 1.х.х и 2.х.х, а  не 1.х и 1.х+1 )


"Как в SVN изменить старый файл"
Отправлено Алексей , 10-Июн-08 23:13 
>А дальше ты обновляешь все ветки, которые тебе надо, командой svn merge.

Завтра попробую

>>Как  обновить старый релиз файла А в SVN.
>ИМХО правильный процесс разработки заключается в выделении центрального ствола разработки и обмена
>изменениями между ветками и стволом в обе стороны.

Согласен, но вопрос о случае когда все отпочковавшиеся ветки имеют общую ошибку унаследованную от главной, их могут быть десятки. Исправлять в каждой ветке довольно долго.



"Как в SVN изменить старый файл"
Отправлено Алексей , 13-Июн-08 21:58 
Не прокатило, старая версия как была так и осталась и изменения в ветки не перенеслись.
После merge просто создалась новая версия основной ветки.
Я пришел к выводу что старую версию изменить нельзя, т.к. тогда нарушится история хранения версий или что-то делаю не так?

"Как в SVN изменить старый файл"
Отправлено PavelR , 13-Июн-08 23:13 
>Не прокатило, старая версия как была так и осталась и изменения в
>ветки не перенеслись.
>После merge просто создалась новая версия основной ветки.
>Я пришел к выводу что старую версию изменить нельзя, т.к. тогда нарушится
>история хранения версий или что-то делаю не так?

команда merge создает новую версию. Новую версию той ветки, в которую мержатся изменения.


"Как в SVN изменить старый файл"
Отправлено PavelR , 13-Июн-08 23:11 
>[оверквотинг удален]
>
>Завтра попробую
>
>>>Как  обновить старый релиз файла А в SVN.
>>ИМХО правильный процесс разработки заключается в выделении центрального ствола разработки и обмена
>>изменениями между ветками и стволом в обе стороны.
>
>Согласен, но вопрос о случае когда все отпочковавшиеся ветки имеют общую ошибку
>унаследованную от главной, их могут быть десятки. Исправлять в каждой ветке
>довольно долго.

достаточно исправить в релизных ветках.

разработческие ветки всеравно должны периодически от неё обновляться.


"Как в SVN изменить старый файл"
Отправлено Алексей , 16-Июн-08 22:44 

>достаточно исправить в релизных ветках.
>
>разработческие ветки всеравно должны периодически от неё обновляться.

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


"Как в SVN изменить старый файл"
Отправлено PavelR , 17-Июн-08 09:41 
>
>>достаточно исправить в релизных ветках.
>>
>>разработческие ветки всеравно должны периодически от неё обновляться.
>
>спасибо, теперь все ясно.
>т.е. автоматически (изменить корень) изменения провести не получится.
>придется потом все остальные ветки с основной веткой сравнить чтоб устранить опечатку.
>

Фишка в том, что не надо _все остальные_ ветки сравнивать, поскольку в основные ветки попадают только _изменения_ из разработческих веток. Достаточно изменить "опечатку" только в релизных ветках, и всё, прочие изменения из разработческих веток эту опечатку уже не сотрут. А девелоперские ветки подхватят изменение этой опечатки когда они будут обновляться из центральной ветки, для того чтобы подхватить и изменения, внесенные прочими разработчиками.


"Как в SVN изменить старый файл"
Отправлено Алексей , 17-Июн-08 21:19 
>[оверквотинг удален]
>>т.е. автоматически (изменить корень) изменения провести не получится.
>>придется потом все остальные ветки с основной веткой сравнить чтоб устранить опечатку.
>>
>
>Фишка в том, что не надо _все остальные_ ветки сравнивать, поскольку в
>основные ветки попадают только _изменения_ из разработческих веток. Достаточно изменить "опечатку"
>только в релизных ветках, и всё, прочие изменения из разработческих веток
>эту опечатку уже не сотрут. А девелоперские ветки подхватят изменение этой
>опечатки когда они будут обновляться из центральной ветки, для того чтобы
>подхватить и изменения, внесенные прочими разработчиками.

Я о том что не изменится опечатка в прошлых версиях, в любом случае создается новый релиз.
А ветки сравнить все равно придется, иначе будет конфликт при слиянии.


"Как в SVN изменить старый файл"
Отправлено angra , 18-Июн-08 03:45 
Похоже вам стоит заново открыть доку по subversion и перечитать описание идеологии и концепций. То, чего вы хотите, не будет работать by design.