Một giải thích có thể là bạn có thể quên các phần của bộ thay đổi.
Nếu thay đổi đặt bạn đang hợp nhất các tệp bìa nằm ngoài thư mục con mà bạn đã kiểm tra, thì luôn có khả năng bạn sẽ quên hợp nhất các tệp đó.
Ví dụ, nếu bạn có một cam kết như thế này trên thân cây:
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Change some stuff
Và sau đó bạn có một kiểm tra của subdir1 từ chi nhánh của bạn "ổn định", sau đó bạn có thể hợp nhất các thay đổi thiết lập r5 như thế này:
$ svn co http://example.com/svn/branches/stable/subdir1
$ cd subdir1
$ svn merge -c 5 http://example.com/svn/trunk/subdir1 .
--- Merging r5 into '.':
U main.c
$ svn ci -m"Merged r5 from trunk"
Nhưng điều này sẽ chỉ hợp nhất một nửa số phiên bản 5. Tệ hơn nữa, nếu bạn quay trở lại và nhìn vào nhật ký, bây giờ nó sẽ hiển thị này:
$ svn log -g http://example.com/svn/
...
------------------------------------------------------------------------
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Merged via: r6
Change some stuff
Vì vậy, có vẻ như bạn đã hợp nhất toàn bộ cam kết, khi thực tế bạn chỉ hợp nhất một số. Tất nhiên r6 không cho thấy chỉ có 1 tập tin đã thay đổi trên nhánh ổn định.
------------------------------------------------------------------------
r6 | rich | 2009-04-16 22:28:16 +0200 (Thu, 16 Apr 2009) | 1 line
Changed paths:
M /branches/stable/subdir2
M /branches/stable/subdir2/main.c
Merge revision 5 from trunk
Ai đó phải nhớ hoặc thông báo rằng chỉ một phần của bộ thay đổi đã được hợp nhất và phần còn lại cần thực hiện. Không sử dụng kết hợp thư mục con để tránh sự cố này.
Có những lúc bạn thực sự không muốn hợp nhất tất cả các cam kết trước đó và kịch bản trên là chính xác những gì bạn định làm. Trong trường hợp đó, tốt nhất là nên thêm thông điệp cam kết mô tả ý định của bạn.
Tôi thích tiêu đề :) – Dunaril