Come contribuire
Questa guida fornisce un'esercitazione passo-passo su come contribuire al codice sorgente e alle traduzioni di Gambas.
Riguarda l'organizzazione del codice, alcune linee guida che contribuiscono a comprendere come usare Git e GitLab per inviare il tuo contributo.
Come usare Git e GitLab
Il codice sorgente di Gambas è gestito da un repository Git, ospitato su
GitLab.com.
Per gestire nuovi contributi, utilizziamo il
Flusso di lavoro del fork del progetto :
poiché i contributori non hanno il permesso di scrivere direttamente sul codice sorgente di Gambas, dovrai creare un repository separato contenente le tue modifiche, quindi creare una richiesta di unione (merge request) chiedendo agli sviluppatori di Gambas di unire (merge) le tue modifiche al repository principale.
Sebbene ciò possa sembrare complesso per i nuovi collaboratori, questo documento è stato creato per guidare questo processo, passo dopo passo.
Se hai problemi con i passaggi menzionati qui, o se hai qualche domanda riguardo un contributo, puoi
chiedere sulla mailing list.
Come creare un account GitLab
Innanzitutto, è necessario un
account GitLab per inviare qualunque modifica.
Ti consigliamo anche di
usare SSH per lavorare con i repository Git, anziché HTTPS.
Non solo non dovrai inserire il nome utente e la password di GitLab ogni volta che desideri interagire con il repository, ma è anche più sicuro poiché la password non viene mai inviata attraverso la rete.
Puoi anche
usare GPG per firmare i tuoi commit, sebbene non sia necessario.
Fare il Fork del Repository Gambas
Ora che il tuo account GitLab è configurato, possiamo fare il
fork del repository Gambas.
Questo creerà una copia del repository Gambas, ma sarà di tua proprietà, quindi potrai apportare qualsiasi modifica tu voglia.
Per fare questo, basta andare alla
pagina del progetto Gambas e fare clic sul pulsante "Fork".
Ti verrà quindi chiesto dove posizionare il fork del repository. Una volta completato, il nuovo repository apparirà sotto il tuo account.
Adesso puoi clonare il repository sul tuo computer locale, usando il seguente comando (sostituisci
<yourusername>
con il tuo username GitLab):
Apportare modifiche al tuo repository
Una volta completata la clonazione, è possibile apportare modifiche alla propria copia locale, che dovrà quindi essere consegnata (con il comando git commit) e inviata (git push).
Innanzitutto, puoi controllare quali file sono stati modificati con il comando
git status
. È sempre bene controllare prima di fare il commit!
Puoi anche vedere le differenze complete con il comando
git diff
.
Una volta fatto tutto, dovrai selezionare quali file vuoi successivamente consegnare usando il comando
git add.
Puoi selezionare file o directory specifici usando
git add file1.c file2.c main/gbx
, o semplicemente selezionare tutto usando
git add -A
.
È quindi possibile effettuare il commit usando il comando
git commit
.
Questo comando aprirà un editor per consentire di scrivere il messaggio di commit.
Per alcune linee guida su come scrivere i messaggi di commit, consultare la sezione Scrivere messaggi di commit.
Questo comando avvierà l'editor predefinito (di solito
vi
), ma puoi cambiarlo impostando la variabile d'ambiente
EDITOR
sul comando che avvia il tuo editor preferito.
Ora che il commit è fatto, puoi inviarlo al tuo repository GitLab usando il comando
git push
.
Creazione della merge request (richiesta di unione)
Con le modifiche ora trasferite al repository GitLab, il passaggio finale è quello di creare una
Merge Request, chiedendo gentilmente agli sviluppatori di Gambas per unire le modifiche al repository principale di Gambas.
Poiché questo processo è interamente realizzato tramite GitLab,
utilizzare le seguenti istruzioni per creare le merge request.
È probabile che le tue modifiche non vengano accettate immediatamente e ti verrà chiesto dai manutentori di Gambas di apportare alcune modifiche.
In questo caso, è possibile apportare le modifiche, consegnarle (commit) e quindi inviarle (push).
La richiesta di unione (merge request) su GitLab verrà aggiornata automaticamente, non dovrai ricrearla.
Mantieni aggiornato il tuo repository
Durante il tempo in cui apporti modifiche alla tua versione del codice sorgente di Gambas, o mentre la tua richiesta viene esaminata, è probabile che il repository Gambas riceva alcuni aggiornamenti.
Poiché un repository ottenuto da un fork è sostanzialmente un clone, la versione ufficiale e la tua versione sono completamente separate e non riceverà automaticamente nuovi commit.
Tuttavia, puoi configurare il tuo repository locale in modo che si colleghi a entrambi i repository, in modo da poter estrarre le modifiche dal repository ufficiale di Gambas, unirle con le tue modifiche localmente e quindi inviarle al tuo repository.
Innanzitutto, occorre configurare il tuo repository Git locale aggiungendo il repository Gambas originale come secondo remoto:
git remote add upstream https://gitlab.com/gambas/gambas.git
Ora abbiamo aggiunto un nuovo remoto chiamato
upstream
al repository locale, indicando il repository Gambas originale.
(Puoi elencare tutti i remoti con il comando
git remote -v
).
Questo significa che Git ora può estrarre le modifiche dal repository Gambas originale usando il comando seguente:
Questo comando prenderà le modifiche dal ramo
master
del remoto
upstream
.
Se hai eseguito dei commit alla tua versione del repository, li unirà con le nuove modifiche, creando un nuovo commit di unione.
Quando l'unione è completa, puoi semplicemente usare
git push
per inviare tutte queste modifiche alla tua versione del repository. Se hai qualche richiesta di unione in sospeso, verranno aggiornate automaticamente.
Scrivere messaggi di commit
Al fine di generare automaticamente i log delle modifiche per ogni versione, i commit nel repository Gambas devono seguire un formato molto specifico.
Ecco un esempio:
This commit contains things, adds stuff and has lots of fluff (Questo commit contiene delle cose, sono state aggiunte altre cose e contiene molta fuffa).
(ma questo non andrà nel changelog)
[GB.QT4]
* NEW: Added things to the component (Aggiunte cose al componente).
* BUG: Fixed a bug in the Foo function (Risolto un bug nella funzione Foo).
* NEW: Added this very long modification... (Aggiunta questa modifica molto lunga...)
...and it takes more than one Line To Write it (...e ci vuole più di una riga per descriverla).
This won't go into the changelog either (...).
[COMPILER]
* BUG: What an awful bug!
* OPT: Make things go faster.
[GB.GTK3]
* NEW: The component is now complete!
Secondo la convenzione per i messaggi di commit di Git, la prima riga di ogni commit è una breve descrizione di ciò che contiene.
Questa riga non finisce nel changelog, ma appare nei log di git e nell'interfaccia di GitLab.
Quindi, il messaggio di commit è composto dalle seguenti parti:
-
Uno slot, tra parentesi quadre (ad es.
[GB.QT4]
)
-
Una o più modifiche, ognuna preceduta da un tag, che può essere
* NEW:
, * BUG:
o * OPT:
, con uno spazio alla fine.
Il nome dello slot è quello del componente modificato (in maiuscolo) o uno di questi se le modifiche non influiscono su un componente:
-
[INTERPRETER]
per i cambiamenti nell'interprete (gbx3).
-
[COMPILER]
per le modifiche nel compilatore (gbc3).
-
[ARCHIVER]
per modifiche nell'archiviatore (gba3).
-
[INFORMER]
per modifiche nell'informatore (gbi3)
-
[DEVELOPMENT ENVIRONMENT]
per modifiche nell'IDE (gambas3).
-
[CONFIGURATION]
per modifiche nel processo di configurazione di automake/autoconf
-
[WIKI CGI SCRIPT]
per modifiche negli script CGI della wiki.
-
[WEB SITE MAKER]
per modifiche nel generatore del sito Web Gambas.
-
[EXAMPLES]
per modifiche negli esempi.
Il nome del tag è uno dei seguenti:
-
NEW
è per nuove funzionalità o traduzioni, aggiornamenti o altri miglioramenti;
-
BUG
è per la correzione di errori o altre correzioni
-
OPT
è per ottimizzazioni
Le cose senza impatto per l'utente (come refactoring o pulizia del codice) non dovrebbero finire nel log delle modifiche.
Tutte le righe senza tag non verranno visualizzate nel registro delle modifiche, ma se si desidera che una modifica si estenda su più righe, sarà necessario farla precedere da due spazi.