Usare Git dall’editor
Usare Git dall’editor
Introduzione
Che cos'è Git?
Git (pronunciato ghit) è un sistema di versionamento del codice usato comunemente nei progetti software. Permette in particolare:
- di avere una cronologia del codice, nella quale si può tornare indietro;
- di sincronizzare più dispositivi e lavorare in squadra sugli stessi file limitando i conflitti;
- di mantenere più versioni dello stesso codice, per sviluppare e sperimentare senza rompere la versione funzionante;
- di salvare facilmente il progetto.
Una cartella versionata con Git è chiamata repository (o _repo_).
Che cos'è una forgia?
Se Git è un software utilizzabile in locale (sulla tua macchina o nell'editor di Leek Wars), può anche interagire con una forgia software, cioè un server che ospita repository Git.
Leek Wars supporta diverse forge; la cosa più semplice è sceglierne una tra queste:
- GitHub, servizio proprietario di Microsoft (USA). Ospita anche il codice di Leek Wars.
- GitLab.com, istanza ufficiale di GitLab (USA), un software libero che si può auto-ospitare.
- Bitbucket, servizio proprietario di Atlassian (USA).
- Codeberg, istanza ufficiale di Forgejo, software libero comunitario che si può auto-ospitare, gestita da un'organizzazione tedesca senza scopo di lucro.
È anche possibile usare altre forge basate su GitLab, Bitbucket, Forgejo, Gitea o Gogs, per esempio framagit.org o gitea.com.
Usare Git per un'IA esistente
Prima di tutto, l'IA deve trovarsi in una cartella, non alla radice. Crea una cartella, fai clic destro sulla cartella e scegli "Inizializzare un repository Git". Conterrà tutti i file da integrare in Git.
Una scheda Git con un pittogramma a forma di ramo appare in cima alla lista dei file (menu di sinistra). Vai lì.
Fare dei commit
(in buon italiano si direbbe "convalida", ma tutti usano la parola inglese commit)
In cima alla scheda Git, verifica nel selettore a tendina che sia selezionato il repository voluto (se ne hai più di uno).
Quando i file nel repository vengono modificati, le modifiche appaiono nella scheda Git. Per il momento sono fuori dallo stage: sono come una bozza, non ancora scolpita nel marmo della cronologia.
Quando vuoi registrare delle modifiche nella cronologia, clicca sul pulsante ➕ per aggiungerle allo stage. Riassumi in poche parole le modifiche nel campo "Messaggio del commit" e conferma.
Nota: per vedere bene tutti i pulsanti della scheda Git può essere necessario allargarla verso destra trascinandone il bordo destro!
La cronologia è una lista di commit; ogni commit è un insieme di modifiche, con una data e un messaggio. L'idea è poter ritrovare a quando risale una certa modifica, tornare indietro, raggruppare le modifiche per evitare di avere un codice che funziona a metà...
Collegarsi a una forgia
Configurazione sulla forgia
Creati un account su una forgia Git e crea lì un repository vuoto. Trova l'indirizzo del tuo repository, che dovrebbe assomigliare a https://exemple.net/mon-pseudo/mon-depot.git. È l'indirizzo della pagina principale del tuo repository, con .git in più alla fine.
Bisogna poi autorizzare Leek Wars ad accedere al repository. La procedura dipende dalla forgia.
- GitHub: la cosa più semplice è installare la GitHub App di Leek Wars, direttamente dall'editor (vedi sotto). In alternativa puoi creare un token: clicca sul tuo profilo, Settings, Developer Settings (in fondo). Nella pagina che si apre, scegli Personal access tokens, Tokens (classic). Scegli una scadenza (per esempio 90 giorni) e concedi solo i permessi necessari per partecipare al repository.
- Forgejo: Impostazioni dell'account, Applicazioni, Nuovo token di accesso. Autorizza l'accesso in lettura e scrittura a "repository".
Se hai creato un token, conservalo bene per non perderlo!
Configurazione su Leek Wars
In fondo alla scheda Git, clicca sul pulsante a forma di nuvola "Impostazioni del remote".
È qui che si dichiara il repository remoto (il remote): indica un nome (per esempio origin), incolla l'URL del repository e clicca sul pulsante "Aggiungi". Questo passaggio è indispensabile prima di poter pushare qualsiasi cosa.
Per l'autenticazione, scegli la tua forgia: GitHub, GitLab, Bitbucket o Forgejo.
- GitHub: la via principale è il pulsante "Installa la GitHub App". Durante l'installazione, scegli i repository a cui dare accesso; una volta tornato in Leek Wars potrai selezionare direttamente uno di questi repository per il remote. In alternativa, incolla un Personal Access Token nel campo "Token di accesso".
- GitLab e Bitbucket: incolla il token nel campo "Token di accesso". Se usi un'istanza auto-ospitata invece di gitlab.com o bitbucket.org, spunta "Istanza auto-ospitata" e indica l'indirizzo della forgia (questa casella esiste anche per GitHub).
- Forgejo: la casella "Istanza auto-ospitata" non esiste per questa forgia, il campo con l'indirizzo dell'istanza è sempre visibile (precompilato con codeberg.org). Indica l'indirizzo della tua istanza se necessario e incolla il token nel campo "Token di accesso".
Inviare i propri commit al server
Per il momento, la cronologia dei commit è registrata solo su Leek Wars. Per inviarla alla forgia si fa un push, con il pulsante ⬆ in fondo alla scheda Git.
Ogni volta che vorrai inviare nuovi commit, fai un push.
Altre funzioni
L'editor e la scheda Git offrono anche:
- Clonare un repository: menu File → "Clonare un repository git", indicando l'URL del repository e la cartella di destinazione.
- Pull: pulsante "Pull" per recuperare i commit del remote, con a scelta una strategia merge o rebase ("Strategia di pull").
- Branch: il selettore di branch permette di cambiare branch, crearne di nuovi ("Nuovo branch...") e vedere i branch remoti.
- Cronologia e diff: il pulsante "Cronologia" elenca i commit, e un clic su un file modificato mostra le sue differenze.
- Risoluzione dei conflitti: in caso di conflitto durante un merge o un rebase, l'editor permette di risolverli e poi continuare.
- Annulla l'ultimo commit: le modifiche del commit annullato restano nell'indice.
- Compatta il repository: riduce lo spazio occupato dal repository (utile per la quota).
- Terminale Git integrato: mostra il registro dei comandi Git eseguiti dall'editor.