2008-08-06 12 views
9

tôi chỉ làm việc kết hợp với sử dụng một cái gì đó như:SVN hợp nhất sáp nhập thêm thứ

svn merge -r 67212:67213 https://my.svn.repository/trunk . 

tôi chỉ có 2 file, một trong số đó là một đơn giản ChangeLog. Thay vì chỉ hợp nhất các thay đổi ChangeLog của tôi, nó thực sự đã kéo của tôi cộng với một số thay đổi trước đó không ở đích đến ChangeLog. Tôi nhận thấy có một xung đột khi tôi thực hiện - chạy-run, vì vậy tôi đã cập nhật ChangeLog và vẫn còn xung đột (và tôi thấy xung đột khi tôi thực hiện hợp nhất thực tế).

tôi sau đó diffed vào file tôi đã sáp nhập từ:

svn diff -r 67212:67213 ChangeLog 

Và tôi nhìn thấy chỉ là những thay đổi mà tôi đã thực hiện, vì vậy tôi biết rằng những thay đổi thêm đã không nhận được ở đó bằng cách nào đó.

Điều này làm cho tôi lo lắng rằng hợp nhất không thực sự chỉ là lấy những gì tôi đã thay đổi, đó là những gì tôi mong đợi. Ai có thể giải thích chuyện gì đã xảy ra?

UPDATE: Để đối phó với NilObject:

Vì vậy, tôi có 2 tác phẩm đã thay đổi, chỉ ChangeLog là có liên quan, mức phạt sáp nhập khác. Khi tôi đi đến kiểm tra thân cây thường xuyên của tôi, tôi làm lệnh diff trên và thấy:

Index: ChangeLog 
=================================================================== 
--- ChangeLog (revision 67212) 
+++ ChangeLog (revision 67213) 
@@ -1,3 +1,7 @@ 
+2008-08-06 Mike Stone <myemail> 
+ 
+ * changed_file: Details. 
+ 
2008-08-06 Someone Else <their_email> 

    * theirChanges: Details. 

Sau khi hợp nhất của tôi về những thay đổi trước, diff của ChangeLog trông như thế này:

Index: ChangeLog 
=================================================================== 
--- ChangeLog (revision 67215) 
+++ ChangeLog (working copy) 
@@ -1,3 +1,14 @@ 
+<<<<<<< .working 
+======= 
+2008-08-06 Mike Stone <myemail> 
+ 
+ * changed_file: Details. 
+ 
+2008-08-06 Someone Else <their_email> 
+ 
+ * theirChanges: Details. 
+ 
+>>>>>>> .merge-right.r67213 
2008-08-05 Someone Else2 <their2_email> 

    * olderChange: Details. 

Lưu ý rằng mục nhập đã được kéo không chính xác không có trong tệp tôi đang hợp nhất, nhưng nó không phải là một trong những thay đổi của tôi và không nên được hợp nhất. Nó rất dễ dàng để sửa chữa (loại bỏ các dòng phụ không phải là một phần của những thay đổi của tôi), nhưng nó vẫn làm cho tôi lo lắng về việc sáp nhập tự động trong SVN.

Trả lời

2

này chỉ xảy ra với các cuộc xung đột - về cơ bản SVN cố gắng kết hợp các thay đổi, nhưng (khoảng nói) chứng kiến ​​sự thay đổi như:

Thêm

2008-08-06 Mike Stone <myemail> 

* changed_file: Details. 

trước

2008-08-06 Someone Else <their_email> 

Và nó không thể tìm thấy dòng người khác trong khi làm việc hợp nhất, vì vậy, cười khúc khích chút ít trong bối cảnh khi đưa vào cuộc xung đột.Nếu đó không phải là sự hợp nhất không xung đột, chỉ những thay đổi bạn mong đợi sẽ được áp dụng.

+0

Tôi hiểu tại sao đây là cách thực hiện (khi thực hiện SVN kết hợp bằng hình ảnh/thủ công phải cung cấp tài liệu cơ sở "Hiện tại" cho bên "của họ", vì vậy bản sửa đổi mới nhất trong tiêu chí hợp nhất của bạn là nó), nhưng nó thực sự khó chịu! (ít nhất là đối với một người mới tham gia trò chơi Merge và ngạc nhiên trước kỳ quan của cherrypickings và sự hợp nhất khác) – Tao

0

Không có đủ thông tin để thực hiện tại đây.

svn merge -r 67212:67213 https://my.svn.repository/trunk . 

sẽ hợp nhất mọi tệp đã thay đổi trong bản sửa đổi 67212 trong thư mục/thư mục trên kho và hợp nhất chúng vào thư mục làm việc hiện tại của bạn. Nếu bạn làm:

svn log -r 67212 

Tệp nào hiển thị đã thay đổi? Hợp nhất sẽ chỉ kéo các thay đổi từ đối số đầu tiên và áp dụng chúng vào thứ hai. Nó không tải lên máy chủ trong đối số đầu tiên.

Nếu điều này không trả lời được câu hỏi của bạn, bạn có thể đăng thêm chi tiết về chính xác những gì đang diễn ra không?