[linux_var] Risposte su Git e mezz'ora sulle mezz'ore

Riccardo Macoratti r.macoratti a gmx.co.uk
Mar 21 Feb 2017 14:46:18 CET


Ciao a tutti,

siccome mi sono arrivati proprio ora tutti i messaggi (di almeno una
settimana in blocco), apro un nuovo topic e rispondo a tutto.

Sono contento di vedere che la serata con lo streaming in tempo reale
abbia riscosso un bel successo. Seguirà prima o poi un'altra serata su
come produrre uno stream video verso YouTube in tempo reale.

Si era poi manifestata nella mia testa l'idea di aprire un canale
YouTube (ok, non è OSS/Free, ma è come Facebook, ha molta risonanza)
per il LinuxVar dove mandare gli stream e magari fare anche qualche
video sui progetti in corso (tipo la stampante, un bel video di una
stampa no?).

Inizo con le risposte.

> [push]
> 	default = matching
> [core]
> 	autocrlf = input

Il primo settaggio serve, quando effettuo il push, a caricare tutte le
branch locali nel server remoto. Se invece voglio caricare solo la
branch corrente avrei dovuto usare `default = simple`. Il secondo
settaggio converte in automatico `crlf` che è il terminatore di riga di
Windows a `lf` che è quello di *nix, visto che il server al 99.999999%
sarà *nix.

> quando faccio git add devo per forza specificare il nome di tutti i file
> modificati? 

No, basta che fai `git add .` dove `.` rappresenta la directory
corrente.

> git lavora bene con file di testo,  immagino che file di tipo binario, o
> comunque contenenti caratteri "strani" vengano comunque trattati allo
> stesso modo( il contenuto di una EPROM per esempio)

Git è nato per lavorare su righe di testo, è la sua unità di misura
base. Però in un software non c'è solo sorgente, così negli anni è
stato migliorato il trattamento dei file binari. Per quanto riguarda
caratteri unicode, non c'è alcun problema.

> qual è il significato di REBASE?

Poniamo che ci sia un filone di modifiche principale fatto di 4 commit,
{0,1,2,3}. Tu al commit numero 3 ti crei la tua branch e inizi a
lavorare (nel filone secondario). Nel frattempo nel filone principale
sono andati avanti e i commit sono diventati 7, {0,1,2,3,4,5,6}. Il tuo
filone di lavoro, però, parte dal commit 3; è buona norma (e anche
utile) integrare le modifiche di {4,5,6} nel tuo lavoro e consegnare il
lavoro che già parta dal commit numero 6.

Se tu ti posizioni sulla tua branch, all'ultimo commit e dai `git
rebase master`, questo fara un re-base, ossia cambierà la base dei tuoi
commit (che è il commit numero 3) e riapplicherà tutte le tue modifiche
partendo dal commit numero 6.

> quando si usa?

Questa è una domanda difficile; nella realtà usando rebase riscrivi la
storia del repository. Prova a pensare se uno sta lavorando e gli
riscrivi la storia nel mentre... Io mi arrabbierei. Perciò come regola
di massima il rebase si usa solo su branch locali che non siano già
state mandare in remoto (a meno di non voler rischiare di essere
linciato dai colleghi).

> posso proteggere il repository e fare in modo che solo chi ha una passworw
> (o il mio permesso) può andare a scrivere nello stesso?

Git come applicazione non prevede controllo accessi, ma sono state
sviluppate diverse piattaforme e servizi che lo fanno. Esempi sono
online, GitHub[1], GitLab[2] o Bitbucket[3], oppure sul tuo server,
GitLab server[4], gitolite[5] o fugit[6].

.. [1]: https://github.com/
.. [2]: http://gitlab.com
.. [3]: https://bitbucket.org/
.. [4]: https://about.gitlab.com/downloads/
.. [5]: http://gitolite.com/gitolite/index.html
.. [6]: https://github.com/cbdevnet/fugit

Spero che le risposte siano esaustive.

Ciao,
Riccardo

-- 
Riccardo Macoratti
site: http://ricma.co
twitter: https://twitter.com/Kimahri_San
e-mail: r {dot} macoratti {at} gmx {dot} co {dot} uk


Maggiori informazioni sulla lista Talking