git merge
nên có thể phát hiện (lên đến một điểm nhất định) đổi tên.
recursive
này chỉ có thể giải quyết hai đầu sử dụng một thuật toán hợp nhất 3 chiều.
Ngoài ra, điều này có thể phát hiện và xử lý các kết hợp liên quan đến đổi tên.
Đây là chiến lược hợp nhất mặc định khi kéo hoặc hợp nhất một chi nhánh.
Nhưng git-svn
chỉ có thể nhập/xuất từ / sang SVN, không thực hiện hợp nhất.
Và việc hợp nhất là khó khăn:
hãy cẩn thận
Vì lợi ích của sự đơn giản và hoạt động cùng với một hệ thống ít có khả năng (SVN), nó được khuyến khích rằng tất cả git svn
người dùng sao chép, lấy và dcommit trực tiếp từ máy chủ SVN, và tránh tất cả các hoạt động git clone/pull/merge/push giữa các kho và các nhánh git.
Phương pháp trao đổi mã được đề nghị giữa các nhánh git và người dùng là git format-patch và git am, hoặc chỉ 'dcommit'ing vào kho SVN.
Chạy git merge hoặc git pull KHÔNG được đề xuất trên chi nhánh bạn định hủy. Subversion không đại diện cho việc hợp nhất trong bất kỳ thời trang hợp lý hoặc hữu ích nào; để người dùng sử dụng Subversion không thể thấy bất kỳ hợp nhất nào bạn đã thực hiện. Hơn nữa, nếu bạn hợp nhất hoặc kéo từ một nhánh git mà là một tấm gương của một nhánh SVN, dcommit có thể cam kết với nhánh sai.
Nếu bạn kết hợp, lưu ý các nguyên tắc sau: git svn dcommit sẽ cố gắng để thực hiện trên đầu trang của SVN cam kết có tên trong
git log --grep=^git-svn-id: --first-parent -1
Do đó bạn phải đảm bảo rằng gần đây nhất cam kết của chi nhánh bạn muốn dcommit là cha mẹ đầu tiên của hợp nhất. Hỗn loạn sẽ xảy ra nếu không, đặc biệt nếu cha mẹ đầu tiên là một cam kết cũ trên cùng một chi nhánh SVN.
Xem câu trả lời này: http://stackoverflow.com/questions/2945842/using-git-svn-or-similar-just-to -help-out-with-svn-merge/3585702 # 3585702 –
Xem http://stackoverflow.com/questions/714589/can-git-svn-correctly-populate-svnmergeinfo-properties ... Phần "Chỉnh sửa:" của câu trả lời thứ 2 (không phải câu trả lời được chấp nhận) đặc biệt tốt đẹp –