У меня есть следующая проблема с использованием subversion:
В настоящее время я работаю над стволом моего проекта и планирую сделать некоторые рефакторинг (который включает переименование файлов или перемещение файлов в разные каталоги).
В то же время кто-то работает над одним и тем же проектом на ветке.
В какой-то момент я хочу объединить изменения, сделанные на ветке, обратно в туловище. Это включает изменения, внесенные в файлы (на ветке), которые были переименованы в соединительную линию.
Я сделал несколько тестов, и кажется, что либо подрывная деятельность не способна следовать этим изменениям, либо мне не хватает сообщений (на что я надеюсь). Я протестировал это, используя следующий script (должен работать в bash, принимает репозиторий svn в http://myserver/svn/sandbox"):
svn co http://myserver/svn/sandbox
cd sandbox/
mkdir -p MyProject/trunk MyProject/branches MyProject/tags
cat - <<EOF >MyProject/trunk/FileOne.txt
Test
1
2
EOF
svn add MyProject
svn commit -m "init"
# create a branch
svn copy http://myserver/svn/sandbox/MyProject/trunk http://myserver/svn/sandbox/MyProject/branches/Branch_1 svn copy http://myserver/svn/sandbox/MyProject/trunk http://myserver/svn/sandbox/MyProject/branches/Branch_1
# rename the file
svn move MyProject/trunk/FileOne.txt MyProject/trunk/FileTwo.txt
svn commit -m "renamed file"
svn update
# change the content of FileOne in branch
cat - <<EOF >MyProject/branches/Branch_1/FileOne.txt
Test
2
3
EOF
svn commit -m "changed branch"
# I now try to merge the changes in FileOne back to FileTwo
cd MyProject/trunk/
svn merge -r1:HEAD http://myserver/svn/sandbox/MyProject/branches/Branch_1
# but this yields the following message:
# Skipped missing target: 'FileOne.txt'
Любая помощь очень ценится.
Изменить: Возможно, процесс, предложенный mikegrb, может быть несколько автоматизирован, сначала создав карту переименованных файлов (old- > new) из команды svn log на соединительной линии:
svn log -v
------------------------------------------------------------------------
r33 | sme | 2008-10-09 15:17:54 +0200 (Do, 09 Okt 2008) | 1 line
Changed paths:
D /MyProject/trunk/FileOne.txt
A /MyProject/trunk/FileTwo.txt (from /MyProject/trunk/FileOne.txt:31)
resulting map: {FileOne.txt => FileTwo.txt}
Теперь используйте эту карту для изменения имен файлов в файле патча, сгенерированном на ветке.
Оригинал:
Index: FileOne.txt
===================================================================
--- FileOne.txt (.../trunk) (revision 31)
+++ FileOne.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
изменения:
Index: FileTwo.txt
===================================================================
--- FileTwo.txt (.../trunk) (revision 31)
+++ FileTwo.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
Просто идея, еще не сделала этого.