Làm cách nào để sử dụng Xcode 4 mergetool theo cách độc lập?


8

Đôi khi tôi phải thực hiện hợp nhất git trên bàn điều khiển. Cho đến nay, để giải quyết xung đột, tôi đã sử dụng FileMerge của Xcode 3 (bạn có thể mở nó trên bàn điều khiển bằng lệnh 'opendiff'). Nếu xung đột hiển thị, tôi sử dụng 'git mergetool', nó sẽ tự động gọi opendiff cho mỗi tệp xung đột.

Tuy nhiên, Xcode 4 có thành phần mergetool đẹp hơn nhiều để giải quyết xung đột. Tôi tin rằng thành phần này là một phần của Xcode 4 có thể thực thi được, chứ không phải độc lập. Nó cho phép bạn xem trước tệp đã hợp nhất và trực tiếp chỉnh sửa mã được hợp nhất trên cơ sở từng trường hợp, điều này làm cho việc hợp nhất các xung đột phức tạp cực kỳ nhanh chóng và thỏa đáng.

Có cách nào để sử dụng sáp nhập Xcode 4 khi gọi 'git mergetool' từ Terminal không?

Tôi không thể tìm thấy một tệp thực thi cho công cụ này trong gói Xcode 4. Bất kỳ hack nào đạt được điều này sẽ được hoan nghênh.


Trong trường hợp bất kỳ ai khác quan tâm đến tính năng này: có vẻ như không có cách làm chính thức nào. Tôi đã gửi một yêu cầu tính năng cho Apple thông qua bugreport . Đây là radar . Tôi đoán nó khá vô vọng, nhưng bạn không bao giờ biết. Đối với bất kỳ ai khác quan tâm, tôi khuyên bạn nên thể hiện sự quan tâm bằng cách gửi báo cáo lỗi tương tự cho Apple.
Ricardo Sanchez-Saez

Câu trả lời:


4

opendiff lấy hai đối số tên tệp và tham số --ancestor với tên tệp thứ ba, để tạo khác biệt ba chiều và tham số --merge để nói tệp đầu ra sử dụng để giải quyết xung đột.

Vậy đi

[mergetool "opendiff"]
    cmd = "opendiff \"$LOCAL\"  \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
    tool = opendiff

Điều đó sẽ khiến git sử dụng opendiff làm công cụ hợp nhất của nó, khi có xung đột hợp nhất.

Điều đó nói rằng, tôi RẤT thích DiffMerge từ SourceGear , đây là một công cụ khác biệt và hợp nhất ba chiều miễn phí, giải quyết xung đột tốt hơn, hướng từ, tốt hơn nhiều. Và trong tài liệu của DiffMerge có những điều cần nói với git để biến nó thành công cụ hợp nhất và khác biệt mặc định.


Cảm ơn bạn đã cố gắng giúp đỡ, nhưng Filemerge / opendiff không phải là thứ tôi đang cố gắng sử dụng. Ngoài ra, tôi đã dùng thử DiffMerge (và DeltaWalker để biết giá trị của nó) và tôi không thích UI của nó lắm. Kính vạn hoa đẹp hơn waaay, nhưng nó không có tính năng hợp nhất / chỉnh sửa, chỉ hiển thị sự khác biệt.
Ricardo Sanchez-Saez

Tôi khá chắc chắn Xcode 4 chỉ gói FileMerge. Tôi phát hiện ra sự thất vọng tương tự về Kính vạn hoa.
Dan Ray

Tôi có thể nói Xcode 4 không gói FileMerge. Trên FileMerge, bạn không thể chỉnh sửa tệp đã hợp nhất, bạn chỉ cần chọn phía nào của hợp nhất bạn muốn sử dụng cho mỗi xung đột. Trên trình giải quyết xung đột kéo Xcode 4, bạn có thể chỉnh sửa các dòng xung đột và thực hiện thao tác kéo với tệp theo cách chính xác mà bạn muốn. Bên cạnh đó, giao diện người dùng hoàn toàn khác với Filemerge.
Ricardo Sanchez-Saez

1
Kaleidoscope 2 beta đã được phát hành gần đây và nó cho phép chỉnh sửa nội tuyến các tập tin được hợp nhất. Kiểm tra xem, nó khá tốt. Điều duy nhất nó thiếu là một màu khác nhau cho các xung đột (nó sử dụng cùng màu với mã thay thế cho các xung đột).
Ricardo Sanchez-Saez

Sau vài tháng sử dụng Kính vạn hoa và mặc dù nhìn chung vẫn tốt, tôi phải nói rằng nó vẫn là một lỗi và / hoặc khó hiểu, đặc biệt khi so sánh với thành phần giải quyết xung đột Xcode 4.x. Vẫn hy vọng Apple sẽ làm điều bất ngờ và thực hiện nó như một công cụ độc lập không thể xâm phạm từ, giả sử, Tower. ;-)
Ricardo Sanchez-Saez

0

Bạn có thể chỉnh sửa trong trình soạn thảo văn bản (rất cơ bản) trong FileMerge bằng cách mở ngăn trình soạn thảo - được đóng theo mặc định. Để mở trình soạn thảo trong FileMerge, hãy kéo dấu chấm bên dưới cột diff khác lên để mở ngăn soạn thảo.


-1

Điều này đã kết thúc làm việc cho tôi

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""

2
Opendiff là những gì Xcode 3.x sử dụng để hợp nhất. Câu hỏi của tôi là về thành phần hợp nhất Xcode 4.x, một công cụ hoàn toàn khác (nó cho phép chỉnh sửa nội tuyến của tệp kết quả, không giống như opendiff / filemerge). Dù sao cũng cảm ơn bạn.
Ricardo Sanchez-Saez
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.