[Linux-Biella] hg vs git spiegatemi

Federico "Darkmagister" Pietta f.pietta a gmail.com
Mer 16 Nov 2011 09:28:15 CET


On 16/11/2011 09:15, Daniele Segato wrote:

> 
> uhhhh che scomodo
> non conosco hg, ma è l'unico modo di lavorare su un branch?
> duplicare tutto?
> 

non ne ho idea :D io faccio così solo perchè è l'unico metodo che
conosco e non lo trovo così scomodo per ora....

> boh... comunque ti spiego come funziona git, hg non lo conosco bene
> 
> 
> io ho una directory con dentro tutti i miei file: working directory
> 
> al cui interno c'è una dir nascosta: .git che contiene tutto il repo e i
> file necessari a git
> 
> 

ok come hg

> git fa uno snapshot di ogni branch (fotografia della working directory /
> salvo file ignorati)
> 
> quando cambi branch git rende la working directory esattamente come era
> a quel commit, cambia i file e le directory contenute
> 
> quindi tu, senza copiare nulla, ti trovi nel nuovo branch e, se vuoi,
> puoi tornare a quello precedente
> 
> git checkout feature/foo
> git checkout master
> git checkout bugfix/bar
> ...
> 
> 
>>>> è così .... ??? perchè nn lo trovo molto comodo dover ricordarsi di
>>>> controllare in che branch si è in quel momento ....
>>>> magari mi sfugge qualcosa
> 
> l'interfaccia in genere ti dice dove ti trovi
> 
> da linea di comando io ho modificato un po' il bashrc secondo istruzioni
> di git stesso e mi scrive qualcosa come:
> 

ecco ma hai dovuto modificare il bashrc ... ok

però dico non è più comodo ad esempio avere una dir test una dir
ufficiale per esempio ??? usi i normali comandi shell ... e soprattutto
quello che mi interessa e che io con git usando i branch non posso avere
esempio vi aperto nel file pippo del branch master e su un altro vim
quello del branch develop ???

> mastro a mastroc3 ~/ws/.../android (feature/000500/new-ux-design *) $
>  
> 
> la parte tra parentesi tonde è il branch in cui mi trovo
> 
> l'asterisco che vedi mi dice che ho delle modifiche non committate
> 
> se ci fosse un + saprei che ho delle modifiche in stage ma non
> committate

capit

> 
>> il mio ide o la shell ??? in che senso ?? ma i branch sono directory ??
> 
> quello sopra è la shell, si ottiene con un piccolo script invocato in
> PS1
> 
> questo è in fondo al mio .bashrc
> 
> # git PS1 and pettry colors
> if [ -e /etc/bash_completion.d/git ] ; then
> 	GIT_PS1_SHOWDIRTYSTATE=true
> 	PS1='\[\033[00;34m\]\u\[\033[01;30m\]@\h\[\033[00;1m\] \w \[\033[00;36m
> \]$(__git_ps1 "(%s)") \[\033[00;34m\]\$\[\033[00m\] '
> fi
> 
> è la mia versione riadattata di quanto consiglia git, ha un po' di
> colori
> 
> la parte git è solo questa:
> $(__git_ps1 "(%s)")
> 
> io poi ci ho messo dei colori:
> 
> \u = nome utente (blu = 00;34m)
> @\h = @host (grigio scuro = 01;30m)
> \w = ~/..path/ (nero = 00;1m)
> $(__git_ps1 "(%s)") = info git su dove mi trovo, tra parentesi, vedi il
> "(%s)" (azzurro = 00;36m)
> \$ = $/# simbolo della shell (blu)
> 
> io uso quasi solo la shell ma se usi una qualunque altra interfaccia di
> comando ti dice dove sei
> 

ok

> 
>> se no non capisco
>>
>> io solitamente uso geany per programmare e shell per hg non ho un ide
>> che integra il tutto o robe di questo tipo ...
> 
> non conosco geany
> 
> io per uso Eclipse, di solito
> ho installato il plugin di Git su eclipse ma lo trovo ancora immaturo,
> mi viene comodo solo per vedere da Eclipse quali file ho modificato, poi
> faccio tutto da linea di comando per quel che riguarda la gestione di
> git
> 

vedi sopra problema di due file aperti...

> 
>> per favore spiegami come funziona fisicamente un nuovo branch sui file
>> locali ... che mi sfugge proprio ...
> 
> 
> ti spiego invece perché trovo comodo non dover cambiare directory:
> 
> nell'IDE ho già configurato tutto per funzionare sulla mia working
> directory
> 
> sto lavorando nel branch feature/123-sarcazzo
> 
> faccio un esperimento, smandruppo un po' il codice poi provo
> 
> mi rendo conto che potrebbe aver senso sviluppare tutto su un altro
> branch perché la cosa apre nuove prospettive ma impiegherei troppo
> tempo, devo prima finire la feature nel modo più veloce...
> 
> # creo un nuovo branch portandomi dietro le modifiche
> git checkout -b experiment/123-sarcazzo-better-design
> # committo tutto scrivendo nel commento di commit cosa sto provando
> git commit -a 
> 
> # quindi ritorno al branch di prima
> git checkout feature/123-sarcazzo
> 
> che ora non include più le modifiche del mio esperimento, ma io non le
> ho perse, sono nel branch experiment/...
> 
> 
> altro esempio:
> 
> sto sviluppando sempre la mia feature quando un bug urgente richiede di
> essere trattato
> 
> faccio subito commit di tutto ciò su cui stavo lavorando per non
> perderlo e poi...
> 
> git checkout -b bugfix/prod-bug tag-1.0.0
> 
> ho creato un branch a partire dal tag in produzione e ci sono entrato
> 
> ora sistemo il bug, commit e posso rilasciare direttamente il tag-1.0.1
> che era urgente
> 
> quindi riporto la fix nel mio branch di sviluppo per non perdermela per
> le prossime release
> 
> git checkout devel
> git merge bugfix/prod-bug
> 
> git push origin tag-1.0.1
> git push origin devel
> 
> ed infine ritorno a lavorare sulla mia feature
> 
> git checkout feature/...
> 
> 
> non ho mai dovuto cambiare directory o copiare file
> non ho mai dovuto riconfigurare il mio ambiente di lavoro perché la
> directory è rimasta la stessa
> 
> 
> ho dato solo i comandi che vedi qui e poi mi sono preoccupato di
> lavorare
> è git ha fatto tutto il resto
> 

si ma il punto sta che non puoi come dico sopra ... avere lo stesso file
di due branch aperto allo stesso momento ...

e comunque eclipse ok ... ma io uso geany non ha directory di lavoro o
simili, apri il file modifichi e finita li ... quindi ci metto di meno a
fare un cp cd che ricordare tutti i passaggi da un checkout all'altro e
tutti i comandi che hai dato, magari è solo questione di abitudine,
sicuramente torna utile
poter diciamo fermare il lavoro salvarlo continuare con il main, finire
e poi ricontinuare dove si era prima, e non so se è una caratteristica
che esiste solo in git o hg la ha uguale o simile sinceramente non so
... però la mia perplessità è quella che ti ho scritto qua sopra

-- 
Federico Pietta "Darkmagister"
http://www.darkmagister.org
http://www.webosphone.it
Linux Registered User: #425709

public gpg key: gpg --keyserver pgp.mit.edu --recv-key 65E45DEF



Maggiori informazioni sulla lista Linux