Tôi gặp sự cố sau khi sử dụng subversion:Subversion không hợp nhất các thay đổi thành các tệp được đổi tên?
Tôi hiện đang làm việc trong dự án và lập kế hoạch tái cấu trúc (bao gồm đổi tên tệp hoặc di chuyển tệp sang các thư mục khác nhau).
Đồng thời một người khác đang làm việc trên cùng một dự án trên chi nhánh.
Có lúc tôi muốn hợp nhất các thay đổi được thực hiện trên nhánh trở lại thân cây. Điều đó bao gồm các thay đổi được thực hiện cho các tệp (trên nhánh) đã được đổi tên trên thân cây.
Tôi đã thực hiện một số thử nghiệm và có vẻ như một trong hai phiên bản phụ không có khả năng theo dõi những thay đổi này hoặc tôi đang thiếu một số thứ (đó là những gì tôi hy vọng). Tôi đã thử nghiệm này sử dụng đoạn mã sau (nên làm việc trong bash, giả định một kho svn tại "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'
Any help is appreciated rất nhiều.
Edit: Có lẽ quá trình đề xuất bởi mikegrb thể bằng hơi tự động bằng cách đầu tiên tạo ra một bản đồ các tập tin đổi tên (old-> mới) từ lệnh svn log trên thân cây:
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}
Bây giờ sử dụng này bản đồ để thay đổi tên tệp trong tệp bản vá được tạo trên nhánh.
gốc:
Index: FileOne.txt
===================================================================
--- FileOne.txt (.../trunk) (revision 31)
+++ FileOne.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
chỉnh sửa:
Index: FileTwo.txt
===================================================================
--- FileTwo.txt (.../trunk) (revision 31)
+++ FileTwo.txt (.../branches/Branch_1) (revision 34)
@@ -1,3 +1,3 @@
Test
-1
2
+3
Chỉ cần một ý tưởng, đã không thực hiện nó được nêu ra.
Có vẻ như họ đã đẩy lỗi này ra phiên bản 1.8. Đó chỉ là một cách khác để nói 'chưa'. Kể từ khi nó được mở từ năm 2002 nó bắt đầu trông giống nhiều hơn và nhiều hơn như 'không bao giờ'. –
@deft_code Lỗi này đã được sửa chưa? Tôi nghĩ rằng tôi có thể trải qua một cái gì đó tương tự ngay bây giờ. Tôi đổi tên một vài tập tin bằng cách sử dụng chức năng đổi tên Tortoisesvns, và bây giờ khi tôi cố gắng hợp nhất từ thân cây đến chi nhánh của tôi (để kiểm tra nếu biên dịch của nó trước khi tái nhập vào thân cây) nó nói "bỏ qua mục tiêu bị mất" – TravisG
@TravisG - lỗi đề cập đến có thể được cố định trong 1.8, có thể đã xuất hiện trong tuần này (có bản phát hành git, không chắc chắn về phiên bản). Tôi vẫn còn trên 1,7 bản thân mình ... bạn đang ở phiên bản nào? –