вопрос к людям использующим 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 ???
Здравствуйте, 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>>