3. Git, questo sconosciuto
● Software per repository con version control
● Creato nel 2005 da Linus Torvalds
● Ottimizzato per POSIX
● Realizza un filesystem “distribuito”
4. Filesystem Distribuito
Filesystem:
● Non distingue i file per tipologia
● Utilizza access right propri
● I contenuti sono oggetti
● Indicizzazione propria degli oggetti
Distribuito:
● Non usa un server centralizzato
● Predisposto per la collaborazione con
terzi
7. Hands-on: inizializzare un progetto
Creare la working folder:
● cd ~
● mkdir myproject
Creare il repository:
● git init
Configurare
● git config --global user.name <nome>
● git config --global user.email <email>
Analizzare:
● ls -la
● cd .git
● cd object
● ls
Creare file nella working dir:
● cd ~/myproject
● touch file1.txt
Analizzare:
● git status
● Eventualmente cartella object
Staging e check
● git add file1.txt
● cd .git/objects
● git ls-files
Commit e check
git commit
cd .git/objects
14. Tree object
Costituito da:
● Permessi
● Tipo object
● Hash dell’object (contenente il file): puntatore
● Tabulazione
● Nome originale del file
15. Commit object
Costituito da:
● Hash dell’oggetto tree cui punta
● Nome di autore e commiter
● E-mail di autore e commiter
● Hash del commit parent (se non è un primo commit)
● Timestamp del commit in UTC
● Dati autore configurati globalmente o per progetto
16. Hands-on: oggetti
Check del commit:
● cd .git/objects
● git cat-file -t <hash>
● git cat-file -p <hash>
Aggiungere nuovo file
● Come prima
Analizzare:
● Come prima
32. .gitignore
E.g.:
● FileName.ext
● FolderName/
● *.ext
Esclusioni
● la cartella bin/: chi clona il repository può crearsela direttamente su sistema di
produzione, copiarla non sarebbe efficiente
● le cartelle delle dipendenze: sono tipicamente grandi e possono essere soddisfatte
da chi clona il repository, copiarle non è efficiente (e.g.: node_modules/).
● i file compilati
● i log
● i file creati dal sistema operativo (e.g.: Thumbs.db o DS_Store)
33. Link Utili
Tool grafici:
● https://gitahead.github.io/gitahead.com/
● https://wiki.gnome.org/action/show/Apps/Gitg
Riferimenti e troubleshooting
● https://git-scm.com/
● https://ohshitgit.com/