quali sono i principali branch di gitflow? | branch master;
branch develop;
feature branches;
release branches;
hotfix branches. |
a che cosa serve il branch master? | master: contiene le versioni stabili del codice sorgente, pronte per essere consegnate o rilasciate al cliente o al pubblico. Queste versioni sono considerate affidabili e testate, quindi possono essere utilizzate in produzione; |
a che cosa serve il branch develop? | develop: è il ramo di integrazione in cui vengono integrati i contribuiti di tutti i gruppi; è anche il punto di partenza degli altri tipi di branch. |
a che cosa serve il branch feature? | I feature branch sono branch temporanei utilizzati per sviluppare nuove funzionalità o per correggere bug. Possono essere creati solo a partire dal branch develop e vengono utilizzati per isolare il lavoro su una specifica funzionalità o problema dal resto del codice. Quando il lavoro è completato, il feature branch viene integrato di nuovo nel develop tramite un merge |
come risolve git normalmente i conflitti nel merge fra due branch di cui uno e la diretta evoluzione del secondo ? | facendo un fast forward del secondo rendendolo uguale al primo |
che cosa e' lo squashing? | Usando git è anche possibile eseguire in fase di merge lo squashing dei commit, ovvero la fusione di tutti i commit del branch entrante in uno solo. Questa operazione è utile per migliorare la leggibilità della history dei commit su branch grossi |
che cosa e' una hotfix? | Un hotfix è una riparazione veloce di difetti urgenti senza dover aspettare la prossima release. È l’unico caso per cui non si parte da develop, ma dall’ultima - o una particolare - versione rilasciata su master. |
quali sono alcuni difetti di git e gitflow? | la mancanza di un sistema di autorizzazione granulare, ovvero la possibilità di assegnare permessi in modo specifico e mirato a diverse funzionalità o risorse. Inoltre, non esiste una distinzione tra diversi livelli di accesso, quindi o si ha accesso completo a tutte le funzionalità o non si ha accesso a niente;
l’assenza di code review, ovvero il processo di revisione del codice sorgente da parte di altri sviluppatori prima che venga integrato nel codice base. |
che cosa e' l'hosting centralizzato? | hosting centralizzato Git è un servizio che fornisce una repository centrale per i progetti Git dove i contributi vengono integrati e gestiti, garantendo una maggiore trasparenza e controllo del processo di sviluppo e mantenendo molti vantaggi della decentralizzazione, come la possibilità di lavorare in modo asincrono e autonomo.
esempi possono essere github e gitlab |
che cosa e' gerrit? | e' uno strumento di review del codice utilizzato internamente da google basato sul concetto di “peer review”: tutti gli sviluppatori sono autorizzati a fare review delle proposte di modifica di qualsiasi zona di codice. |
che cosa e' il verifier? | Il verifier è uno strumento o un processo che viene utilizzato in Gerrit per verificare che le modifiche proposte siano corrette e funzionino come dovrebbero. In particolare, il verifier scarica la patch, la compila, esegue i test e controlla che ci siano tutte le funzioni necessarie. Se il verifier rileva dei problemi, può segnalarli al team di sviluppo perché vengano corretti prima che la patch venga accettata. |
che cosa e' un approover? | viene utilizzato da gerrit dopo il verifier per stabilire se la proposta risponde a certe domande quali:
- è valida per lo scopo del progetto?
- è valida per l’architettura del progetto?
- introduce nuove falle nel design che potrebbero causare problemi in futuro?
- segue le best practices stabilite dal progetto?
- è un buon modo per implementare la propria funzione?
- introduce rischi per la sicurezza o la stabilità? |
che cosa e' il build automation? | La build automation è un processo fondamentale nello sviluppo di software open source, che consiste nel creare un sistema automatizzato per compilare il codice sorgente in un eseguibile.
strumenti utilizzati nella build automation sono:
- make
- Ant
- Gradle |
che cosa e' make? | make è uno strumento di build automation che viene utilizzato per automatizzare il processo di compilazione di un progetto. make segue la filosofia pipeline, ovvero prevede l’utilizzo di singoli comandi semplici concatenati per svolgere compiti più complessi. |
che cosa e' Ant? | e' un sistema per la build automation ideato da Apache che utilizza una descrizione XML del progetto e delle sue dipendenze per la compilazione del progetto.
Il vantaggio è che Java offre un livello d’astrazione sufficiente a rendere il sistema di build portabile su tutte le piattaforme. |
che cosa e' Gradle? | Gradle è uno strumento di build automation che utilizza le repository Maven come punto di accesso alle librerie di terze parti. Maven è una piattaforma di gestione delle dipendenze e della build automation per il linguaggio di programmazione Java. Le repository Maven sono archivi online che contengono librerie Java, plugin e altri componenti utilizzati nella build di progetti Java. Gradle utilizza queste repository per cercare e scaricare le librerie di cui ha bisogno per eseguire la build del progetto.
oltre a maven si possono utilizzare anche Groovy e Kotlin |
a che cosa servono i plugin nella build automation ? un esempio? | I plugin servono per trattare tool, situazioni, linguaggi definendo task e regole per lavorare più facilmente.
Il plugin Java definisce:
una serie di sourceSet, ovvero dove è presente il codice e le risorse. Principalmente sono:
- src/main/java: sorgenti Java di produzione;
- src/main/resources: risorse di produzione;
- src/test/java: sorgenti Java di test;
- src/test/resources: risorse di test.
dei task, anche con dipendenze tra loro. |
quali sono gli obiettivi del bug tracking? | L’obiettivo del bug tracking è avere più informazioni possibili su ogni bug per saperli riprodurre e quindi arrivare a una soluzione. |
che cosa sono gli issue? | Un issue è un problema o una richiesta di funzionalità segnalata all’interno di un progetto di software. Gli issue vengono solitamente utilizzati per tenere traccia dei problemi noti o delle richieste di nuove funzionalità all’interno di un progetto, e possono essere gestiti attraverso un sistema di bug tracking o gestione delle richieste. Gli issue possono essere aperti da qualsiasi membro del team o dalla comunità, e possono essere risolti o chiusi da un membro del team responsabile. |
in quali modi puo' essere risolta la segnalazione di un bug? | - duplicate: quando è stato già segnalato in precedenza e quindi non rappresenta un problema nuovo. In questo caso, viene solitamente fatto riferimento al numero del bug originale che ha già ricevuto una risoluzione;
- wontfix: il bug viene chiuso come “non risolvibile” perché o rappresenta una funzionalità voluta dal progetto o è troppo complesso da risolvere per essere considerato conveniente farlo dal punto di vista dei progettisti;
- can’t reproduce: non è stato possibile riprodurre il bug, ovvero che non è stato possibile ottenere lo stesso risultato o il comportamento segnalato dal bug. Ciò può essere dovuto a una mancanza di dettagli o a un errore nella segnalazione del bug stesso;
- fixed: il bug è stato fixato; vs fix verified: il fix è stato integrato in una release passando tutti gli step di verifica. |