SORU
5 Kasım 2012, PAZARTESİ


Böyle büyük mükafat değişiklikler şeridi ve XİB dosyaları değiştirilmemiş

Şeritleri birden fazla kişi onlarla işbirliği yapıyor zaman git bir iş akışı açısından bir kraliyet ağrı değil. Örneğin, XML .film şeridi dosyası toolsVersion <document> başlangıç etiketi ve systemVersion en son dosya manipülatör çalışan ne olursa olsun, tarafından değiştirilmiş bağlıyor. Kesinlikle herkesin böyle büyük mükafat sürümleri senkronize* *3, systemVersion değişiklikleri ile yardımcı olmak için, geliştirici çalıştıran özel Mac ve/veya OS X sürümüne bağlı olarak, ne olursa olsun gibi görünüyor.

Bu aptalca, ama çoğunlukla zararsızdır. Bizi endişelendiren şey, gerçi, diğer zamanlarda başka değişiklikler otomatik olarak sadece git pull sonra onları açarak film şeridi yapılmış. Yani Alice bir film şeridi değişiklik yapar, tamamlar ve depo için onları iter. Bob sonra Alice'in değişiklikler çeker ve daha fazla değişiklik yapma film şeridi açılır. Film şeridi açar anda, dosya simgesini hemen modifiye-ama-kaydedilmemiş durumda değişiklikler ve git status garip değişiklikleri herhangi bir sayıda meydana geldiğini gösterir. Tüm bu olmadan, Bob değişen bir şey ya da dosya kendini kurtarmış olması.

Gördüğümüz en yaygın otomatik değiştirme şeridi bir dosyanın sonuna yakın <classes> etiket tüm hiyerarşi ortadan kalkması ya da yeniden ortaya çıkmasıdır. Bunun neden olduğunu çözemedim. Değişik bir film şeridi birkaç yerelleştirilmiş sürümleri olabilir .dizinleri lproj ve Interface Builder içinde onları açarken, sınıf hiyerarşisinin kendiliğinden bazı kaldırıldı ve diğerleri eklenebilir, ya da biraz yalnız bıraktı. Bu git diff, gürültü bir sürü neden olur ama aslında herhangi bir işlevi sonu gelmez. Genellikle seçici gıt dizin içine yaptık gerçek değişiklikler, bu taahhüt, ve sadece doğal, saçma <classes> değişiklikleri atın olacağız. Bu olması gerektiği gibi işleyen küçük ve güzel tutmak için. Ama sonuçta, bu sadece olur çok fazla rahatsız olan beri böyle büyük mükafat tutar yeniden yapmaya değişiklikleri ve birisi ragecommits onlarla birlikte başka şeyler de... böylesi daha iyi olana kadar başka birinin böyle büyük mükafat karar istemek onları geri değiştirmek için görünür. (Tarih kaydedilmeye bizim bu içinde küfür var.)

Herkesten bu davranışı gören var mı? Bu geliştirici bizim Mac daha böyle büyük mükafat bir hata ya da bir yapılandırma sorunu? XİB dosyaları ile birlikte bazı benzer davranışlar gördük, ama bu çizimlerini daha duyarlı gibi görünüyor.

CEVAP
28 AĞUSTOS 2013, ÇARŞAMBA


Bu bir hata değil, bu film şeridi dosyaları nasıl işleyeceğini bir sonucudur. Bir fark yazma ve film şeridi dosyaları için program (GitHub link) birleştirme ve ben saat film şeridi mantığı dosyaları ve böyle büyük mükafat işler nasıl inceleyerek geçirdim. Bu ne buldum

  • Neden garip değişiklikler şeridi dosyaları oluşur? Böyle büyük mükafat NSXML API NSSettabanlı bazı mantıksal ağaç yapısı içine film şeridi dosyalarını ayrıştırmak için kullanır. Böyle büyük mükafat değişiklikleri yazmak için gerektiğinde NSXMLDocument bir mantıksal ağaç yapısına göre oluşturur, film şeridi dosyası temizler ve XMLDataWithOptions: dosyayı yeniden doldurmak için çağırır. Ayarlar öğelerini düzeni korumak için bile en ufak bir değişiklik XML dosyası tüm film şeridi değiştirebilir.

  • Neden sınıf etiketi veya rastgele kaybolup yeniden oluşabilir mi? <class> bölüm hiç iç Güncellemelerinden bir önbellek daha fazla bir şeydir. Böyle büyük mükafat sınıfları hakkında bilgileri kullanın. Önbellek değişiklikleri sık sık. Elemanları .h/.m dosyaları sınıfı Güncellemelerinden eskimiş (en azından eski Xcodes böyle davranır) şüpheli açıldığında ve kaldırılır eklenir. Film şeridi saklayabilirsinizmevcutönbellek sürümü <class> bölümüne sık sık değişir bu yüzden terk etti, hatta kaybolur.

Ters mühendislik böyle büyük mükafat var; böyle büyük mükafat ve film şeridi dosyaları deneyerek bu gözlemler yaptım. Yine de, işe yarıyor 0 emin ben böyleyim neredeyse.

Sonuç:

  • Önbellek bölümü önemli değildir; güvenli bir şekilde herhangi bir değişiklik yok sayabilirsiniz.
  • Bütün forumlarda bulabilirsiniz aksine, çizimlerini dosyaları birleştirme karmaşık bir görev değildir. Örneğin, diyelim ki bir film şeridi belge MyController1 görünüm denetleyicisi değiştirdiğini varsayalım. Film şeridi dosya açmak, ve bunun gibi bir şey bulun <viewController id=”ory-XY-OBM” sceneMemberID=”MyController1”>. Güvenli bir şekilde bu bölümde sadece değişiklikleri kaydetmek ve her şeyi göz ardı edebilirsiniz. Eğer geçişlerini veya kısıtlamaları değiştirdiyseniz, aynı zamanda “ory-XY-OBM” içinde olan bir şey kaydetme. Basit!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dcigs

    dcigs

    9 EYLÜL 2006
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • Kontor.TV

    Kontor.TV

    14 Mart 2006