Có phải sự bất tiện về việc hợp nhất trong SVN trước v1.5 đã lỗi thời khi thiếu siêu dữ liệu không còn là vấn đề nữa?


11

Tôi đang bắt đầu với SVN và rất nhiều nguồn tin nói rằng việc sáp nhập rất khó khăn trong SVN so với các công cụ DVCS. Các câu hỏi gần đây nhất tôi có thể tìm thấy ở đây trên SE là từ năm 2012.

Đôi khi có một đề cập rằng lý do là SVN trước v1.5 không có siêu dữ liệu, nhưng SVN hiện đang ở phiên bản 1.8.9.

Cho rằng SVN bây giờ đã trưởng thành hơn nhiều so với v1.5, và đặc biệt là thực tế là chúng tôi đã không sử dụng SVN 1.5 nên chúng tôi không bị thiếu siêu dữ liệu đã đề cập - vẫn còn nhiều giá trị trong các lập luận chống lại SVN?

Tôi hiểu rằng DVCS có một cách tiếp cận hoàn toàn khác thường được mong muốn hơn, nhưng đối với những người "phải" yêu cầu SVN vì bất kỳ lý do gì, việc sáp nhập không thực sự là "địa ngục" nữa, phải không?


3
@ TorbenGundtofte-Bruun - Tôi không có thời gian để đưa ra câu trả lời như vậy, nhưng tôi sẽ nói "đừng sợ SVN." Nó có những hạn chế, nhưng DVCS cũng vậy.
kdgregory

Câu trả lời:


15

Nó hoạt động tốt nếu bạn dính vào các trường hợp đơn giản , nhưng có một số trường hợp phức tạp không.

Những hạn chế tôi có thể nghĩ đến:

  • Nó chỉ có thể tìm thấy tổ tiên gần đây nhất nếu nó nằm trên một trong những nhánh liên quan. Vì vậy, nếu bạn tạo branches/thisbranches/thatcả từ trunkvà sau đó cố gắng hợp nhất branches/thisđể branches/that, nó sẽ không biết phải làm gì. Điều đó có nghĩa là bạn chỉ có thể hợp nhất chi nhánh với hoặc từ cha mẹ của nó. Bạn có thể gặp phải vấn đề này nếu bạn bắt đầu hai nhánh tính năng và sau đó nhận ra rằng các tính năng này phụ thuộc lẫn nhau và cần kết hợp chúng.

  • Mặc dù tuyên bố nó có thể theo dõi các đổi tên, nhưng việc hợp nhất các nhánh khi các tệp được di chuyển ở một bên và sửa đổi ở bên kia không phải lúc nào cũng tìm đúng các tệp để hợp nhất và sửa nó theo cách thủ công là hơi tẻ nhạt vì nó không để lại thông tin cần thiết ở bất cứ đâu tại tay.

  • Các tập tin được thêm vào đôi khi gây ra xung đột giả về việc hợp nhất sau này.

  • Vì lật đổ không có khái niệm chi nhánh riêng biệt, bạn chỉ có thể hợp nhất một cây con của một dự án và điều đó có thể dẫn đến một mớ hỗn độn khá nhanh. Chúng tôi khuyên bạn nên cẩn thận để luôn hợp nhất các chi nhánh hoàn chỉnh. Thật không may vì một số lý do đôi khi các thuộc tính thông tin hợp nhất xuất hiện trên các thư mục con ngay cả khi chúng có vẻ không cần thiết và việc hợp nhất được thực hiện chính xác cho toàn bộ chi nhánh.

  • Cuối cùng nhưng không kém phần quan đó là chậm . Sáp nhập vào một dự án có quy mô nghiêm trọng thường mất vài phút trong đó hầu hết DVCS có thể thực hiện dưới một giây.


+1, câu trả lời tuyệt vời. Điểm liên quan đến tổ tiên chung là điều tôi sẽ phải tìm kiếm. Bạn có bất kỳ tài liệu tham khảo cho những sự thật này?
Doval

1
@Doval: Kinh nghiệm.
Jan Hudec

cũng có thể đáng nói rằng svn không có khái niệm riêng về thẻ
jk.

Về viên đạn đầu tiên của bạn (cảm ơn vì một lời giải thích rất rõ ràng!) Có thể không được giải quyết bằng cách sử dụng một nhánh tích lũy có cùng một nhánh với các nhánh tính năng? (dựa trên Vance98 ) Có phải vấn đề chỉ thực sự xảy ra khi hai nhánh tính năng có các điểm nhánh khác nhau?
Torben Gundtofte-Bruun

@ TorbenGundtofte-Bruun: Tổ tiên chung gần đây nhất không phải là một điểm nhánh. Bạn có thể tự tìm nó và nói lật đổ để áp dụng các thay đổi giữa các lần chỉnh sửa chốt cụ thể. Nhưng vấn đề là đó là rất nhiều công việc và bạn phải nhận ra rằng bạn phải làm điều đó, bởi vì lật đổ không nhất thiết phải giơ tay nói rằng nó không thể hợp nhất. Thay vào đó, nó có thể tìm thấy một tổ tiên chung không phải là gần đây nhất và tạo ra nhiều xung đột.
Jan Hudec

1

Theo kinh nghiệm của tôi, việc sáp nhập vào SVN đã được 'sửa' trong phiên bản 1.6. Tôi làm việc trong cả Mercurial và SVN, và kể từ phiên bản 1.6 của SVN, việc sáp nhập dường như có cùng số lượng công việc trên cả hai nền tảng. Một ngoại lệ có thể là bạn phải nhớ cung cấp --reintegratetùy chọn khi hợp nhất từ ​​một nhánh trở lại vào thân cây bằng SVN.

Đây chỉ là kinh nghiệm hoạt động của tôi. Tôi không biết gì về nội bộ của SVN.


2
1.8 cuối cùng cũng có thể tự phát hiện trường hợp "tái hòa nhập". Nhưng điều đó chỉ quan tâm đến tổ tiên chung gần đây nhất trên địa phương hoặc từ xa. Nó vẫn không thể tìm thấy nó trên nhánh thứ ba.
Jan Hudec
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.