.gitignore per progetti PhoneGap / Cordova 3.0 – cosa devo impegnare?

Ho appena provato a creare un nuovo progetto di phonegap 3.0 … Nota: sono nuovo su PhoneGap. Ad ogni modo, vedo che la cartella del progetto contiene:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

E dopo aver provato phonegap local run android vedo molti file binari / generati su platforms/android . Questo mi fa pensare, quali parti di questa struttura di cartelle dovrei aggiungere al mio repository git. Normalmente, considererei estremamente scarsa pratica il commit di file binari. Quindi, normalmente aggiungere pattern come bin/ , obj/ , *.o , *.pyc ecc. A .gitignore per evitare di inquinare il mio repository git con cose che servono solo a creare conflitti di fusione.

Sicuramente, www dovrebbe essere aggiunto a git, ma per quanto riguarda le altre parti del progetto. Fino a che punto sono prodotti del codice sorgente e fino a che punto sono la configurazione del progetto?

cosa fai? Certo che sono nuovo, quindi capisco a malapena cosa abbia senso qui …

La risposta dipende da quali piattaforms stai sviluppando l’app phongap e se stai seguendo la struttura delle directory standard.

Se la struttura della directory del progetto è standard, è ansible iniziare da questo gitignore e modificarlo per le proprie esigenze.

In linea di massima è necessario escludere tutti i file generati come le cartelle bin/ e gen/ . Se stai sviluppando una versione Android della tua app dovresti escludere i file build come *.apk .

Anche tutti i file generati nella sottodirectory android devono essere esclusi:

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

Espansione sulla risposta di @Jake Moshenko:

Mi piace l’idea di omettere la directory delle platforms . In effetti, sono in grado di escludere sia le directory di plugins che di platforms . Un buon punto di partenza per il .gitignore :

 platforms/ plugins/ 

Il problema con questo è che la copia pulita del repository deve essere inizializzata prima di poter effettivamente lavorare con esso. Potrebbe essere sensato creare uno script di init come:

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

Un avvertimento a questo approccio è che rende un po ‘più difficile personalizzare il codice app / configurazione della piattaforma specifica al di fuori di ciò che è supportato da phonegap / cordova (cioè supporto per l’orientamento dello schermo).

Aggiornamento: Bash Gist

Questo elenco contiene uno script più completo per la gestione di un progetto che non esegue il commit delle directory dei plugins e delle platforms . Fornisce un meccanismo per copiare le icone e le immagini dello splashscreen da www alle directory della piattaforma (per iOS e Android), installando plugin e gestendo i file specifici della piattaforma che dovrebbero essere aggiunti al controllo della versione.

Aggiornamento: Grunt Gist

Ecco un altro aspetto che è una porta Grunt del suddetto script bash. (Grazie a @obie per aver suggerito il grugnito).

Quindi l’ho capito solo attraverso prove ed errori. La directory delle platforms può essere omessa se si utilizza la build locale o remota di phonegap, poiché viene generata al volo. Sono richieste tutte le altre cartelle, inclusa la cartella nascosta .cordova .

Volevo solo lasciare qui la mia esperienza con questo problema e l’approccio che abbiamo finalmente seguito.

Nel nostro progetto phonegap abbiamo iniziato a trasferire tutti i file meno la cartella / piattaforma usando il file .gitignore. Abbiamo pensato in questo modo, quando lo sviluppatore ha clonato il repository l’unica azione rimanente da fare sarebbe quella di eseguire:

phonegap / cordova aggiungere piattaforma

Ma non lo era. Una volta che la piattaforma è stata aggiunta e abbiamo provato a compilare, è apparso un errore e l’app non è stata installata nel dispositivo.

Guardando i log, abbiamo avuto alcuni riscontri che questo errore era dovuto ai plugin. Così abbiamo deciso di reinstallare tutti i plugin che stavamo usando nel progetto e voilá l’app funzionava correttamente.

Quindi il mio consiglio è di salvare nel repository tutto il contenuto meno la piattaforma di cartelle e i plugin. Creare e caricare nel repository un file README con un elenco di plugin utilizzati nel progetto.

In questo modo, quando uno sviluppatore clona il repository, lui / lei dovrà:

1.- Aggiungi le piattaforms: phonegap / cordova aggiungi piattaforma “piattaforma”

2.- Aggiungi i plugin: plugin phonegap / cordova aggiungi “plugin”

Spero che questo ti aiuti!

Saluti.

Molte di queste cose sono vecchie e in realtà non si applicano all’ultima versione di Apache Cordova. Sto usando Apache Cordova 5.1.1 e questo .gitignore mi permette di personalizzare ancora con icone personalizzate ecc mentre blocco tutte le cose che non abbiamo bisogno di versione per Android e IOS. Sì. Si usa l’upgrade quindi non rimuoverlo!

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

Mentre è piuttosto una preferenza personale, sono andato con questo (per un progetto solo Android). Rimozione di più, ma mantenendo ciò che è personalizzato

 ToonPlane/platforms/android/* !ToonPlane/platforms/android/AndroidManifest.xml ToonPlane/plugins/* !ToonPlane/plugins/android.json !ToonPlane/plugins/fetch.json