[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