Xcode5'teki * .xccheckout dosyaları VCS altında yok sayılmalı mı?


157

Apple, Xcode 5'te proje ile ilgili yeni bir dosya türü tanıttı: "xccheckout".

Bu dosya ".xcodeproj / project.xcworkspace / xcshareddata /" dizininde bulunur ve projenin sürüm kontrol sistemiyle ilişkili olduğu görülmektedir.

Bir örnek dosya burada: http://pastebin.com/5EP63iRa

Bu tür bir dosyanın VCS altında göz ardı edilmesi gerektiğini düşünüyorum, ama emin değilim.

İşte sorular:

  1. "Xccheckout" yok sayılmalı mı?
  2. Amacı nedir?

Bu soru oldukça alakalı olma eğilimindedir; bu yüzden daha gramer ve sözdizimsel olarak doğru olmasını isterim. Anadili İngilizce olan biriyseniz veya İngilizce konusunda çok bilgiliyseniz, dilimi kontrol etmek için yardım istemek istiyorum. Teşekkür ederim!
Artem Abramov

1
Küçük değişiklikler önerildi: "Apple yeni tanıttı", "Örnek bir dosya burada:". 1. soruda eşleşmeyen bir alıntı var
Sofi Software LLC

3
Hangi dosyaların göz ardı edilmesi gerektiğini bilmek için her zaman github / gitignore repo'ya başvururum -> github.com/github/gitignore/blob/master/Objective-C.gitignore
eliocs

Yanıtlar:


109

Sen gerektiğini bir Xcode 5 check .xccheckoutdosyasında; genel olarak, dosyalar xcshareddataişlenmelidir.

Bir .xccheckoutdosya, çalışma alanında hangi havuzların kullanıldığına ilişkin meta veriler içerir. Tek bir havuzdaki tek bir proje için fazla fark yaratmaz. Ancak, farklı havuzlardan birden fazla projeye sahip bir çalışma alanı kullanıyorsanız, çalışma alanında bir .xccheckoutdosyanın bulunması, Xcode'un bir çalışma alanını oluşturan tüm bileşenlerin ne olduğunu ve nereden alınacağını bilmesine izin verir.


8
Paylaşılmak istenmediyse, Apple onu saklayacaktı, bu .xcuserdatayüzden dahil edilmelidir.
Joshcodes

4
Cevabımda söylediğim gibi, xccheckout dosyası bir çalışma alanında kullanılan tüm depolar için bilgi içerir. Hangi SCM sistemini kullandıklarına bakılmaksızın durum böyle - böyle bir çalışma alanı svn veya git içinde olabilir ve projeleri svn ve git depolarının bir karışımında olabilir.
Chris Hanson

72
Xccheckout, her geliştiricinin makinesine özgü anahtarlar ve adlar içeriyor gibi görünüyor ... xcode'u çalıştırır çalıştırmaz dosyadaki bazı anahtarları değiştirir ve IDstourceControlWCCName adlı bir şeyi <string> OurCompanyAPI </string> yerine <string olarak değiştirir > our_company_api / string> - sonuncusu, kopyayı kopyalarken kullandığım addır. Bu dosyanın paylaşılması gerekiyorsa, Apple oldukça kötü bir iş çıkardı.
Herr Grumps

7
Bu dosyayı kontrol ettiğimizde, tüm çalışma arkadaşlarım farklı bir IDESourceControlProjectIdentifier ... alır. -_-
Cœur

9
Apple'ın başlangıçta ne istediğine bakılmaksızın, .xccheckoutdosyalar Xcode 6 beta'da bazı çılgın sorunlara neden oluyor ve bunları VCS'den kaldırmaya karar verdim. Bazı önbellek hatalarıyla ilgili gibi görünüyor ve Xcode'un her seferinde otomatik olarak VCS'den onları yeniden oluşturabileceğine inanıyorum.
eonil

63

*.xccheckoutDosya VCS meta verileri içerir ve bu nedenle VCS kontrol edilmemelidir.

Öte yandan: bu dosyayı kontrol etmek muhtemelen birleştirme zorlukları veya başka sorunlar yaratmayacaktır.

Bu dosyayı (önerdiğim) yoksaymak istiyorsanız, bu satırı projenize eklemelisiniz .gitignore:

*.xccheckout

Abizern 'ın çözüm bir çalışma alanı içindeki projeler için çalışmaz. Eğer bir çalışma alanı kullandığınızda Çünkü, yolunu *.xccheckoutdosyasında olacaktır: <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout. Ve aslında istediğinizden fazlasını görmezden geliyor.

Düzenleme: Bu dosya, projenizde muhtemelen birçok VCS sistemleri hakkında Xcode bilgi yönetmek için var, bkz: Chris Hanson cevap. Projelerin>% 99'u için .xccheckout dosyası yapılandırma gereğinden fazladır.


1
Bu ifadeyi "aslında istediğinizden fazlasını görmezden gelirse" genişletmeniz müthiş olurdu. Özellikle, bu klasöre teslim edilmesi gereken diğer dosyalara bazı örnekler.
Mark Edington

Takip: Bu sorudan Adam'dan bir .gitignore kullanıyorum . Bu bir şekilde kullanılabilir Ana fikir ve xcshareddata klasör içeriğinin bazı açıklaması vardır.
Mark Edington

@ Mark : Bu göz ardı eder project.xcworkspace/. Şimdilik iyi olabilir, ancak yeni Xcode sürümleri için buna güvenmem.
Berik

6
Bu yanıt yanlış olduğunu ve Github standart .gitignoreonu gerektiğini geliştiricilerine sağladığı değil belirtmek*.xccheckout
Chris Hanson

2
Tanıtıldığından beri bu dosyayı depolarıma ekledikten sonra, son zamanlarda tüm depolarımdan kaldırmaya başladım. Bu şey , çoğunlukla kendi çerçevelerimi alt modül olarak içeren projelerde her zaman birleştirme çatışmaları yaratıyor . Ve sonra alt modül yönetimi için git kullandığım için bu dosyadan hiçbir şey kazanmak. İyi deneme, Apple, teşekkürler, ama hayır, teşekkürler.
Pascal

38

Değişir. Dosya, kullandığınız uzak depoya başvurular içeriyor. Performans veya Subversiyon gibi merkezi bir VCS kullanıyorsanız, herkesin uzak deposu aynı olur ve böylece dosyayı kontrol edebilir ve kontrol etmelisiniz.

Mercurial veya git gibi dağıtılmış bir VCS kullanıyorsanız, ancak bunu bir CVCS gibi kullanıyorsa (başka bir deyişle, paylaşılan bir depodan doğrudan makinelerindeki kişisel çalışma alanlarına klonlanan herkes), yine de kontrol etmek isteyebilirsiniz. içinde.

Bununla birlikte, herkesin kendi uzak klonuna sahip bir DVCS kullanıyorsanız, örneğin standart kullanım düzeninde GitHub kullanmak istiyorsanız, bu dosyayı teslim etmek istemezsiniz. Yaptıysanız, Çekme İstekleriniz depo ayarlarınızı ister herkesin xccheckout dosyasına kopyalanabilir, ancak farklı uzak depoları kullandığınız için depo ayarlarınız herkesinkinden farklı olacaktır.


1
Bu cevap bana en iyisi gibi geliyor. Onları kontrol etmek, takımımızın taahhütleri için farklılıklar üzerinde gereksiz sohbete neden oluyordu. Bunları dışarıda tutmak için .gitignore'a ekliyorum: * / .xcworkspace / xcshareddata / *. Xccheckout Hala Apple'ın bu bilgileri neden zaten .git klasöründe depolamayı seçtiğini anlamıyorum (tek tahminim her şeyi VCS'de tutarlı bir şekilde çalışır hale getirin)
Juan Carlos Méndez

20

Evet, Project.xccheckoutdosya deponuza bağlı olmalıdır. Xcode, bu dosyayı, çalışma alanını açan diğer kullanıcılara, çalışma alanı tarafından kullanılan kaynak denetim havuzlarının tam listesini ve çalışma havuzuna göre çalışma kopyasının konumunu ( bu depoların Git, SVN veya her ikisi birden) belirtmek için kullanır.

Çalışma alanını açtığınızda, Xcode Project.xccheckoutdosyayı, çalışma alanının bir parçasını oluşturan başka depolar olduğunu kullanıcıya bildirmek için kullanır ve hangisinin kullanıma alınması gerektiğini sorar. Ek depoları kontrol ederken, Xcode, çalışma kopyalarını, Project.xccheckoutdosya oluşturulduğu zamanki çalışma alanına bağlı klasör yapısına yerleştirir .

As Chris Hanson söyledi, muhtemelen tek depo, tek proje çalışma alanı için önemli değil, ama daha karmaşık işleri için gerçekten çok kullanışlı olacak.

Bununla ilgili daha fazla bilgiyi WWDC 2013 oturum videosunda bulabilirsiniz Xcode'da Kaynak Denetimini Anlama ; ilgili kısım yaklaşık 15 dakikada başlar.


Bu dosya yalnızca SCM için Xcode kullanıyorsanız yararlıdır, aksi takdirde bu dosyaya hiç ihtiyacınız yoktur. Git çatallarla çalışsanız bile daha az, bu durumda repo yolu geliştirici başına benzersiz olacak
Carlos Ricardo

3

Xcode için .gitignore'umda bu var.

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

Bu, projelerin beni depodan nasıl görüneceği ile ilgili yerel durumla ilgili her şeyi saklar.

Xccheckout dosyası buradadır, bu nedenle varsayılan olarak sistemimde izlenmez.

Xcode daha iyi bir hale geldi ve nelerin paylaşılması gerektiğini ve nelerin yerel olarak saklanması gerektiğini ayırdı. Örneğin; bu satırlar varsayılan derleme şemalarını yok sayar; bu, belirli derleme şemalarını paylaşılan olarak işaretleyebileceğiniz ve yok sayılmayan bir dizine yerleştirildiğiniz için uygundur.

Kesme noktaları yok sayılır, ancak belirli kesme noktalarını projeler arasında paylaşılıyor olarak işaretleyebilirsiniz ve bunlar da yok sayılmayan bir dizine yerleştirilir.

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.