"Oggi vi parlerò dei due programmi di controllo versione più popolari: SVN e Git."

"SVN funziona più o meno come ho descritto nell'ultima lezione. Git è un po' più complicato e ho intenzione di discuterne in modo più dettagliato."

"Puoi darmi i link alla documentazione per SVN e Git?"

"Certo, solo un secondo."

http://svnbook.red-bean.com/en/1.7/svn-book.html

https://githowto.com  (questo è semplicemente un capolavoro)

"Allora, Git ."

"È un po' più complicato di SVN.  Con Git, ogni utente ha il proprio repository locale oltre al repository del server. "

"Allora dove ti impegni?"

"Gli utenti si impegnano sempre nel loro repository locale."

"Ma per quanto riguarda il repository del server?"

"Per sincronizzare i repository locali e del server, ci sono speciali comandi Pull e Push .

"C'è una ragione per questo. A volte un programmatore deve fare molto lavoro da parte sua, il che può comportare diverse centinaia di commit prima che possa essere aggiunto al repository condiviso."

"Per fare ciò in SVN, dovresti avviare un ramo separato e quindi unirlo con il tronco."

"Con Git, ti impegni sempre nel repository locale e poi invii tutte le modifiche in batch al repository centrale sul server quando hai finito."

"Questo metodo può sembrare un po' eccessivo quando scrivi solo un piccolo codice. Ma quando le tue attività sono così grandi da durare settimane, allora capisci che non puoi semplicemente scrivere tutto quel tempo senza impegnarti."

"Perché non puoi lavorare solo per due settimane e poi eseguire il commit delle modifiche sul server una volta?"

"Bene, un programma di controllo della versione offre molte comodità."

"Immagina di impegnarti ogni giorno e il decimo giorno scopri che le modifiche apportate negli ultimi due giorni non funzioneranno come previsto. E vuoi ripristinare il codice che avevi l'ottavo giorno e avvicinarti all'attività diversamente».

"È sufficiente eseguire il rollback delle modifiche apportate al repository locale negli ultimi due giorni e tornare allo stato desiderato. Questa operazione è nota come operazione di rollback ."

"Mi stai dicendo che puoi farlo?"

"Sì. Inoltre, poiché la cronologia dei commit è archiviata, puoi scoprire quando e perché è stato eseguito il commit di qualcosa, e da chi, le funzionalità/bug rilevanti e quali dieci file sono stati modificati contemporaneamente come parte di questo lavoro."

"Supponiamo che la correzione del bug di qualcuno rompa il codice di qualcun altro. Puoi semplicemente eseguire il rollback ( rollback ) del codice e procedere come se la modifica non fosse mai avvenuta."

"OK, va bene. Sono convinto. Potresti mostrarmi un paio di esempi che illustrano come funziona tutto questo?"

"Sicuro."

"Ecco come cloni il repository centrale sul tuo computer locale:"

Commit e diramazioni - 1

"Quindi, l'operazione Checkout non è più necessaria."

"Sì. Ed ecco alcuni esempi di operazioni Push :"

Commit e diramazioni - 2

"E le operazioni Pull :

Commit e diramazioni - 3

"Ah. Questo ha più o meno senso."

"A proposito, c'è un servizio interessante chiamato GitHub."

"Qualsiasi programmatore può registrarsi lì e creare i propri repository Git. Ti suggerisco di familiarizzare con esso."

"Ecco alcuni link utili:"

https://githowto.com

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://articles.assembla.com/using-git/getting-started/set-up-git-on-windows-with-tortoisegit

"Nota che ci sono parecchi client Git."

"In primo luogo, c'è   GitBash , che ti consente di inserire comandi di testo."

"Poi c'è TortoiseGit , che è un buon programma integrato in Windows Explorer. Ti consente di lavorare con i file in un repository Git direttamente in Explorer."

"IntelliJ IDEA supporta Git e ti consente di eseguire tutti i tipi di comandi complessi con solo un paio di clic direttamente dall'interno dell'ambiente."

"Allora, quale dovrei imparare?"

"Ti consiglio di conoscerli tutti."

"Supererai il colloquio e arriverai al lavoro. Riceverai un collegamento a Git, un login e una password — e il gioco è fatto. Poi sarai da solo."

"Cosa intendi con «da solo»?"

"Voglio dire, configurerai Git da solo, estrarrai una copia del repository da solo,..."

"E poi dovrai costruire e provare a eseguire il progetto."

"Le istruzioni per la compilazione saranno molto probabilmente anche nel repository Git, insieme alla documentazione del progetto."

"La sera il tuo capo squadra verrà da te e ti dirà:  «Bene, cosa hai capito finora?» "

"E tu dirai: 'Sto cercando di installare Git qui, ma non ho ancora avuto successo. «Non mi licenzierai, vero?» "

"Oppure, mentre è ancora mezzogiorno, puoi andare dal responsabile del team e dire:  «Ho installato Git, ritirato il progetto e sfogliato la documentazione, ma ci sono centinaia di file e non ho ancora risolto tutto. Dove sono le attuali istruzioni di costruzione?'» "

"Riesci a sentire la differenza?"

"Sì. Nel secondo caso sono un programmatore super rockstar, ma nel primo sono un robo-doofus che non sa nemmeno come estrarre un progetto da Git. In altre parole, ho fregato prima ancora che iniziassi a programmare. Suppongo che dopo non mi lascerebbero nemmeno scrivere codice."

"Vedi, hai risposto alle tue stesse domande. Quindi studia e scoprilo. Nessuno lo farà per te."

"Non hai intenzione di aiutarmi?"

"Ti ho già aiutato. Stiamo insegnando Java qui, nel caso te ne fossi dimenticato. Per tutto il resto, sei da solo. O la tua testa è solo per bere?"

"Va bene, ho capito. Grazie, Bilaabo!"