2008-09-19 27 views
17

Tôi khá quen với cách làm CVS hợp nhất trong Eclipse, và tôi cũng hài lòng với cách cả Subclipse và Subversive làm việc với kho SVN, nhưng tôi không hoàn toàn chắc chắn làm thế nào để thực hiện hợp nhất đúng cách.Cách thích hợp để thực hiện hợp nhất Subversion trong Eclipse là gì?

Khi tôi hợp nhất, có vẻ như muốn gắn các tệp được hợp nhất vào một thư mục riêng biệt trong dự án của tôi thay vì ghi đè các tệp cũ sẽ được thay thế trong hợp nhất, như tôi đã sử dụng trong CVS.

Câu hỏi không dành riêng cho Subclipse hoặc Subversive.

Cảm ơn sự giúp đỡ!

Trả lời

1

Tôi khuyên bạn không nên cố gắng sử dụng các plugin của Eclipse làm quyền truy cập chính vào Subversion.

Nếu bạn đang phát triển trên Windows, TortoiseSVN là chương trình tốt nhất mà tôi đã thấy để truy cập Subversion. Khám phá thư mục mà bạn muốn hợp nhất, nhấp chuột phải vào thư mục đó và sử dụng tùy chọn hợp nhất Tortoise SVN. Giả sử hợp nhất không tương tác, khi bạn nhận được xung đột, bạn sẽ phải trải qua từng tệp xung đột và chỉnh sửa xung đột trước khi đánh dấu chúng là đã giải quyết. Đối với quy trình này, tôi đề nghị một chương trình gọi là KDiff3, cho thấy bản sao kho lưu trữ cục bộ của bạn (những gì được lưu trữ trong .svn trước khi hợp nhất), bản sao cục bộ của bạn (bao gồm mọi thay đổi) và bản sao đến từ kho lưu trữ, và cho phép bạn dễ dàng nhìn thấy (và thậm chí tay sửa đổi nếu cần thiết) kết quả của việc sáp nhập. Nó cũng xử lý một loạt các xung đột nhỏ một cách tự động.

KDiff3 là di động, TortoiseSVN là phần mở rộng của trình bao cửa sổ, vì vậy nếu bạn đang sử dụng một môi trường khác, tôi sẽ cố gắng chỉ sử dụng SVN để hợp nhất. Nhưng điều đó sẽ càng đau đớn hơn :)

+1

Người bỏ phiếu - quan tâm để thêm lý do? – MetroidFan2002

+20

Tôi muốn nói rằng nó đã bị bỏ phiếu chỉ vì câu hỏi đã được cụ thể về cách thực hiện nó trong Eclipse. – DustinB

+9

Thỉnh thoảng câu trả lời phải nằm ngoài hộp. – whatnick

4

Tôi thường kiểm tra cả hai nhánh và sau đó sử dụng so sánh với mỗi tùy chọn khác so sánh đồng bộ của hai cây nguồn. Sau khi tích hợp các thay đổi vào một nhánh, bạn có thể recommit trở lại kho lưu trữ.

4

Sử dụng tích hợp Eclipse, nó hoạt động hoàn toàn tốt đẹp.

Thay đổi chính từ CVS, là bạn chỉ hợp nhất các vùng đồng bằng từ chi nhánh, tức là thay đổi từ bản sửa đổi này sang bản chỉnh sửa khác. Tức là bạn phải theo dõi bản sửa đổi bắt đầu chính xác bằng cách nào đó (trừ khi bạn có lịch sử hợp nhất svn 1.5)

Nếu bạn có quyền đó, bạn chỉ có thể thay đổi ngay với trình chỉnh sửa so sánh.

+3

Điều đáng nói là để lịch sử hợp nhất hoạt động, máy khách, máy chủ và kho lưu trữ tất cả cần được nâng cấp lên ít nhất là 1,5: xem http://subversion.tigris.org/svn_1.5_releasenotes.html# mt-compatibility –

3

Hãy nhớ rằng với việc svn hoàn nguyên cây đã sửa đổi thành trạng thái sạch sẽ khá dễ dàng. Đơn giản chỉ cần có một vùng làm việc sạch trên nhánh đích hợp nhất và chạy lệnh merge để nhập các sửa đổi từ nhánh mã nguồn, sau đó đồng bộ hóa vùng làm việc của bạn và bạn sẽ thấy cửa sổ so sánh nhật thực bình thường của bạn hiển thị tất cả các tệp đã sửa đổi và xung đột.

Nếu vì lý do nào đó, bạn không thể giải quyết xung đột bạn có thể trở lại trạng thái sạch, nếu không bạn sẽ hợp nhất tại chỗ và sau khi hoàn tất, bạn có thể cam kết. Lưu ý rằng bạn không phải cam kết, khi bạn xử lý xong xung đột, bạn cũng có thể quay lại chế độ xem dev, xác minh rằng mã biên dịch, chạy thử nghiệm đơn vị của bạn, bất cứ điều gì và sau đó đồng bộ hóa lại và cam kết (khi xung đột cục bộ giải quyết họ sẽ không quay trở lại)

lần cuối cùng tôi nhìn thấy khi bạn sử dụng lệnh phối hợp subclipse nó sẽ ghi đè tệp đã hợp nhất (sử dụng dấu xung đột để hiển thị các khu vực xung đột) và đặt bên trái và bên phải của hợp nhất vào cùng một nơi. nó không nên đặt bất cứ thứ gì trong các thư mục khác nhau.Một quy tắc chung, tốt nhất là cam kết tất cả các sửa đổi hợp nhất trong một cam kết duy nhất và chỉ có các sửa đổi hợp nhất trong cam kết để bạn có thể khôi phục hợp nhất sau này nếu cần thiết. Quay lại đầu trang

72

sáp nhập toàn bộ nhánh vào thân cây

  1. Kiểm tra lịch sử dự án Chi nhánh để xác định phiên bản mà từ đó các chi nhánh đã được đưa

    • bởi đội Eclipse mặc định "History" chỉ cho thấy 25 phiên bản trước đây, do đó bạn sẽ phải nhấp vào nút trong chế độ xem có nhãn "Hiển thị tất cả"
    • khi bạn nói "Hiển thị tất cả" nó sẽ đưa bạn quay lại quá ngày chi nhánh và hiển thị yo u tất cả lịch sử cho thân cây cũng như vậy, bạn sẽ phải tìm kiếm nhận xét của mình khi bạn phân nhánh
    • LƯU Ý: nếu bạn sử dụng Tortise SVN cho cùng một tác vụ này (hãy điều hướng đến nhánh và chọn "Hiển thị Nhật ký") sẽ chỉ hiển thị lịch sử chi nhánh để bạn có thể biết chính xác chi nhánh bắt đầu từ đâu
  2. Vì vậy, bây giờ tôi biết rằng 82517 là ID phiên bản đầu tiên của lịch sử chi nhánh.Vì vậy, tất cả các phiên bản của các chi nhánh qua 82.517 có thay đổi mà tôi muốn kết hợp vào thân cây

  3. Bây giờ đi đến dự án "thân cây" trong không gian làm việc Eclipse của bạn và chọn "click chuột phải - Team - Merge"

  4. Các giao diện mặc định là 1 url merge

    • chọn URL của chi nhánh từ mà bạn đang sáp nhập
    • dưới Revisions chọn "All"
    • nhấn OK
  5. này sẽ đưa bạn đến "Đội Đồng bộ hóa" quan điểm (nếu nó không bạn nên đến đó chính mình) để giải quyết mâu thuẫn (xem dưới đây)

Re-sáp nhập hơn thay đổi chi nhánh vào thân cây

  1. Insepct lịch sử dự án thân cây để xác định lần cuối cùng bạn sáp nhập vào thân cây (bạn nên đã nhận xét này)

    012.351.
    • vì lợi ích của các đối số giả phiên bản này là 82517
  2. Vì vậy, bây giờ tôi biết rằng bất kỳ phiên bản lớn hơn 82.517 trong ngành cần phải được sáp nhập vào thân cây

  3. Bây giờ đi đến dự án "thân cây" trong không gian làm việc Eclipse của bạn và chọn "click chuột phải - Team - Merge"

  4. Giao diện mặc định là 1 url merge

    • chọn URL của chi nhánh từ mà bạn đang sáp nhập
    • dưới Revisions chọn "Sửa đổi" nút radio và bấm vào nút "Browse"
    • này sẽ mở ra một danh sách trong số 25 sửa đổi chi nhánh mới nhất
    • chọn tất cả các phiên bản với một số lớn hơn 82517
    • nhấn OK (bạn sẽ thấy danh sách sửa đổi trong lĩnh vực đầu vào bên cạnh nút radio)
    • nhấn OK
  5. này sẽ đưa bạn đến "Đội Đồng bộ hóa" quan điểm (nếu nó không bạn nên đến đó chính mình) để giải quyết mâu thuẫn (xem dưới đây)

Giải quyết Xung đột

  1. Bạn nên ở phối cảnh "Đồng bộ hóa nhóm". Điều này sẽ giống như bất kỳ đồng bộ hóa thông thường cho mục đích cam kết nơi bạn thấy các tệp mới và tệp có xung đột.

  2. Đối với mỗi tập tin mà bạn nhìn thấy một cuộc xung đột chọn "click chuột phải - Chỉnh sửa Xung đột" (đừng nhấp đúp chuột vào tập tin, nó sẽ mang đến những diff công cụ phiên bản cam kết, đây là RẤT khác nhau)

    • nếu bạn nhìn thấy những thứ như thế "< < < < < < < .working" hoặc ">>>>>>> .merge-right.r84513", sau đó bạn đang ở trong chế độ chỉnh sửa sai
  3. một khi bạn đã giải quyết tất cả các cuộc xung đột trong tập tin đó, hãy nói với các tập tin để "đánh dấu như sáp nhập"

  4. khi tất cả các tập tin được tự do xung đột sau đó bạn có thể đồng bộ hóa dự án Eclipse của bạn và cam kết các tập tin để SVN

+5

Điều này sẽ được đánh dấu là câu trả lời! – HDave

+2

40 upvotes cho vs vs upvotes này cho câu trả lời chấp nhận đồng ý với bạn @HDave – amadain

+1

Nếu tôi muốn chỉnh sửa nhánh thành thân cây như bạn đã mô tả trong phần thứ hai, tôi sẽ nhận được kết quả tương tự nếu tôi luôn chọn "tất cả" bản chỉnh sửa chọn các bản chỉnh sửa trước đây từng cái một? – shylynx

3

công cụ hợp nhất của openCollabNet cho subclipse khá gọn gàng. Có nhiều loại hợp nhất có sẵn và sự hợp nhất mà tôi vừa thực hiện với nó khi liền mạch. Tôi khuyến khích điều đó.

2

Điều duy nhất đồng bộ hóa chế độ xem trong nhật thực thiếu là khả năng đăng ký. Trong chế độ xem đồng bộ hóa nhóm, tôi có thể xem tất cả các thay đổi và giải quyết xung đột, do đó, nó sẽ khá trực quan để đăng ký ngay tại đó thay vì quay lại chế độ xem java và thực hiện đăng ký.

4

Thứ nhất, nếu bạn thấy ">>>>>" và như vậy trong tệp của bạn khi bạn xem chúng trong Eclipse, điều này có thể có nghĩa là bạn không xem tệp bằng trình chỉnh sửa so sánh phù hợp. Hãy thử nhấp chuột phải vào tệp trong chế độ xem Dự án hoặc Đồng bộ hóa và chọn "Chỉnh sửa xung đột" để hiển thị trình chỉnh sửa so sánh sẽ hiển thị cho bạn các vùng xung đột bằng đồ thị thay vì văn bản. Lưu ý rằng trình soạn thảo so sánh xuất hiện cho "Chỉnh sửa xung đột" khác với trình chỉnh sửa bạn nhận được khi bạn chỉ cần nhấp đúp vào một tệp trong chế độ xem Đồng bộ hóa - trình chỉnh sửa so sánh doublieclick hiển thị sự khác biệt giữa tệp hiện tại của bạn và cách nó tồn tại khi bạn kiểm tra lần cuối hoặc cập nhật nó, trong khi hộp thoại Soạn thảo Xung đột cho thấy sự khác biệt giữa hai nguồn thay đổi (ví dụ: các thay đổi bạn đã hợp nhất so với các thay đổi đã tồn tại trong không gian làm việc của bạn trước khi bạn hợp nhất).

Thứ hai, bạn có thể muốn biết một lỗi trong một số phiên bản của plugin lật ngược Eclipse gây ra tất cả các tệp chấp nhận thay đổi hợp nhất được đánh dấu không chính xác là có xung đột. Lỗi này đã được khắc phục, nhưng rất nhiều người dường như chưa cập nhật để sửa lỗi. Thông tin chi tiết ở đây:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=312585

0

tôi hạ cánh ở đây vì tôi đang tìm kiếm một cách để hợp nhất trong một trình soạn thảo hợp bên ngoài (KDiff3) nhưng bắt đầu hợp nhất từ ​​nhật thực. Tôi không hài lòng với câu trả lời được cung cấp ở trên. Vì vậy, đây là ho để cấu hình KDiff3 như hợp nhất và diff biên tập viên cho SVN trong eclipse:

đi đến Windows -> Preferences → Team -> SVN -> Diff Viewer Thêm một cấu hình mới (thêm nút): mở rộng hoặc Mimetype : * - nếu bạn muốn, bạn có thể chỉ định các mimetypes khác nhau cho các trình soạn thảo khác nhau, tôi không cần nó như vậy, đó là alquantor.

Diff: Chương trình đường dẫn C: \ Program Files \ KDiff3 \ kdiff3.exe (hoặc bất cứ nơi nào bạn có biên tập hợp nhất của bạn - sry cho con đường cửa sổ, cảm thấy tự do để thêm một phiên bản Linux trong các ý kiến ​​hoặc chỉnh sửa này câu trả lời.)

Arguments: $ {cơ sở} $ {mỏ} $ {họ}

Merge: đường Chương trình C: \ Program Files \ KDiff3 \ kdiff3.exe

Arguments: $ {base} $ {mine} $ {theirs} -o $ {merged}

Điều này có thể sẽ hoạt động tốt cho các trình chỉnh sửa hợp nhất khác, nhưng với một cú pháp đối số khác (hình dung ra cho chúng tôi biết :)).

Cách sử dụng như bình thường (nhóm-> chỉnh sửa xung đột) để hợp nhất và so sánh-> foo cho chế độ xem khác.

Chúc mừng

Các vấn đề liên quan