SORU
10 NİSAN 2010, CUMARTESİ


Nasıl Git düzgün Güncellemelerinden ile kullanmak için?

Bir süre için bir iphone geliştirici ve son zamanlarda benim iş akışı gıt dahil edilmiştir. Benim iş akışı için gıt ayarları http://shanesbrain.net/2008/7/9/using-xcode-with-git üzerinde bulunan şimdiye kadar kullandım.

Bu ayarları gıt *hariç söyle.samimi gelen pbxproj? Bunun için gerçek bir neden var mı? Proje için bir dosya ekliyorum ve kökeni hakkında bastığınızda, örneğin, sevgili geliştiriciler onlar çekerken dosya Güncellemelerinden projesi için ekledik. Sonra onlardan biri bir sürüm oluşturur eğer bu dosya dahil değildir. Ben sadece gıt proje dosyası için birleştirir halledeyim gerekmez mi? Biri bu dosyayı birleştirir olmalıdır neden ve dosyaları proje eklendiğinde düzgün bir şekilde bu durumla başa çıkmak için nasıl açıklayabilir. Teşekkürler.

CEVAP
11 NİSAN 2010, Pazar


İPhone uygulamaları SDK geçtiğinden beri tam zamanlı çalışıyorum, çoğu zaman birden çok geliştiriciler ile takımlar üzerinde çalışarak geçirdi.

Gerçeği bu şekilde daha zararlı olduğunu birleştirilmesi vermemek için .pbxproj dosya daha yararlı olur. Dediğin gibi, eklediğinizde bir dosya sürece diğer insanların bu dosya, onlar da ekliyorum, bu projenin uygulama herhangi bir boyut, o berbat ve alır büyük bir faydası olan kaynak kod kontrolü size gerçekten geri dönmek için eksiksiz bir önceki proje devlet sadece git.

.pbxproj dosyası basit özellik listesi (XML gibi). Deneyim, sadece TEK bir anlaşmazlık birleştirme eğer iki kişi aynı anda eklenen dosyalar varsa almak olduğunu. % 99 birleştirme çakışma durumlarda çözüm gıt en azından sadece herhangi bir^ kaldırma içerir, her iki birleştirme tutmak için.<<< . , &;< lt;<<==== çizgiler. Aslında bu basit bir kabuk komut dosyası düzeltmek için yarattım o kadar yaygındır .pbxproj dosyası bir proje dizini içinde baştan beri Devlet, bu işletiyorum birleştirme (sınıf düzeyinde):

#!/bin/sh

    projectfile=`find -d . -name 'project.pbxproj'`
    projectdir=`echo *.xcodeproj`
    projectfile="${projectdir}/project.pbxproj"
    tempfile="${projectdir}/project.pbxproj.out"
    savefile="${projectdir}/project.pbxproj.mergesave"

    cat $projectfile | grep -v "<<<<<<< HEAD" | grep -v "=======" | grep -v "^>>>>>>> " > $tempfile
    cp $projectfile $savefile
    mv $tempfile $projectfile

Eğer başarısız olursa en kötü ihtimalle (böyle büyük mükafat proje yük etmeni ve yükleme başarısız), sadece silin .dosya pbxproj, git master kontrol edin ve yeniden dosya. Ama asla bu komut ile kullanmak aylar oldu, yine birkaç diğer geliştiriciler ile iPhone uygulamaları için tam zamanlı çalışarak geçirdim.

Komut yerine kullanarak, deneyebileceğiniz (yorum aşağıda belirttim) başka bir seçenek için bu satırı ekleyin .dosya gitattributes:

*.pbxproj text -crlf -diff -merge=union

Sonra git her zaman her iki taraf için birleştirme alacak .pbxproject, sadece herhangi bir ekstra iş olmadan sağlanan komut dosyası ile aynı etkiye sahip dosyaları.

Son olarak, burada benim tamamlandı .gitignore dosyası, istemediğin bazı şeyler var gibi görmezden ayarlayın - benim durumumda var ne gösteren gerçekten sadece kalıntıları emacs ve tüm dizin oluşturmak:

# xcode noise
build/*
*.pbxuser
*.mode1v3
*~

# old skool
.svn

# osx noise
.DS_Store
profile

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Avast

    Avast

    27 NİSAN 2006
  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • placeboing

    placeboing

    7 Mart 2006