Trang người dùng git-svn khuyên bạn không sử dụng hợp nhất. "" Bạn nên chạy lệnh git-svn fetch và rebase (không kéo hoặc hợp nhất) "". Có nói rằng, bạn có thể làm những gì bạn thích :-)
Có 2 vấn đề ở đây. Đầu tiên là svn chỉ lưu trữ commiter, chứ không phải tác giả của bản vá như git. Vì vậy, khi Y cam kết việc sáp nhập vào thân cây, svn chỉ ghi lại tên của cô ấy, mặc dù các bản vá được tác giả bởi X. Đây là một tính năng tuyệt vời nhưng quan trọng đối với các dự án mã nguồn mở. vấn đề pháp lý xuống đường.
Thứ hai, git dường như không sử dụng các tính năng hợp nhất svn mới. Đây có thể là một điều tạm thời, vì git đang tích cực phát triển và các tính năng mới được thêm vào mọi lúc. Nhưng hiện tại, nó không sử dụng chúng.
Tôi vừa thử với git 1.6.0.2 và thông tin "mất" so với thực hiện thao tác tương tự với hợp nhất svn. Trong svn 1.5, một tính năng mới được bổ sung vào các phương pháp khai thác gỗ và chú thích, do đó -g svn log trên thân cây sẽ ra một cái gì đó như thế này cho một hợp nhất:
------------------------------------------------------------------------
r5 | Y | 2008-09-24 15:17:12 +0200 (Wed, 24 Sep 2008) | 1 line
Merged release-1.0 into trunk
------------------------------------------------------------------------
r4 | X | 2008-09-24 15:16:13 +0200 (Wed, 24 Sep 2008) | 1 line
Merged via: r5
Return 1
------------------------------------------------------------------------
r3 | X | 2008-09-24 15:15:48 +0200 (Wed, 24 Sep 2008) | 2 lines
Merged via: r5
Create a branch
Ở đây, Y cam kết r5, trong đó kết hợp các thay đổi từ X trên nhánh vào thân cây. Định dạng của nhật ký không phải là thực sự là tuyệt vời, nhưng nó đi vào riêng của mình trên svn đổ lỗi -g:
2 Y int main()
2 Y {
G 4 X return 1;
2 Y }
Ở đây giả sử Y chỉ cam kết thân cây, chúng ta có thể thấy rằng một dòng được ngồi biên tập bởi X (trên chi nhánh) và sáp nhập.
Vì vậy, nếu bạn đang sử dụng svn 1.5.2, bạn có thể tốt hơn khi hợp nhất với ứng dụng khách thực sự của svn ngay bây giờ. Mặc dù bạn sẽ mất thông tin hợp nhất trong git, nó thường đủ thông minh để không phàn nàn.
Cập nhật: Tôi vừa thử điều này với git 1.7.1 để xem liệu có bất kỳ tiến bộ nào trong thời gian tạm thời không. Tin xấu là hợp nhất trong git vẫn không điền giá trị svn: mergeinfo, vì vậy git merge
theo sau là git svn dcommit
sẽ không đặt svn: mergeinfo và bạn sẽ mất thông tin hợp nhất nếu kho lưu trữ Subversion là nguồn chuẩn tắc. Tin tốt là git svn clone
không đọc thuộc tính svn: mergeinfo để xây dựng lịch sử hợp nhất tốt hơn, vì vậy nếu bạn sử dụng chính xác svn merge
(yêu cầu hợp nhất toàn bộ nhánh) thì git clone sẽ chính xác với người dùng git.
'git svn dcommit' hiện có thể đẩy' svn: mergeinfo': Xem https://www.kernel.org/pub/software/scm/git/docs/git-svn.html (tìm kiếm "mergeinfo") –