PhoneGap / Cordova 3.0 projeleri için .gitignore - neyi taahhüt etmeliyim?


105

Yeni bir phonegap 3.0 projesi oluşturmaya çalıştım ... Not: Phonegap'te yeniyim. Her neyse, proje klasörünün şunları içerdiğini görüyorum:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

Ve denedim phonegap local run android, içinde çok sayıda ikili / oluşturulmuş dosya görüyorum platforms/android. Bu, git depoma bu klasör yapısının hangi bölümlerini eklemem gerektiğini merak etmeme neden oluyor. Normalde, ikili dosyaları işlemenin son derece zayıf bir uygulama olduğunu düşünürdüm. Dolayısıyla, ben normalde gibi desenleri eklersiniz bin/, obj/, *.o, *.pycvb .gitignoresadece birleştirme çatışmaları yaratmaya yarar şeylerle benim git depo kirliliğine yol açmaması için.

Elbette git'e wwweklenmeli, peki ya projenin diğer kısımları. Bunlar ne ölçüde kaynak kodun ürünleri ve ne dereceye kadar yapılandırmayı yansıtıyorlar?

Ne yaparsın? Kabul edildim, bu yüzden burada neyin mantıklı olduğunu zar zor anlıyorum ...


1
PhoneGap / Cordova hakkında bilgim yok, ancak şüphe duyduğunuzda her şeyi yapın. Daha sonra bir şeyin gereksiz olduğunu öğrendiğinizde her zaman kaldırabilirsiniz :)
Leif

Yanıtlar:


43

Cevap, phongap uygulamasını hangi platformlarda geliştirdiğinize ve standart dizin yapısını takip edip etmediğinize bağlıdır.

Proje dizin yapınız standartsa, bu gitignore'dan başlayabilir ve ihtiyaçlarınıza göre değiştirebilirsiniz.

Genel bir kural olarak, bin/ve gen/dizinleri gibi oluşturulan tüm dosyaları hariç tutmanız gerekir . Uygulamanızın bir Android sürümünü geliştiriyorsanız, derleme dosyalarını da hariç tutmalısınız *.apk.

androidAlt dizinde oluşturulan tüm dosyalar da hariç tutulmalıdır:

Android/bin/
Android/gen/
Android/assets/

1
Hangi platformları geliştirdiğiniz önemli değil. Henüz geliştirmediğiniz platformlar için geçerli olan şeyleri görmezden gelmenin bir sakıncası yoktur. Standart dizin yapısını kullandığını ima etti.
rjmunro


49

@ Jake Moshenko cevabını genişletmek:

platformsDizini ihmal etme fikrini seviyorum . Aslında, ben hem dışlamak mümkün duyuyorum pluginsve platformsdizinleri. Aşağıdakiler için iyi bir başlangıç ​​noktası .gitignore:

platforms/
plugins/

Bununla ilgili sorun, gerçekten çalışmadan önce deponun temiz kopyasının başlatılması gerektiğidir. Aşağıdakiler gibi bir başlangıç ​​betiği oluşturmak mantıklı olabilir:

#!/bin/bash
textReset=$(tput sgr0)
textGreen=$(tput setaf 2)
message_info () {
  echo "${textGreen}[my-app]${textReset} $1"
}

message_info "Creating necessary directories..."
mkdir plugins
mkdir platforms

message_info "Adding platforms..."
# If using cordova, change to: cordova platform add android
phonegap build android
phonegap build ios

message_info "Adding plugins..."
# If using cordova, change to: cordova plugin add
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

Bu yaklaşıma bir uyarı, platforma özel uygulama kodunu / yapılandırmasını phonegap / cordova tarafından desteklenenlerin (yani ekran yönlendirme desteği) dışında özelleştirmeyi biraz daha zor hale getirmesidir.

Güncelleme: Bash Gist

Bu öz , pluginsve platformsdizinlerini işlemeyen bir projeyi işlemek için daha eksiksiz bir betik içerir . Simgeleri ve açılış ekranı görüntülerini www'den platform dizinlerine (iOS ve Android için) kopyalamak, eklentileri yüklemek ve sürüm kontrolüne eklenmesi gereken platforma özgü dosyaları yönetmek için bir mekanizma sağlar.

Güncelleme: Grunt Gist

İşte başka bir şeydir özü yukarıda belirtilen bash script bir Grunt liman. (@Obie'ye homurtu önerdiği için teşekkürler).


2
Bu yaklaşımı kullanarak eklenti geliştirmeye uyum sağlamak için ısmarlama eklentiler / yerel kod eklemek veya AndroidManifest.xml değişiklikleri yapmakla nasıl başa çıkabilirim? AndroidManifest.xml değişikliklerinin eklenebileceği başka bir yer var mı?
obie

Bağlantılı özüne bakın, özellikle burada . platform-mergesDizindeki tüm dosyaların üzerine yazar / ekler . Örneğin, taahhüt edebilirsiniz platform-merges/android/AndroidManifest.xml. Bu yaklaşım basit projeler için işe yarar, ancak daha büyük projelerdeki işleri karmaşıklaştırabilir.
Jonathan Dixon

Yardımınız için teşekkürler :) Aynı şeyi yapmak için grunt kullanmaya son verdim ( github.com/gruntjs/grunt-contrib-copy ile )
obie

3
Her birine bir .gitkeep dosyası ekleyerek ve bunu .gitignore: platformlar / *! Platformlar / .gitkeep eklentileri / *! Plugins / .gitkeep
aharris88

1
@ aharris88 İyi nokta, ancak projeyi temizlemeyi kolaylaştırmak için bundan kaçındığıma inanıyorum. yani rm -rf platforms plugins.
Jonathan Dixon

7

Ben de bunu deneme yanılma yoluyla çözdüm. platformsEğer PhoneGap yerel veya uzak bir yapı kullanıyorsanız o anında oluşturulan olarak dizin, göz ardı edilebilir. Gizli klasör dahil diğer tüm klasörler .cordovagereklidir.


4
Merhaba, Android veya ios yapısını, örneğin Ayrıştırma Bildirimi entegrasyonunu özelleştirmek için bazı üçüncü taraf jar dosyası veya objektif-c kaynak dosyası kullanırsam ne olur? Kesinlikle biraz java kodu yazması gerekiyor, o zaman git deposunu nasıl yönetmeli? phonegap yerel derleme android özelleştirilmiş dosyalarımın üzerine yazacak mı?
EthanZ

Bilginize, PhoneGap Build .cordovaklasör olmadan oluşturulacak gibi görünüyor - neden gerekli olduğunu söylüyorsunuz @ Jake Moshenko?
Matty J

7
Bu öneri tamamen yanlıştır. Platformlar dizinini atlamamalısınız çünkü önemsiz bir şey yapıyorsanız sonunda platforma özel kod ve eklentiler eklemeniz gerekecek. Ayrıca android manifestini ve ios plistlerini de sık sık değiştirmeniz gerekecektir.
Daniel Williams

3
Platformları atlamanın iyi bir başlangıç ​​olduğunu söyleyebilirim. Bağımlılıklar varsa, bunlar başka bir yerde tutulmalı ve bir platform ekledikten sonra bir inşa adımı olarak kopyalanmalıdır.
tishma

Bu cevabı tercih ederim. Yalnızca platformlar dizinini hariç
tutuyorum

4

Bu konudaki deneyimimi ve nihayet izlediğimiz yaklaşımı burada bırakmak istedim.

Phonegap projemizde .gitignore dosyası kullanarak klasör / platform hariç tüm dosyaları işlemeye başladık. Bu şekilde düşündük, geliştirici depoyu klonladığında geriye kalan tek eylem çalıştırmak olacaktır:

phonegap / cordova ekleme platformu

Ama değildi. Platform eklendiğinde ve derlemeye çalıştığımızda, bir hata ortaya çıktı ve uygulama cihaza yüklenmedi.

Günlüklere baktığımızda, bu hatanın eklentilerden kaynaklandığına dair bazı isabetler aldık. Bu nedenle, projede kullandığımız tüm eklentileri yeniden yüklemeye karar verdik ve uygulama doğru şekilde çalışıyor.

Bu yüzden benim tavsiyem, klasörler platformu ve eklentiler hariç tüm içeriği depoya kaydetmektir. Projede kullanılan eklentilerin bir listesini içeren bir README dosyası oluşturun ve depoya yükleyin.

Bu şekilde, bir geliştirici depoyu klonladığında, şunları yapması gerekecektir:

1.- Platformları ekleyin: phonegap / cordova "platform" platformunu ekleyin

2.- Eklentileri ekleyin: phonegap / cordova eklentisi "eklenti" ekleyin

Bu yardımcı olur umarım!

Saygılarımızla.


1

Bunların çoğu eski ve Apache Cordova'nın en son sürümü için gerçekten geçerli değil. Apache Cordova 5.1.1 kullanıyorum ve bu .gitignore, hem Android hem de IOS için sürümüne ihtiyaç duymadığımız her şeyi engellerken özel simgelerle vb. Özelleştirmeme izin veriyor. Evet .gradle kullanıldığından kaldırmayın!

www/
.gradle/
build/
.tmp/
.temp/
coverage/
*.log
node_modules/
bower_components/

www/Klasörü neden oraya dahil edersiniz ? Benim uygulamamda, aslında bu, web uygulamalarının yaşamlarındaki yararlı şeylerin çoğu.
vindia

2
@vindia Sanırım listem, birinin başlaması için bir şablon olabilir. Tüm yenilikçilerin www / klasörünü otomatik derleme süreçleri için geçici bir çıktı olarak kullandıklarını sanıyordum. Benim hatam!
Helzgate

www/Özel derleme betikleri tarafından oluşturulan içerikler nedeniyle hariç tutuyorum. Orada gerçekten kaynak dosyaları istemezsiniz.
kim3er

0

Biraz kişisel bir tercih olsa da, bununla gittim (yalnızca android projesi için). Çoğunu kaldırmak, ancak özel olanı korumak

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
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.