много страдальный SVN merge
От: Slach  
Дата: 11.03.05 14:43
Оценка:
вопрос к людям использующим SVN вместе с Бранчами... для автоматического (НЕ РУЧНОГО) merge двух бранчей

мой порядок действий
svnadmin create c:\SVNROOT\repos
cd /usr/local/Project
mkdir current
cp /usr/local/sources/Project/*.* ./current
mkdir branch1
svn import -m "Initional import" svn://localhost/repos .

после этого зашел в TortoiseSVN на /usr/local/Project/current
сделал "Branch/Tag..."
в качестве URL куда бранчить указал svn://localhost/repos/Project/branch1/current
(в принципе мог спокойно сделать svn copy)

после svn update в каталоге /usr/local/Project/branch1/current получил файлы идентичные с /usr/local/Project/current
чего и добивался

что делаю далее

в /usr/local/Project/branch1/current (бранч)
1) создаю файлик newmodule.php
правлю его
потом svn add newmodule.php
2) правлю oldmodule.php
изменяю в нем мелкий багфикс в ф-ции

завершаю все командой
svn commit -m "added newmodule.php, fix bug #xxx in oldmodule.php"

в /usr/local/Project/current (основной ствол)
редактрию файл
oldmodule.php
делаю там комментарии ввожу дополнительные ф-ции и т.п.

завершаю все командой
svn commit -m "added new function into oldmodule.php"

теперь мне неоходимо
1) изменения из основного ствола для oldmodule.php слить в
т.е. как мне разрулить конфликты между HEAD ревизиями oldmodule.php в разных бранчах ??
и вообще является ли это конфликтом в данном случае ? или это неграмотное проектирование ?

2) кроме того необходимо добавить файл newmodule.php в основной ствол

как это пытаюсь делать я
svn merge svn://localhost/repos/branch1/current svn://localhost/repos/current
после чего получаю

U oldmodule.php
D newmodule.php

я ожидал тут увидеть как минимум
G oldmodule.php
или сообщение о конфликте

и не ожидал совершенно увидеть D newmodule.php

КАК ПОДОБНЫЕ ситуации решаете вы ?
в одну операцию в несколько ???

нафига вообще нужен svn merge — если он пытается удалить какие то файлы ? какой же это тогда merge ?
может быть использовать --ignore-ancestry ???
Re: много страдальный SVN merge
От: PPA Россия http://flylinkdc.blogspot.com/
Дата: 13.03.05 07:41
Оценка: +1
Здравствуйте, Slach, Вы писали:

S>вопрос к людям использующим SVN вместе с Бранчами... для автоматического (НЕ РУЧНОГО) merge двух бранчей

S>в /usr/local/Project/current (основной ствол)
S>редактрию файл
S>oldmodule.php
S>делаю там комментарии ввожу дополнительные ф-ции и т.п.

S>завершаю все командой

S>svn commit -m "added new function into oldmodule.php"

S>теперь мне неоходимо

S>1) изменения из основного ствола для oldmodule.php слить в

Тебе нужно находясь на рабочей копии ветки сказать такое:
svn merge -r N:M svn://localhost/repos/Project/current

где N и M будут номера ревизий изменения между которыми нужно поместить в ветку.

S>т.е. как мне разрулить конфликты между HEAD ревизиями oldmodule.php в разных бранчах ??

S>и вообще является ли это конфликтом в данном случае ? или это неграмотное проектирование ?

S>2) кроме того необходимо добавить файл newmodule.php в основной ствол


аналогично находясь на рабочей копии ствола вполняешь слияние изменений из ветки.
svn merge -r N:M svn://localhost/repos/Project/branch1/current

S>нафига вообще нужен svn merge — если он пытается удалить какие то файлы ? какой же это тогда merge ?


удаление при merge файлов не запрещается.
если ты в ветке выкинул ненужные файлы а потом эти изменения смержил в другую ветку произойдет удаление и там.

S>может быть использовать --ignore-ancestry ???
... << RSDN@Home r(350)>> <<winamp::silent>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.