Bagaimana cara menggunakan Xcode 4 mergetool secara mandiri?

8

Saya terkadang harus membuat git merge di konsol. Hingga kini, untuk menyelesaikan konflik, saya menggunakan FileMerge Xcode 3 (Anda dapat membukanya di konsol menggunakan perintah 'opendiff'). Jika konflik muncul, saya menggunakan 'git mergetool' yang secara otomatis memanggil opendiff untuk masing-masing file yang bertentangan.

Namun, Xcode 4 memiliki fitur komponen mergetool yang jauh lebih baik untuk menyelesaikan konflik. Saya percaya komponen ini adalah bagian dari Xcode 4 yang dapat dieksekusi, bukan mandiri. Ini memungkinkan Anda untuk melihat pratinjau file yang digabungkan, dan secara langsung mengedit kode yang digabungkan berdasarkan kasus per kasus, yang membuat menggabungkan konflik kompleks menjadi sangat cepat dan memuaskan.

Apakah ada cara untuk menggunakan Xcode 4 mergetool ketika memanggil 'git mergetool' dari Terminal?

Saya tidak dapat menemukan executable untuk alat ini di dalam bundel Xcode 4. Setiap retasan yang mencapai ini akan diterima.

Ricardo Sanchez-Saez
sumber
Jika ada orang lain yang tertarik dengan fitur ini: sepertinya tidak ada cara resmi untuk melakukannya. Saya mengirimkan permintaan fitur ke Apple melalui laporan bug . Ini radar . Saya kira itu cukup tanpa harapan, tetapi Anda tidak pernah tahu. Untuk orang lain yang tertarik, saya sarankan menunjukkan minat dengan mengirimkan laporan bug serupa ke Apple.
Ricardo Sanchez-Saez

Jawaban:

4

opendiff mengambil dua argumen nama file, dan parameter --ancoror dengan nama file ketiga, untuk menghasilkan diff tiga arah, dan parameter --merge mengatakan file output yang akan digunakan untuk resolusi konflik.

Jadi pergilah:

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

Itu seharusnya membuat git menggunakan opendiff sebagai alat penggabungnya, ketika ada konflik penggabungan.

Yang mengatakan, saya SANGAT lebih suka DiffMerge dari SourceGear , yang merupakan perangkat bebas dan tiga arah penggabungan yang melakukan resolusi konflik yang jauh lebih baik, berorientasi kata. Dan dalam dokumentasi DiffMerge ada apa yang harus diberitahukan kepada git untuk menjadikannya alat diffing dan merging default

Dan Ray
sumber
Terima kasih telah mencoba membantu, tetapi Filemerge / opendiff bukan yang saya coba gunakan. Juga, saya mencoba DiffMerge (dan DeltaWalker untuk apa nilainya) dan saya tidak terlalu suka UI-nya. Kaleidoskop lebih bagus, tetapi tidak menampilkan penggabungan / pengeditan, hanya menampilkan perbedaan.
Ricardo Sanchez-Saez
Saya cukup yakin Xcode 4 hanya membungkus FileMerge. Saya menemukan kekecewaan yang sama tentang Kaleidoscope.
Dan Ray
Saya akan mengatakan Xcode 4 tidak membungkus FileMerge. Pada FileMerge Anda tidak dapat mengedit file gabungan, Anda cukup memilih sisi mana dari gabungan yang ingin Anda gunakan untuk setiap konflik. Pada penarik konflik-konflik Xcode 4 Anda dapat mengedit baris-baris yang saling bertentangan dan melakukan penarikan dengan file persis seperti yang Anda inginkan. Selain itu, UI benar-benar berbeda dari Filemerge.
Ricardo Sanchez-Saez
1
Kaleidoscope 2 beta baru-baru ini dirilis, dan memungkinkan pengeditan sisip file gabungan. Lihat ini, ini cukup bagus. Satu-satunya hal yang hilang adalah warna yang berbeda untuk konflik (menggunakan warna yang sama dengan substitusi kode untuk itu).
Ricardo Sanchez-Saez
Setelah beberapa bulan menggunakan Kaleidoscope dan meskipun secara umum bagus, saya harus mengatakan bahwa itu masih agak bermasalah dan / atau membingungkan, khususnya bila dibandingkan dengan komponen penyelesaian konflik Xcode 4.x. Masih berharap Apple melakukan hal yang tak terduga dan mengimplementasikannya sebagai alat mandiri yang tak dapat disangkal dari, katakanlah, Tower. ;-)
Ricardo Sanchez-Saez
0

Anda dapat mengedit dalam editor teks (sangat mendasar) di dalam FileMerge dengan membuka panel editor - yang ditutup secara default. Untuk membuka editor di FileMerge, seret titik di bawah kolom tengah ke atas untuk membuka panel editor.

Austin-Soft.com
sumber
-1

Ini akhirnya bekerja untuk saya

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

[mergetool "opendiff"]
  cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""
macek
sumber
2
Opendiff adalah yang digunakan Xcode 3.x untuk penggabungan. Pertanyaan saya adalah tentang komponen gabungan Xcode 4.x, yang merupakan alat yang sama sekali berbeda (ini memungkinkan pengeditan inline dari file yang dihasilkan, tidak seperti opendiff / filemerge). Bagaimanapun, terima kasih.
Ricardo Sanchez-Saez