Contratti di licenza (Collaboratore)
Prima che possiamo accettare le tue patch del codice, devi inviare un singolo utente o un Contratto di licenza per i collaboratori (CLA):
- Se sei una persona che scrive codice sorgente originale e sei sicuro di possedere la proprietà intellettuale, invia un CLA individuale.
- Se lavori per un'azienda, la tua azienda deve inviare un CLA aziendale per indicare che hai il permesso di contribuire al tuo lavoro con questa libreria client.
Fai clic su uno dei due link qui sopra per accedere al CLA appropriato e alle istruzioni su come firmarlo e restituirlo. Una volta ricevuti, possiamo aggiungerti all'elenco ufficiale dei collaboratori.
Panoramica sull'invio delle patch
Per contribuire con il codice a questo progetto, segui questi passaggi generali:
- Firma un Contratto di licenza Contributor come descritto sopra.
- Partecipa al nostro gruppo di discussione.
- Configurare l'ambiente di sviluppo.
- Associa ciascuno dei tuoi set di modifiche a un problema (una segnalazione di bug o una richiesta di funzionalità) nel nostro Issue Tracker di GitHub. Crea un nuovo problema se non ne esiste già uno e assegnalo a te stesso.
- Controlla il codice, crea un nuovo problema su codereview.appspot.com e completa la procedura di revisione del codice. Di seguito, vengono riportate istruzioni dettagliate per tutti questi processi.
- Dopo aver esaminato il codice e aver ricevuto l'approvazione, esegui il commit del codice. Se non sei un collaboratore ufficiale, un collaboratore importa il set di modifiche nel repository ufficiale.
Utilizziamo i seguenti strumenti e processi:
- Usiamo Git come nostro sistema di controllo della versione.
- Utilizziamo Maven per il sistema di compilazione e un sistema di distribuzione binario.
- Per le revisioni del codice, utilizziamo codereview.appspot.com. Tieni presente che nello strumento codereview.appspot.com il termine "issue"" indica una richiesta di revisione del codice, mentre in GitHub Issue Tracker viene indicato un "problema" una richiesta di funzionalità o una segnalazione di bug.
Se sei uno sviluppatore Eclipse, utilizza la formattazione del codice specifica del progetto specificata nella directory .settings che viene elaborata automaticamente da Eclipse.
Configurazione dell'ambiente di sviluppo
Prerequisiti
- Installa Java 6. Potresti dover impostare la variabile
JAVA_HOME
. - Installa Maven. Questo documento presuppone che tu abbia una conoscenza di base dei comandi Maven.
- Facoltativo: installa l'SDK Android e imposta la variabile ANDROID_HOME sul percorso di installazione per Android.
- Installa Git.
Configurazione di Git in corso...
Utilizza il comando git config
per impostare nome e indirizzo email predefiniti:
git config --global user.name "YOUR NAME" git config --global user.email "YOUR EMAIL ADDRESS"
Autenticazione con GitHub da Git
Per poter controllare il codice di GitHub, devi eseguire l'autenticazione con GitHub utilizzando HTTP o SSH. Prima di continuare con le istruzioni riportate di seguito, leggi le istruzioni di GitHub su come iniziare a utilizzare la clonazione HTTPS o SSH. Per saperne di più su Git in generale, la versione Pro Git è una buona risorsa.
Verifica del codice
Utilizzare HTTPS
Per verificare il repository della libreria nel ramo "master", esegui il seguente comando:
git clone https://github.com/google/google-api-java-client.git
Utilizzo di SSH
Per verificare il repository della libreria nel ramo "master", assicurati di avere accesso in scrittura al repository GitHub, quindi esegui il comando seguente:
git clone git@github.com:google/google-api-java-client.git
Per passare a un ramo alternativo, ad esempio 1.12:
git checkout --track origin/1.12
Per tornare al ramo master:
git checkout master
Per estrarre le ultime modifiche dal repository GitHub e aggiornare la tua struttura di lavoro locale all'ultimo commit:
git pull
Maven
Installa Google Play Services
La prima volta che configuri il progetto, devi installare il file google-play-services.jar. Per farlo:
- Avvia Eclipse e seleziona Window > Android SDK Manager o esegui
android
nella riga di comando. - Scorri fino in fondo all'elenco dei pacchetti e seleziona Extras > Google Play Services.
mvn install:install-file \ -Dfile=$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar \ -DgroupId=com.google.android.google-play-services \ -DartifactId=google-play-services \ -Dversion=1 \ -Dpackaging=jar
Compila il progetto
mvn clean install
Maven installa i programmi binari compilati in un repository locale (ad esempio ~/.m2/repository). Cerca i programmi binari nel repository prima di recuperarli dal repository centrale Maven.
Nota: questa libreria dipende da google-http-java-client e google-oauth-java-client. Quando lavori a una nuova versione di tutte e tre le librerie non ancora rilasciate in Maven Central, devi compilarle nel seguente ordine:
- google-http-client-java
- client-google-oauth-java
- google-api-java-client La compilazione in questo ordine garantisce che Maven recuperi i programmi binari compilati per la compilazione della libreria dipendente.
Procedura di revisione del codice
Download dello script upload.py
Scarica lo script upload.py e, se vuoi, aggiungilo al tuo percorso.
La prima volta che esegui upload.py
, ti viene chiesta una password specifica per l'applicazione:
Email (login for uploading to codereview.appspot.com): your_email_address@yourdomain.com Password for your_email_address@yourdomain.com:
Preparare il codice per la revisione
Prima di inviare il codice per la revisione, devi eseguire Clirr per rilevare eventuali problemi di compatibilità con le versioni precedenti nel tuo codice. Se vengono segnalati errori, devi correggerli o aggiornare il file clirr-ignored-differences.xml.
mvn -q clirr:check
Devi anche eseguire lo strumento FindBugs per individuare i bug nel codice. Se vengono segnalati errori, devi correggerli o aggiornare il file findbugs-excluded.xml. Tieni presente che FindBugs è molto lento.
mvn findbugs:check
Dopo aver superato tutti i test, aggiungi la modifica all'indice (l'area temporanea di Git):
git add .
Verifica che tutti i file che hai aggiunto, modificato o eliminato si riflettano nell'indice:
git status
Nell'output di git status
, controlla la sezione denominata "Modifiche da impegnare".
Avvio della revisione del codice
Quando tutto è pronto per la revisione, crea un nuovo problema su codereview.appspot.com:
upload.py --rev=HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
Dopo aver apportato ulteriori modifiche, metti in scena le nuove modifiche. Per caricare una nuova patch, ad esempio per emettere il numero 123456, esegui il comando seguente:
upload.py --rev=HEAD -i 123456
Per ulteriori opzioni, esegui upload.py --help
.
Se preferisci il tipico flusso di lavoro GitHub, probabilmente hai forzato il repository GitHub e creato un ramo per questa nuova funzionalità o correzione di bug. Quando invii richieste di revisione del codice dal tuo fork, assicurati che il fork sia sincronizzato con il repository a monte. Per ulteriori informazioni, consulta la guida di GitHub su come sincronizzare un fork.
Puoi utilizzare upload.py anche per i set di modifiche impegnati localmente.
upload.py --rev=upstream/master:HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
Revisore codice
Se sei un revisore del codice, importa e verifica i set di modifiche prima di approvarli, quindi esegui il commit e il push dei set di modifiche nel repository remoto.
Importazione di un set di modifiche
Per rilevare gli errori in anticipo, assicurati di eseguire il pull delle ultime modifiche dal repository remoto nell'albero degli elementi di lavoro. Assicurati che l'albero di lavoro sia pulito e che l'indice sia vuoto.
Per estrarre e unire gli ultimi commit dal repository remoto:
git pull
Per controllare gli elementi dell'albero e dell'indice di lavoro:
git status
Per importare una patch nel clone Git locale:
- Apri il problema all'interno di codereview.appspot.com.
- Per la patch in questione, cerca "Scarica non elaborata" in alto a destra nella specifica della patch.
- Fai clic su "raw" per ottenere un URL per il file da importare.
- Salva il file diff non elaborato sulla tua macchina locale con un nome come issue123456.diff.
- Vai all'albero di lavoro Git locale e applica la differenza utilizzando il comando
patch
:
patch -p1 < issue123456.diff
Per verificare di avere importato la differenza corretta, esegui un git diff
nel tuo albero di lavoro.
Test del set di modifiche in corso...
Per eseguire i test e installarli, utilizza il comando seguente:
mvn clean install checkstyle:check
Approvazione di un set di modifiche su codereview.appspot.com
In generale, il codice non può essere trasferito al repository GitHub fino a quando il revisore del codice non verifica che il codice sia pronto. A quel punto, la convenzione è rispondere con il messaggio "LGTM".
Esegui il commit del codice
Importante: prima di eseguire il commit del codice, esegui il pull delle ultime modifiche nell'albero di lavoro e aggiorna l'albero di lavoro all'ultimo commit dal repository GitHub:
git pull
Eventuali conflitti possono essere risolti, quindi assicurati di superare tutti i test.
Per eseguire il commit del codice a livello locale:
git commit
Inserisci un messaggio simile al seguente (supponendo che tu stia correggendo o implementando il problema n. 123, come elencato in Issue Tracker di GitHub):
#123: NullPointerException when passing null to processFoo() http://codereview.appspot.com/123456/
Prima dei due punti e della descrizione:
- Se si tratta di una risoluzione di un problema su Issue Tracker, includi il numero di problema, come mostrato.
- Se si tratta di una modifica per un determinato ramo, includi il numero del ramo.
- Sarai il
committer
di questo commit, ma dai il tuo credito all'autore della modifica contrassegnandolo comeauthor
(--author=<author>
).
Dopo la descrizione, includi sempre un link al problema sul sito di codereview. Questo link è importante perché senza di esso non c'è un modo pratico per comprendere la revisione del codice associata a un commit, utile per mantenere una cronologia della discussione.
Per eseguire il push della modifica al repository GitHub:
git push
Se in git push
ricevi un messaggio di errore relativo agli aggiornamenti rifiutati (forse hai dimenticato di eseguire git pull
), ecco come eseguire l'unione con le ultime modifiche ed eseguire il push delle modifiche al repository remoto:
git pull git commit git push
Chiudere il problema
Assicurati di chiudere il problema nello strumento di revisione del codice. Per farlo:
- Seleziona il problema in codereview.appspot.com.
- Fai clic sulla "X", ossia in alto a sinistra, precedendo "Id".
Annullamento dell'applicazione di un set di modifiche
Se per qualche motivo decidi di non eseguire il commit di un set di modifiche che hai importato, utilizza il comando seguente per eliminarlo. Fai attenzione: cancella letteralmente tutte le modifiche locali.
git checkout -- .