SORU
22 ŞUBAT 2011, Salı


Git - çatışma birleştirme gücü nasıl ve manuel seçili dosya üzerinde birleştirme

Ortak ana dal ve çok sayıda paralel dalları, her yükleme için bir olan, birkaç belirli değişiklikler her bir uygulama korumak. Kaynak kodu git yönetilmektedir ve paralel olanları içine ana daldan özellikler ve hata düzeltmeleri transfer ihtiyacımız olduğunda müthiş bir araçtır. Ama hassas ve otomatik olarak bazı dosyalar genellikle kötü sonuçlar verir birleşiyor. Her birleştirme eğer bir şekilde işaretlenmiş olup olmadığını çok daha kolay olurdu ve birleştirme çatışma manuel birleştirme gerektiren neden olacaktır.

Bir cevap aradım :

  1. Kullanıyorum--no-tamamlamave--no-ffbirleştirme seçenekleri, ama aynı değildir.
  2. Here here biri ama hiçbir çözüm aynı soruyu sorar.
  3. Benzer durum how to prevent file being merged kullanarak gibi görünüyor .gitattributes içeren:somefile.php birleştirme=bizimki. Yaşanan çatışmalardan ya da manuel ama hiçbiri şimdiye kadar birleştirme bulundu zorlayacak olan bazı seçeneği birleştirme bulmaya çalıştım.
  4. .gitattributes içeren:somefile.php -birleştirmehiçbir zaman otomatik olarak birleştirilmiş ve bu nedenle manuel zorluyor birleştirme. 90% çözümdür, ama benim aradığım otomatik birleştirme ve başarılı ya da değil, ne olursa olsun çatışma olarak işaretleyin çalışmaktır.Ama bu şimdiye kadar çözüme yakın.(...teşekkürler açıklama için Charles Bailey
  5. Birisi özel bir sürücü birleştirme yazmanı öneririm (, *1*16), ama nasıl benim için açık değil.

düzenleme:varyant 4. açıklama

CEVAP
23 ŞUBAT 2011, ÇARŞAMBA


Seçenek 5, sürücü birleştirme özel, muhtemelen bu şekilde istediğini yakın elde etmektir. Şaşırtıcı derecede kolay. Aşağıda, arzu edilen davranış için çok yakın olmalı bence bunun bir örneğidir.

İlk olarak, birleştirme sürücüsü bir komut dosyası merge-and-verify-driver oluşturun. Çalıştırılabilir yapın ve uygun bir yere koyun (repo yapılandırma dosyası bağlı olmadığından repo içine bu komut, kontrol bile dikkate almak isteyebilirsiniz). Git bu kabuk hassas dosyaları birleştirme gerçekleştirmek için idam etmek çok kolaydır

#!/bin/bash
git merge-file "${1}" "${2}" "${3}"
exit 1

Bu Git Kendini normalde bu varsayılan davranış birleştirme yapar. En önemli fark, senaryoyu her zaman sıfır (birleştirme bile bir çatışma olduğunu göstermek için, aslında çatışmalar olmadan çözüldü) verir.

Sonraki, özel birleştirme şoförün varlığı hakkında Gıt söylemelisin. Repo yapılandırma dosyası (.git/config) Bu:

[merge "verify"]
        name = merge and verify driver
        driver = ./merge-and-verify-driver %A %O %B

Bu örnekte, repo üst seviyesinde merge-and-verify-driver koydum dizin (./). Komut dosyası yolu buna göre belirtmeniz gerekir.

Şimdi, sadece özel birleştirme sürücüsü dosyaları birleştirirken kullanılır, böylece hassas dosyaları uygun öznitelikleri vermek gerekir. .gitattributes dosyanıza bunu ekleyin:

*.sensitive merge=verify

Burada, bir ad *.sensitive özel kullanmalısınız desen eşleştirme ile herhangi bir dosya sürücü birleştirme Gıt söyledim. Belli ki, dosyanız için uygun olan desen(ler) kullanmak gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • Dive In

    Dive In

    17 Temmuz 2013
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009