.gitignore dla projektów PhoneGap / Cordova 3.0 - co powinienem zrobić?

105

Właśnie próbowałem utworzyć nowy projekt phonegap 3.0 ... Uwaga: jestem nowy w phonegap. W każdym razie widzę, że folder projektu zawiera:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

Próbowałem phonegap local run androidzobaczyć wiele plików binarnych / wygenerowanych w formacie platforms/android. Zastanawiam się, jakie części tej struktury folderów powinienem dodać do mojego repozytorium git. Normalnie zatwierdzanie plików binarnych byłoby wyjątkowo złą praktyką. Stąd chciałbym dodać wzory jak zwykle bin/, obj/, *.o, *.pycitd., Aby .gitignoreuniknąć zanieczyszczających mojego repozytorium git tylko z rzeczy, które służy do tworzenia konfliktów seryjnej.

Na pewno wwwpowinien zostać dodany do gita, ale co z pozostałymi częściami projektu. W jakim stopniu są to produkty kodu źródłowego, aw jakim konfiguracji projektu?

Co robisz? Zgoda, jestem nowy, więc ledwo rozumiem, co ma tutaj sens ...

jonasfj
źródło
1
Nie wiem o PhoneGap / Cordova, ale w razie wątpliwości po prostu popełnij wszystko. Zawsze możesz to usunąć później, gdy dowiesz się, że coś było zbędne :)
Leif

Odpowiedzi:

43

Odpowiedź zależy od platformy, na której tworzysz aplikację phongap i od tego, czy postępujesz zgodnie ze standardową strukturą katalogów.

Jeśli struktura katalogów twojego projektu jest standardowa, możesz zacząć od tego gitignore i zmodyfikować ją do swoich potrzeb.

Zasadniczo należy wykluczyć wszystkie wygenerowane pliki, takie jak katalogi bin/i gen/. Jeśli tworzysz wersję swojej aplikacji na Androida, powinieneś również wykluczyć pliki kompilacji *.apk.

Wszystkie wygenerowane pliki w androidpodkatalogu również powinny zostać wykluczone:

Android/bin/
Android/gen/
Android/assets/
Atropo
źródło
1
Nie ma znaczenia, jakie platformy tworzysz. Nie ma nic złego w ignorowaniu rzeczy, które dotyczą tylko platform, na których jeszcze nie tworzysz. Zasugerował, że używa standardowej struktury katalogów.
rjmunro,
Bezwstydna wtyczka do mojej Cordova gitignore: gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
Elliot Labs LLC
49

Rozwinięcie odpowiedzi @Jake Moshenko:

Podoba mi się pomysł pominięcia platformskatalogu. W rzeczywistości jestem w stanie wykluczyć zarówno katalogi, jak pluginsi platforms. Dobry punkt wyjścia do .gitignore:

platforms/
plugins/

Problem polega na tym, że czysta kopia repozytorium musi zostać zainicjowana, zanim będzie można z nią pracować. Sensowne może być utworzenie skryptu inicjującego, takiego jak:

#!/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

Zastrzeżeniem dla tego podejścia jest to, że nieco trudniej jest dostosować kod / konfigurację aplikacji specyficzną dla platformy poza tym, co jest obsługiwane przez phonegap / cordova (tj. Obsługa orientacji ekranu).

Aktualizacja: Bash Gist

Ta treść zawiera bardziej kompletny skrypt do obsługi projektu, który nie zatwierdza katalogów pluginsi platforms. Zapewnia mechanizm kopiowania ikon i obrazów ekranu startowego z www do katalogów platformy (dla iOS i Android), instalowania wtyczek i obsługi plików specyficznych dla platformy, które powinny być dodane do kontroli wersji.

Aktualizacja: Grunt Gist

Oto kolejna istota, która jest portem Grunt wspomnianego powyżej skryptu bash. (Dzięki @obie za zasugerowanie chrząknięcia).

Jonathan Dixon
źródło
2
Jak radziłbym sobie z dodawaniem niestandardowych wtyczek / kodu natywnego lub wprowadzaniem zmian w pliku AndroidManifest.xml, aby dostosować programowanie wtyczek przy użyciu tego podejścia? Czy jest jeszcze miejsce, w którym można dodać zmiany w pliku AndroidManifest.xml?
obie
Zobacz powiązane streszczenie, szczególnie tutaj . Nadpisuje / dodaje dowolne pliki z platform-mergeskatalogu. Na przykład możesz zatwierdzić platform-merges/android/AndroidManifest.xml. Takie podejście sprawdza się dobrze w przypadku prostych projektów, ale może skomplikować sprawę w przypadku większych projektów.
Jonathan Dixon
dzięki za pomoc :) Skończyło się na tym, że użyłem pomruka do zrobienia tego samego (z github.com/gruntjs/grunt-contrib-copy )
obie
3
Możesz uniknąć kroku tworzenia folderu wtyczek i platform, dodając plik .gitkeep do każdego z nich i umieszczając go w swoim .gitignore: platform / *! Platform / .gitkeep plugins / *! Plugins / .gitkeep
aharris88
1
@ aharris88 Słuszna uwaga, ale uważam, że uniknąłem tego, aby ułatwić czyszczenie projektu. tj rm -rf platforms plugins.
Jonathan Dixon
7

Więc zrozumiałem to metodą prób i błędów. platformsKatalogu można pominąć, jeśli używasz PhoneGap budowanie lokalnego lub zdalnego, jak to jest generowane w locie. Wszystkie inne foldery, w tym folder ukryty, .cordovasą wymagane.

Jake Moshenko
źródło
4
Cześć, a co, jeśli użyję pliku jar innej firmy lub pliku źródłowego Object-c do dostosowania kompilacji systemu Android lub iOS, na przykład integracji Parse Notification. Zdecydowanie trzeba napisać kod java, a następnie jak zarządzać repozytorium git? Czy aplikacja Phonegap dla lokalnego systemu Android zastąpi moje dostosowane pliki?
EthanZ
Do Twojej wiadomości, wygląda na to, że PhoneGap Build zbuduje się bez .cordovafolderu - dlaczego mówisz, że jest to wymagane @Jake Moshenko?
Matty J
7
Ta sugestia jest całkowicie błędna. Nie powinieneś pomijać katalogu platform, ponieważ w końcu będziesz musiał dodać kod i wtyczki specyficzne dla platformy, jeśli robisz coś nietrywialnego. Często będziesz musiał manipulować manifestem Androida i listami ios.
Daniel Williams,
3
Powiedziałbym, że pomijanie platform to dobry początek. Jeśli istnieją zależności, należy je przechowywać w innym miejscu i kopiować jako krok kompilacji po dodaniu platformy.
tishma
Wolę tę odpowiedź.
Wyłączam
4

Chciałem tylko zostawić tutaj moje doświadczenia z tym problemem i podejście, które ostatecznie przyjęliśmy.

W naszym projekcie phonegap zaczęliśmy zatwierdzać wszystkie pliki bez folderu / platformy przy użyciu pliku .gitignore. Pomyśleliśmy w ten sposób, gdy programista sklonował repozytorium, jedyną czynnością, jaka pozostała do wykonania, jest wykonanie:

phonegap / cordova dodaj platformę

Ale tak nie było. Po dodaniu platformy i próbie kompilacji pojawił się błąd i aplikacja nie została zainstalowana na urządzeniu.

Przeglądając dzienniki, otrzymaliśmy kilka trafień, że ten błąd był spowodowany wtyczkami. Postanowiliśmy więc ponownie zainstalować wszystkie wtyczki, których używaliśmy w projekcie, i voilá aplikacja działała poprawnie.

Więc radzę zapisać w repozytorium całą zawartość, bez platformy folderów i wtyczek. Utwórz i wgraj do repozytorium plik README z listą wtyczek użytych w projekcie.

W ten sposób, gdy programista sklonuje repozytorium, będzie musiał:

1.- Dodaj platformy: phonegap / cordova dodaj platformę „platforma”

2. - Dodaj wtyczki: phonegap / cordova plugin dodaj „plugin”

Mam nadzieję że to pomoże!

Pozdrowienia.

nespapu
źródło
1

Wiele z tych rzeczy jest starych i tak naprawdę nie ma zastosowania do najnowszej wersji Apache Cordova. Używam Apache Cordova 5.1.1, a to .gitignore pozwala mi nadal dostosowywać za pomocą niestandardowych ikon itp., Jednocześnie blokując wszystkie rzeczy, których nie potrzebujemy do wersji dla Androida i IOS. Tak .gradle jest używany, więc nie usuwaj go!

www/
.gradle/
build/
.tmp/
.temp/
coverage/
*.log
node_modules/
bower_components/
Helzgate
źródło
Dlaczego miałbyś umieścić tam www/folder? W mojej aplikacji była to większość przydatnych rzeczy z życia aplikacji internetowych.
vindia
2
@vindia Myślę, że moja lista może być szablonem, aby ktoś zaczął. Myślałem, że wszyscy hipsterzy używali folderu www / jako ulotnego wyniku w swoim automatycznym procesie budowania. Mój błąd!
Helzgate
Wykluczam, www/ponieważ zawartość generowana przez niestandardowe skrypty budowania. Naprawdę nie chcesz tam plików źródłowych.
kim3er
0

Chociaż jest to nieco osobiste preferencje, zdecydowałem się na to (dla projektu tylko dla Androida). Usunięcie większości, ale zachowanie tego, co niestandardowe

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
Funkodebat
źródło