Workflow per sviluppatori

Questa guida prevede una conoscenza di base della piattaforma Github ed alcuni rudimenti di Git.

Inizializzazione

Crea un fork del codice Freedomotic

  1. Crea un account su https://github.com/
  2. Crea un fork del repository Freedomotic su https://github.com/freedomotic/freedomotic/fork

Crea il clone locale del fork online

Sul tuo pc locale crea un clone del fork appena creato:

git clone https://github.com/YOUR-GITHUB-USERNAME/freedomotic.git

Spostati nella cartella locale appena creata da git

cd freedomotic

Compila il codice con maven che provvederà ad installare tutte le dipendenze richieste

mvn clean install

Copia la cartella data-example in freedomotic-core/data. In caso contrario non riuscirai ad avviare Freedomotic.

cp -r data-example/ framework/freedomotic-core/data

Avvia Freedomotic da riga di comando

java -jar framework/freedomotic-core/target/freedomotic-core/freedomotic.jar

 

Sviluppo

Si utilizza un workflow di sviluppo standard basato su Git, con alcune considerazioni:

  1. Utilizza sempre un ramo (branch) apposito per sviluppare ogni feature
  2. Non effettuare mai alcun commit / rebase / merge da un ramo di sviluppo sul branch master
  3. Il ramo master deve rispecchiare fedelmente l’omonino di Freedomotic e si dovrebbe procedere spesso ad effettuare i pull e relativi rebase VERSO il branch di sviluppo e MAI dal branch di sviluppo al master.
  4. Senza gli accorgimenti appena riportati si rischia che vengano rigettate le eventuali pull-request.
  5. Si raccomanda di usare nomi esplicativi per i branch, poichè questi saranno pubblicamente visibili.

Dare il proprio contributo per la prima volta

Hai appena sviluppato una nuova feature sul branch “my_feature” e desideri integrarla nel repository principale di Freedomotic? Ecco come fare:

  • Assicurati di essere allineato con gli ultimi cambiamenti sul branch master
git checkout master
git pull
  • Passa al branch di sviluppo
git checkout my_feature
  • Fai un eventuale rebase
git rebase master
  • Per riorganizzare i commit prima di renderli pubblici (in modo che risultino chiari e comprensibili) esegui
git rebase -i
  • Carica il branch di sviluppo sul repository online
git push origin my_feature
  • Crea una  pull-request (dettagliando al massimo il suo contenuto) semplicemente cliccando sul pulsante Create pull request su Github.

Contributi successivi

A questo punto ci auguriamo di aver stimolato la tua voglia di proseguire nello sviluppo, magari inventando qualcosa di nuovo ed interessante o risolvendo una delle issue presenti sul nostro sistema di tracking. In questa ottica é necessario poter lavorare su una copia aggiornata del codice e per fare ciò ci sono due possibilità:

  • creare ogni volta un nuovo fork del repository Freedomotic
  • connettere il tuo repo locale (che è già collegato col tuo fork online) anche (ma in sola lettura) al repository di Freedomotic.

La prima soluzione sembrerebbe più semplice in quanto si tratta di replicare le operazioni fatte finora, ma col tempo diventa complesso gestire un gran numero di fork.

La seconda possibilità invece richiede un po’ più di esperienza ma permette una gestione centralizzata di tutte le feature. Vediamo come procedere in tal senso:

  • Connetti il repo principale di Freedomotic alla tua copia locale
git remote add freedomotic https://github.com/freedomotic/freedomotic
  • Sincronizza il repo locale con quello principale
git fetch freedomotic
  • Crea un branch per la nuova feature basato sul ramo master di Freedomotic (quindi sul codice sempre aggiornato)
git branch newest_feature freedomotic/master
git checkout newest_feature
  • Esegui il tuo lavoro di sviluppo come al solito e prima di caricare i riferimenti o effettuare pull-request assicurati di essere ancora sincronizzato col repo principale (integrando eventuali modifiche effettuate sul codice originale)
git fetch freedomotic
  • Integra i tuoi cambiamenti nel ramo di sviluppo principale
git rebase freedomotic/master
  • Controlla che dopo il rebase tutto funzioni come previsto. Ora sei pronto per condividere il tuo lavoro. Eventualmente (ma con molta attenzione) riorganizza i commit con:
git rebase -i

Cerca di essere chiaro e conciso, spiegando il lavoro che hai svolto.

  • Carica i cambiamenti sul tuo repository sandbox sotto apposito branch
git push origin newest_feature
  • Crea la pull-request cliccando sul pulsante Create pull request su Github.
  • Appena il tuo codice sarà integrato, rimuovi il relativo branch di sviluppo sia localmente che sul repo sandbox ed effettua una nuova sincronizzazione
git branch -D newest_feature
git push origin --delete newest_feature
git fetch freedomotic

Riferimenti

https://github.com/freedomotic/freedomotic/wiki/Contributors-workflow
http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project#Pub…

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi