Xcode 4 birleştirme aracını bağımsız bir şekilde nasıl kullanabilirim?


8

Bazen konsolda git birleşmeleri yapmak zorundayım. Şimdiye kadar, çakışmaları çözmek için Xcode 3'ün FileMerge'ini kullanıyordum ('opendiff' komutunu kullanarak konsolda açabilirsiniz). Çakışmalar gösterilirse, çakışan dosyaların her biri için otomatik olarak opendiff'i çağıran 'git mergetool' kullanıyorum.

Bununla birlikte, Xcode 4, çakışmaları çözmek için çok daha iyi birleştirme bileşeni içerir. Bu bileşenin bağımsız değil, Xcode 4 yürütülebilir dosyasının bir parçası olduğuna inanıyorum. Birleştirilen dosyayı önizlemenize ve birleştirilmiş kodu duruma göre doğrudan düzenlemenize olanak tanır, bu da karmaşık çakışmaları inanılmaz derecede hızlı ve tatmin edici hale getirir.

Terminal'den 'git mergetool' çağrılırken Xcode 4 birleştirme aracını kullanmanın herhangi bir yolu var mı?

Xcode 4 paketinin içinde bu araç için bir yürütülebilir dosya bulamıyorum. Bunu başaran her hack memnuniyetle karşılanacaktır.


Bu özellikle ilgilenen başka biri varsa: resmi olarak yapmanın resmi bir yolu yok gibi görünüyor. Hata raporu yoluyla Apple'a bir özellik isteği gönderdim . İşte radar . Sanırım oldukça umutsuz, ama asla bilemezsin. İlgilenen herkes için, Apple'a benzer bir hata raporu göndererek ilgi göstermenizi öneririm.
Ricardo Sanchez-Saez

Yanıtlar:


4

opendiff üç yollu bir fark üretmek için iki dosya adı argümanı ve üçüncü dosya adıyla bir --ancestor parametresi alır ve çakışma çözümlemesi için kullanılacak çıktı dosyasını söyleyecek bir --merge parametresi alır.

O zaman git:

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

Birleştirme çakışmaları olduğunda git, birleştirme aracı olarak opendiff'i kullanmalıdır.

Yani , çok daha iyi, kelime odaklı, çatışma çözümü yapan ücretsiz bir fark ve üç yönlü birleştirme aracı olan SourceGear'dan DiffMerge'yi çok tercih ediyorum . Ve DiffMerge'nin belgelerinde git'i varsayılan farklılaştırma ve birleştirme aracı yapmak için söyleyecekler var.


Yardım etmeye çalıştığınız için teşekkürler, ancak Filemerge / opendiff kullanmaya çalıştığım şey değil. Ayrıca, DiffMerge (ve değerinde ne için DeltaWalker) denedim ve onun UI çok sevmiyorum. Kaleydoskop daha hoş, ancak birleştirme / düzenleme özelliği yok, sadece fark gösteriyor.
Ricardo Sanchez-Saez

Eminim Xcode 4 sadece FileMerge'yi sarıyor. Kaleidoscope için de aynı hayal kırıklığını keşfettim.
Dan Ray

Xcode 4'ün FileMerge'yi kaydırmadığını söyleyebilirim. FileMerge'de birleştirilmiş dosyayı düzenleyemezsiniz, sadece birleşme için her bir çakışma için kullanmak istediğiniz tarafı seçersiniz. Xcode 4 çekme çakışması çözümleyicide, çakışan çizgileri düzenleyebilir ve dosyayla tam olarak olmasını istediğiniz gibi çekebilirsiniz. Ayrıca, UI Filemerge'den tamamen farklı.
Ricardo Sanchez-Saez

1
Kaleidoscope 2 beta yakın zamanda piyasaya sürüldü ve birleştirilmiş dosyaların satır içi düzenlenmesine izin veriyor. Şuna bir bak, oldukça iyi. Eksik olan tek şey çakışmalar için farklı bir renktir (bunlar için kod ikamesi ile aynı rengi kullanır).
Ricardo Sanchez-Saez

Kaleidoscope'u kullandıktan birkaç ay sonra ve genel olarak iyi olmasına rağmen, özellikle Xcode 4.x çakışma çözme bileşenine kıyasla hala bir tür hata ve kafa karıştırıcı olduğunu söylemeliyim. Yine de Apple'ın beklenmedik bir şey yapmasını ve bunu Tower'dan çağrılabilen bağımsız bir araç olarak uygulamasını umuyor. ;-)
Ricardo Sanchez-Saez

0

Varsayılan olarak kapalı olan düzenleyici bölmesini açarak FileMerge içindeki (çok temel) metin düzenleyicisinde düzenleyebilirsiniz. Düzenleyiciyi FileMerge'de açmak için, merkez farkı sütununun altındaki noktayı düzenleyici bölmesini açmak için yukarı sürükleyin.


-1

Bu benim için çalıştı

[merge]
  tool = opendiff

[mergetool]
  keepBackup = false

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

2
Opendiff, Xcode 3.x'in birleştirmeler için kullandığı şeydir. Benim sorum tamamen farklı bir araç olan Xcode 4.x birleştirme bileşeni hakkındaydı (opendiff / filemerge'den farklı olarak, ortaya çıkan dosyanın satır içi düzenlemesine izin verir). Yine de teşekkürler.
Ricardo Sanchez-Saez
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.