Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
|
custom:repo_git_di_commessa [2020/04/01 12:45] mariasole.angelucci [Casi tipici di utilizzo] |
custom:repo_git_di_commessa [2021/03/04 15:01] (versione attuale) francesco.rosati [GUIDA RAPIDA CASO BASE] |
||
|---|---|---|---|
| Linea 2: | Linea 2: | ||
| Un repository GIT di commessa può essere visto come una cartella che tiene traccia delle modifiche effettuate nel tempo a tutti i file in essa contenuti. | Un repository GIT di commessa può essere visto come una cartella che tiene traccia delle modifiche effettuate nel tempo a tutti i file in essa contenuti. | ||
| - | Per procedere alla creazione di un repository, bisogna, prima, aver scaricato e installato Git sul proprio pc; la guida ai passaggi necessari per farlo è consultabile nella sezione [[gwinstguide:idxinstguide:installazione_git|Installazione di Git]]. | + | Prima di procedere alla creazione di un repository, bisogna aver scaricato e installato Git sul proprio pc: la guida ai passaggi necessari per farlo è consultabile nella sezione [[gwinstguide:idxinstguide:installazione_git|Installazione di Git]]. |
| - | Si deve, a questo punto, creare un nuovo progetto su Gitlab. Per fare questo, basta accedere al sito con il proprio account, aprire la sezione **Projects** dalla toolbar in alto a sinistra e, poi, selezionare **Your projects** dal menu a tendina, come mostrato in figura. | + | La prima cosa da fare è la creazione di un nuovo progetto su Gitlab. Per fare questo, basta accedere al sito con il proprio account, aprire la sezione **Projects** dalla toolbar in alto a sinistra e, poi, selezionare **Your projects** dal menu a tendina, come mostrato in figura. |
| {{ :custom:gitlab_projects.png?400 |}} | {{ :custom:gitlab_projects.png?400 |}} | ||
| - | Ora è possibile creare il nuovo progetto selezionando il pulsante **New Project** e compilando, nella finestra che si aprirà, i vari campi con le informazioni desiderate, quali nome del progetto, privacy da impostare al progetto, e così via. | + | Selezionare il pulsante **New Project** e compilare, nella finestra che si aprirà, i vari campi con le informazioni desiderate, quali nome del progetto, privacy da impostare per il progetto, e così via. |
| {{ :custom:gitlab_newproject.png?600 |}} | {{ :custom:gitlab_newproject.png?600 |}} | ||
| - | Una volta che il progetto (che rappresenta il nuovo repository) è stato creato, nella pagina Gitlab relativa al progetto sarà presente anche un pulsante **Clone**: si aprirà un menu a tendina in cui ci sarà la possibilità di copiare il percorso del progetto per clonarlo nel proprio pc tramite protocollo SSH o HTTPS. Solitamente, su sistemi operativi Windows, è preferibile copiare il path con HTTPS per non incorrere in errori relativi a permessi o sicurezza. | + | Una volta salvate tutte le informazioni, il progetto (che rappresenta il nuovo repository) viene infine creato; esso è consultabile aprendo la sua pagina di dettaglio su Gitlab (dalla sezione **Projects** -> **Your Projects**). |
| + | |||
| + | All'interno della pagina di dettaglio, è sempre presente un pulsante **Clone**: cliccando sul pulsante, si apre un menu a tendina che fornisce la possibilità di copiare il percorso del progetto per clonarlo nel proprio pc tramite protocollo SSH o HTTPS. Solitamente, su sistemi operativi Windows, è preferibile utilizzare il protocollo HTTPS per non incorrere in errori relativi a permessi o sicurezza. | ||
| {{ :custom:gitlab_createdproject.png?800 |}} | {{ :custom:gitlab_createdproject.png?800 |}} | ||
| - | Il processo di clonazione serve a creare, nel pc dove si sta lavorando, un repository locale di Git: ogni modifica effettuata nella cartella del proprio pc, non viene automaticamente salvata nel repository locale, ma deve essere esplicitamente aggiunta ad esso e, poi, deve essere riportata sul repository remoto, tramite la procedura di //commit and push//. | + | |
| - | Per clonare il repository nel proprio pc si possono utilizzare due metodi: l'interfaccia grafica di Git per Windows, che risulta più intuitiva ma un poco più laboriosa e, in alternativa, l'interfaccia a riga di comando che è più rapida, più versatile e più potente ma anche un po' meno intuitiva. Nei prossimi paragrafi verranno presentate entrambe le modalità. Per completezza, si riporta anche il link alla guida ufficiale di Git, in cui sono presenti le spiegazioni di tutti i comandi e di tutte le opzioni per ogni comando: [[https://git-scm.com/docs]]. | + | Il processo di clonazione serve a creare, nel pc dove si sta lavorando, un repository locale di Git: ogni modifica effettuata nella cartella del proprio pc non viene automaticamente salvata nel repository locale, ma deve essere esplicitamente aggiunta ad esso e, poi, deve essere riportata sul repository remoto tramite la procedura di //commit and push//. |
| + | Per clonare il repository nel proprio pc si possono utilizzare due metodi: l'interfaccia grafica di Git per Windows, che risulta più intuitiva ma un poco più laboriosa e, in alternativa, l'interfaccia a riga di comando, che è più rapida, più versatile e più potente ma anche un po' meno intuitiva. Nei prossimi paragrafi verranno presentate entrambe le modalità. Per completezza, si riporta anche il link alla guida ufficiale di Git, in cui si possono trovare le spiegazioni di tutti i comandi disponibili e delle varie opzioni per ogni comando: [[https://git-scm.com/docs]]. | ||
| + | |||
| + | ==== Scenario Tipico ==== | ||
| + | === Clonazione repository === | ||
| + | Vedi [[custom:repo_git_di_commessa#Git clone|Git clone]] sotto. | ||
| + | |||
| + | === Modifica repository tramite personalizzazione struttura === | ||
| + | A questo punto, il responsabile di commessa deve decidere la struttura specifica da dare al progetto: si devono individuare gli ambienti necessari, che corrispondono ai diversi WAR da produrre. Bisogna quindi creare, per ognuno di essi, la relativa sotto-cartella. | ||
| + | Un esempio di possibile contenuto standard di un repository di commessa è riportato in figura: | ||
| + | {{ :custom:repo_di_commessa_sample.png?600 |}} | ||
| + | In linea generale, quindi, la cartella di repository dovrebbe contenere: | ||
| + | * una cartella per l'ambiente interno; | ||
| + | * una cartella per ogni ambiente esterno. | ||
| + | * un'unica cartella WEB per i contenuti statici dato che, //solitamente//, sono gli stessi per tutti gli ambienti; | ||
| + | |||
| + | Come variante di quanto sopra, le varie cartelle dei vari ambienti potrebbero ospitare **ognuna la propria cartella WEB** dei contenuti statici, oltre che eventuali cartelle //conf/// aggiuntive. | ||
| + | |||
| + | === Eventuale personalizzazione e produzione war === | ||
| + | Vedi la [[custom:produzione_war_da_progetto_template_custom|guida dedicata]]. | ||
| + | |||
| + | === Salvatggio modifiche effettuate su repository git === | ||
| + | Vedi [[custom:repo_git_di_commessa#Git commit|Git commit]] e [[custom:repo_git_di_commessa#Git push|Git push]] sotto. | ||
| - | ==== Clonazione e modifica del repository tramite riga di comando ==== | + | ==== Clonazione e gestione del repository tramite riga di comando ==== |
| - | Di seguito vengono elencati i comandi principali di Git, utilizzabili attraverso la Git bash: questo significa che tali comandi hanno valore solo se digitati all'interno dell'interfaccia a riga di comando di Git. La Git bash che può essere aperta come qualsiasi programma di Windows tramite doppio click sulla sua icona, oppure, per aprirla in un percorso specifico, cliccare con il tasto destro all'interno di una qualsiasi cartella e scegliere l'opzione **Git bash here**. | + | In questo paragrafo saranno elencati i comandi principali di Git utilizzabili attraverso la Git bash: ciò significa che tali comandi hanno valore solo se digitati all'interno dell'interfaccia a riga di comando di Git, chiamata, appunto, Git bash. Questa interfaccia può essere aperta: |
| + | * come qualsiasi programma per Windows, tramite doppio click sulla sua icona; | ||
| + | * in un percorso specifico, cliccando con il tasto destro all'interno di una determinata cartella e scegliendo poi l'opzione **Git bash here**. | ||
| === Git clone === | === Git clone === | ||
| Dopo aver copiato il percorso di clonazione da Gitlab, andare nella cartella in cui si vuole salvare il repository e digitare il comando: | Dopo aver copiato il percorso di clonazione da Gitlab, andare nella cartella in cui si vuole salvare il repository e digitare il comando: | ||
| <code>git clone percorso_copiato_da_Gitlab</code> | <code>git clone percorso_copiato_da_Gitlab</code> | ||
| - | Così facendo, il repository sarà clonato all'interno della cartella. Oltre ai vari file presi da remoto, nel repository locale sarà sempre presente una sotto-cartella dal nome .git che non dovrebbe mai essere eliminata o modificata. Nota: in caso vengano richieste le credenziali, vanno inserite quelle con cui ci si è registrati a Gitlab. | + | Così facendo, il repository sarà clonato all'interno della cartella. Oltre ai vari file presi da remoto, nel repository locale sarà sempre presente una sotto-cartella dal nome .git che non dovrebbe mai essere eliminata o modificata. Si noti che, in caso vengano richieste le credenziali, vanno inserite quelle con cui ci si è registrati a Gitlab. |
| === Git status === | === Git status === | ||
| Linea 29: | Linea 55: | ||
| === Git add === | === Git add === | ||
| - | Per eseguire l'operazione di //commit//, quindi per salvare le modifiche locali anche sul repository remoto, bisogna inizialmente aggiungere i file che si vogliono salvare nell'elenco degli //staged files// tramite il comando "add"; in particolare, per salvare tutti i file bisogna utilizzare il comando | + | Per eseguire l'operazione di //commit and push//, quindi per riportare le modifiche locali anche sul repository remoto, bisogna inizialmente aggiungere i file che si vogliono salvare nell'elenco degli //staged files// tramite il comando "add"; in particolare, per salvare tutti i file bisogna utilizzare il comando |
| <code>git add all</code> | <code>git add all</code> | ||
| - | Oppure si possono scegliere i singoli file da aggiungere scrivendo | + | S possono anche scegliere i singoli file da aggiungere scrivendo |
| <code>git add nome_del_file</code> | <code>git add nome_del_file</code> | ||
| - | Con questo comando è possibile formare anche delle espressioni, in modo da raggruppare una certa tipologia di file ed aggiungere più elementi tutti insieme, ad esempio: | + | Con questo comando, inoltre, è possibile utilizzare anche delle espressioni, in modo da raggruppare una certa tipologia di file ed aggiungere più elementi nello stesso momento. Ad esempio, per aggiungere alla lista degli //staged files// tutti quelli che hanno l'estensione TXT, basta scrivere: |
| <code>git add *.txt</code> | <code>git add *.txt</code> | ||
| - | per aggiungere alla lista degli //staged files// tutti i file con estensione TXT. | ||
| Per ulteriori opzioni e utilizzi del comando "git add", si rimanda alla sezione specifica nella guida ufficiale di Git: [[https://git-scm.com/docs/git-add]]. | Per ulteriori opzioni e utilizzi del comando "git add", si rimanda alla sezione specifica nella guida ufficiale di Git: [[https://git-scm.com/docs/git-add]]. | ||
| === Git commit === | === Git commit === | ||
| - | Il passo successivo è eseguire il //commit// vero e proprio dei files, utilizzando, appunto, il comando "commit". Inoltre, è necessario, anche in questo caso, aggiungere un breve commento come descrizione delle modifiche effettuate; il commento va aggiunto dopo l'opzione "-m", come riportato qui di seguito: | + | Il passo successivo è l'esecuzione del //commit// vero e proprio dei file, utilizzando, appunto, il comando "git commit". Per questa operazione, è sempre necessario aggiungere un breve commento così da descrivere le modifiche effettuate; il commento va aggiunto dopo l'opzione "-m", come riportato qui di seguito: |
| <code>git commit -m "This is a simple comment for a commit"</code> | <code>git commit -m "This is a simple comment for a commit"</code> | ||
| Per conoscere tutte le numerose opzioni del comando "git commit", è possibile consultare la sezione apposita nella guida ufficiale: [[https://git-scm.com/docs/git-commit]]. | Per conoscere tutte le numerose opzioni del comando "git commit", è possibile consultare la sezione apposita nella guida ufficiale: [[https://git-scm.com/docs/git-commit]]. | ||
| Linea 52: | Linea 77: | ||
| === Git pull === | === Git pull === | ||
| - | Se si vuole aggiornare il proprio repository locale alle modifiche più recenti avvenute in remoto, si deve utilizzare (all'interno della cartella in cui si trova il repository locale) il comando | + | Se si vuole aggiornare il proprio repository locale con le modifiche più recenti presenti in remoto, si deve utilizzare (all'interno della cartella in cui si trova il repository locale) il comando |
| <code>git pull</code> | <code>git pull</code> | ||
| Questo comando permette di recuperare e incorporare ai file già presenti nella propria cartella, tutte le modifiche fatte sul server remoto. Si noti, comunque, che questo implica che le modifiche avvenute in remoto andranno a sovrascrivere quelle nella cartella di lavoro, allineando perfettamente il repository locale con quello remoto: tutti i file aggiunti o modificati in locale saranno scartati se non presenti o non modificati in remoto. | Questo comando permette di recuperare e incorporare ai file già presenti nella propria cartella, tutte le modifiche fatte sul server remoto. Si noti, comunque, che questo implica che le modifiche avvenute in remoto andranno a sovrascrivere quelle nella cartella di lavoro, allineando perfettamente il repository locale con quello remoto: tutti i file aggiunti o modificati in locale saranno scartati se non presenti o non modificati in remoto. | ||
| - | Altre indicazioni sull'uso di "git pull" possono essere recuperate nella guida ufficiale seguendo il link [[https://git-scm.com/docs/git-pull]] | + | Altre indicazioni sull'uso di "git pull" possono essere trovate nella guida ufficiale seguendo il link [[https://git-scm.com/docs/git-pull]]. |
| === Git merge === | === Git merge === | ||
| Linea 66: | Linea 91: | ||
| Prima di eseguire questa operazione, però, è necessario che i //branch// che si vogliono unificare siano stati correttamente salvati, cioè che le modifiche locali siano allineate con quelle remote (si può verificare la condizione con il comando "git status"). Git, infatti, opera considerando che le versioni valide di ogni //branch// siano sempre e solo quelle salvate nei corrispettivi repository remoti: tutte le modifiche non salvate in remoto verranno perse. | Prima di eseguire questa operazione, però, è necessario che i //branch// che si vogliono unificare siano stati correttamente salvati, cioè che le modifiche locali siano allineate con quelle remote (si può verificare la condizione con il comando "git status"). Git, infatti, opera considerando che le versioni valide di ogni //branch// siano sempre e solo quelle salvate nei corrispettivi repository remoti: tutte le modifiche non salvate in remoto verranno perse. | ||
| - | Chiaramente, per l'operazione di //merge// si deve partire da un //branch//: assicurarsi che si faccia riferimento al //branch// giusto con il comando | + | Chiaramente, per l'operazione di //merge// si deve partire da un primo //branch// e ci si può assicurare di fare riferimento al //branch// giusto con il comando: |
| <code>git checkout nome_del_branch_di_partenza</code> | <code>git checkout nome_del_branch_di_partenza</code> | ||
| - | A questo punto, basta utilizzare il comando | + | A questo punto, per unire il primo ramo al secondo, basta utilizzare il comando: |
| <code>git merge nome_del_branch_da_unire</code> | <code>git merge nome_del_branch_da_unire</code> | ||
| - | Se i due rami non hanno modificato gli stessi file, l'operazione termina così. In caso contrario, invece, Git riporterà un conflitto fra i //branch//, indicando quali file e quali parti di essi sono in contraddizione, e l'operazione di unione non verrà effettuata. Per completare il //merge// si dovrà andare a modificare i file che creano conflitto in modo da renderli uguali. | + | Se i due rami non hanno modificato gli stessi file, l'operazione terminerà così. In caso contrario, invece, Git riporterà un conflitto fra i //branch//, indicando quali file e quali parti di essi sono in contraddizione, e l'operazione di unione non verrà effettuata. Per completare il //merge// si dovrà andare a modificare i file che creano conflitto in modo da renderli uguali. |
| L'operazione di //merge// è un'operazione centrale di Git, e, per questo, esistono molteplici opzioni e utilizzi del comando "git merge". Per approfondire è possibile consultare la guida ufficiale al seguente link: [[https://git-scm.com/docs/git-merge]]. | L'operazione di //merge// è un'operazione centrale di Git, e, per questo, esistono molteplici opzioni e utilizzi del comando "git merge". Per approfondire è possibile consultare la guida ufficiale al seguente link: [[https://git-scm.com/docs/git-merge]]. | ||
| Linea 76: | Linea 101: | ||
| ==== Clonazione e modifica del repository tramite interfaccia grafica ==== | ==== Clonazione e modifica del repository tramite interfaccia grafica ==== | ||
| Aprire nel proprio pc il percorso su cui si vuole salvare il progetto, cliccare all'interno della cartella con il tasto destro e selezionare l'opzione **Git GUI here**. Nella finestra che viene aperta, scegliere **Clone existing repository** (come mostrato in figura) e, a questo punto, incollare nel form **Source location** il path precedentemente copiato dal progetto Gitlab; nel form **Target directory**, invece, va inserito il percorso, all'interno del proprio pc, all'interno del quale si vuole salvare il progetto. | Aprire nel proprio pc il percorso su cui si vuole salvare il progetto, cliccare all'interno della cartella con il tasto destro e selezionare l'opzione **Git GUI here**. Nella finestra che viene aperta, scegliere **Clone existing repository** (come mostrato in figura) e, a questo punto, incollare nel form **Source location** il path precedentemente copiato dal progetto Gitlab; nel form **Target directory**, invece, va inserito il percorso, all'interno del proprio pc, all'interno del quale si vuole salvare il progetto. | ||
| - | Procedere cliccando sul pulsante **Quit** e, dopo qualche istante, la clonazione del repository di Git sarà completata: il progetto e tutti gli eventuali file contenuti al suo interno saranno ora presenti anche nel proprio pc. Anche in questo caso, oltre ai vari file, sarà presente nel repository locale una sotto-cartella chiamata .git che contiene varie opzioni di configurazione e che non dovrebbe essere modificata o eliminata. | + | Procedere cliccando sul pulsante **Quit** e, dopo qualche istante, la clonazione del repository di Git sarà completata: il progetto e tutti gli eventuali file contenuti al suo interno saranno ora presenti anche nel proprio pc. Anche in questo caso, oltre ai vari file, sarà presente nel repository locale una sotto-cartella chiamata .git che contiene varie opzioni di configurazione e che non dovrebbe essere modificata o eliminata. Come nel caso precedente, in caso di richiesta, inserire le proprie credenziali di Gitlab. |
| - | + | ||
| - | Nota: come nel caso precedente, in caso di richiesta, inserire le proprie credenziali di Gitlab. | + | |
| {{ :custom:gitgui_cloneproject.png?600 |}} | {{ :custom:gitgui_cloneproject.png?600 |}} | ||
| Linea 101: | Linea 124: | ||
| ==== Casi tipici di utilizzo ==== | ==== Casi tipici di utilizzo ==== | ||
| Nonostante l'estrema versatilità di uno strumento come Git, è possibile che alcune procedure o alcuni comandi descritti nei paragrafi precedenti siano, in qualche caso, ridondanti o non utili. Per semplificare le operazioni, quindi, qui di seguito sono elencati alcuni casi standard in cui si deve utilizzare Git e i quali necessitano solo di alcuni comandi. | Nonostante l'estrema versatilità di uno strumento come Git, è possibile che alcune procedure o alcuni comandi descritti nei paragrafi precedenti siano, in qualche caso, ridondanti o non utili. Per semplificare le operazioni, quindi, qui di seguito sono elencati alcuni casi standard in cui si deve utilizzare Git e i quali necessitano solo di alcuni comandi. | ||
| - | * Il repository di commessa __non è condiviso__: questo significa che si è i soli a lavorare con esso e, perciò, non è necessario creare ramificazioni complesse. Dopo aver clonato una sola volta il repository nella propria macchina, basterà riportare in remoto, di volta in volta, le modifiche effettuate. Questo significa che le uniche operazioni che devono essere eseguite tramite Git sono quelle di //commit// e //push//; di conseguenza, gli unici comandi che devono essere usati sono "git add", "git commit" e "git push". | + | * Il repository di commessa __non è condiviso__: questo significa che si è i soli a lavorare con esso e, perciò, non è necessario creare ramificazioni complesse. Dopo aver clonato una sola volta il repository nella propria macchina, basterà riportare in remoto, di volta in volta, le modifiche effettuate. Ciò vuol dire che le uniche operazioni che devono essere eseguite tramite Git sono quelle di //commit// e //push//; di conseguenza, gli unici comandi che devono essere usati sono: <code>git add all</code><code>git commit -m "Inserire il messaggio di descrizione della modifica"</code> <code>git push</code> |
| - | * Il repository di commessa __è condiviso__: più persone devono lavorare allo stesso repository, anche tramite macchine diverse. In questo caso è bene mantenere sempre sia il repository remoto sia tutti i repository locali allineati alle varie modifiche per evitare errori e conflitti. Questo significa che, prima di apportare cambiamenti, si deve controllare che il proprio repository sia aggiornato con quello remoto tramite il comando "git pull" e, eventualmente, "git merge". Solo dopo essersi assicurati che tutto sia correttamente allineato, è possibile apportare le proprie modifiche e poi eseguire l'operazione di //commit// e //push//. | + | * Il repository di commessa __è condiviso__: più persone devono lavorare allo stesso repository, anche tramite macchine diverse. In questo caso è bene mantenere sempre sia il repository remoto sia tutti i repository locali allineati alle varie modifiche per evitare errori e conflitti. Questo significa che, prima di apportare cambiamenti, si deve controllare che il proprio repository sia aggiornato con quello remoto usando il comando "git pull" (ed eventualmente "git merge"). Solo dopo essersi assicurati che tutto sia correttamente allineato, è possibile apportare le proprie modifiche e poi eseguire l'operazione di //commit// e //push//. Quindi, in questo caso, il comando da utilizzare prima della modifica è: <code>git pull</code> Mentre dopo la modifica: <code>git add all</code><code>git commit -m "Inserire il messaggio di descrizione della modifica"</code> <code>git push</code> |
| + | |||
| + | |||