Mam następujący problem przy użyciu subversion:Subversion nie łączy zmian do plików o zmienionej nazwie?
Obecnie pracuję nad pnia mojego projektu i planuję dokonać refaktoryzacji (która obejmuje zmianę nazwy plików lub przenoszenie plików do różnych katalogów).
W tym samym czasie ktoś inny pracuje nad tym samym projektem w oddziale.
W pewnym momencie chcę scalić zmiany dokonane na gałęzi z powrotem do bagażnika. Obejmuje to zmiany wprowadzone w plikach (w oddziale), które zostały przemianowane na pniu.
Zrobiłem kilka testów i wydaje mi się, że albo subwersja nie jest w stanie śledzić tych zmian, albo czegoś mi brakuje (na to mam nadzieję). Przetestowałem to za pomocą następującego skryptu (powinien działać w bash, zakłada repozytorium SVN w „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'
Każda pomoc jest mile widziana.
Edit: Być może proces sugeruje mikegrb mogła nieco przez zautomatyzowane najpierw generowania mapę przemianowany plików (stare-> nowe) z polecenia svn log na pniu:
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}
teraz wykorzystać tę map, aby zmienić nazwy plików w pliku łaty wygenerowanym w oddziale.
oryginalny:
Index: FileOne.txt
===================================================================
--- FileOne.txt (.../trunk) (revision 31)
+++ FileOne.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
modyfikowany:
Index: FileTwo.txt
===================================================================
--- FileTwo.txt (.../trunk) (revision 31)
+++ FileTwo.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
tylko pomysł, nie zrobili tego jeszcze.
Wygląda na to, że wysłali ten błąd do wersji 1.8. To tylko inny sposób powiedzenia "jeszcze nie". Ponieważ jest on otwarty od 2002 roku, zaczyna coraz bardziej przypominać "nigdy". –
@deft_code Czy ten błąd został naprawiony? Myślę, że teraz mogę doświadczyć czegoś podobnego. Zmieniłem nazwę kilku plików za pomocą zmiany nazwy funkcji tortoisesvns, a teraz, gdy próbuję połączyć się z pnia do mojej gałęzi (aby sprawdzić, czy jego kompilacja przed ponowną integracją do pnia) mówi "pominięty brakujący cel" – TravisG
@TravisG - błąd odnosi się do możliwe jest ustalenie w 1.8, które mogły pojawić się w tym tygodniu (było wydanie git, nie jestem pewien wersji). Wciąż jestem na 1.7 ... o jakiej wersji jesteś? –