[Linux-Biella] Git server

Paolo Ciarrocchi paolo.ciarrocchi a gmail.com
Lun 17 Nov 2008 10:14:03 CET


On Mon, Nov 17, 2008 at 9:28 AM, Daniele <daniele.bilug a gmail.com> wrote:
> 2008/11/16 Paolo Ciarrocchi <paolo.ciarrocchi a gmail.com>:
>> Non so cosa sia. Conosco solo www.github.com che è un hoster di repository git.
>> Io con win uso questo:
>> http://code.google.com/p/msysgit/downloads/list
>
> ups
> si..
> era questo che ho usato (sorry per l'inesattezza)
> non ho fatto direttamente io
>
>>>>> con le gui però non riesco a farlo funzionare (almeno da macchina window)
>> Ehi, dimmi qualcosa in piu :-)
>> Che problema hai con git gui?
>
>
> a parte che non è per nulla intuitivo?

Non concordo.

> come imposto qual'è il repositosy da usare?

Ah... git gui nasce per lavorare nel *tuo* repository, lo invochi dal
tuo repository.

> come gli imposto a quale ip/host collegarsi?
> e come gli dico l'utente da usare e la chiave ssh?
> e la porta personalizzata?

Su questo e' ancora carente, e' molto migliorato nella versione di sviluppo.

> quindi...
> se voglio visualizzare le differenze tra repository locale e remoto?

Questo te l'ho spiegato sotto.

>> gitk serve per visualizzare la storia di un repository, serve per
>> visualizzare i commit, le interazioni con altri repository.
>> Non serve per fare modiche.
>
> ok
>
>>> che altra info posso darti?
>>> ho un server ssh su una porta non standard, es. 12345 (una vale l'altra)
>>> server ssh che autentica solo ed esclusivamente tramite chiavi ssh
>>
>> OK. come provi a connetterti da win?
>
> l'ideale sarebbe con un plugin interno a eclipse
> secondariamente con una gui
>
> per ora mi connetto usando msysgit da linea di comando

Faccio anche io cosi.

>> Tu sotto mi hai fatto un esempio di lavoro in locale.
>> Assolutamente corretto.
>
> ma non hai detto che push non va usato?

No, ho detto che *io* non lo uso.

Per progare le modifhce che hai fatto in locale verso un repository
remote puoi fare:
push
o loggarti sulla macchina remota e fare "pull".

Dipende da come organizzi il lavoro *distribuito*

>> Poi ti sei chiesto come fare a vedere le modifiche fatte da un'altra
>> persona in un altro repository, sbaglio?
>
> no
> da un'altra persona nello stesso repository
> se devo committare una modifica prima di farlo devo vedere cos'hanno
> fatto gli altri e risolvere eventuali conflitti

Non ti seguo molto. Credo non ti sia molto chiara la differenza tra
distribuito e centralizzato.
Non ragionare come se stessi usando CVS/SVN.
HG, GIT e DARCS usano un approccio completamente diverso.

Le modifiche nel tuo repository si "navigano" con git log oppure con
gitk (graficamente) o con gitweb etc etc.

> (non ho ancora guardato i link che mi hai dato)

Credo capirai molto leggendoli :-)

>> La finestra principale e' l'equivalente di git commit :-)
>
> allora non ho capito
>
> il commit, da quel che avevo capito, è un commit sul proprio
> repository in locale

Si.

> è il push che poi va a "spingere" quel commit sul repository remoto
>
> ovviamente non è così

E' cosi.
E il push lo puoi fare anche da git gui.

> ma il push crea automaticamente un'altra revision?

Ieppa.

>> Prova quanto segue:
>>
>> ----
>> Paolo a CASA ~
>> $ mkdir daniele
>>
>> Paolo a CASA ~
>> $ cd daniele/
>>
>> Paolo a CASA ~/daniele
>> $ git init
>> Initialized empty Git repository in c:/Documents and Settings/Paolo/daniele/.git
>> /
>>
>> Paolo a CASA ~/daniele
>> $ touch file.txt
>>
>> Paolo a CASA ~/daniele
>> $ git add file.txt
>>
>> Paolo a CASA ~/daniele
>> $ git commit -a -m "Primo commit"
>> Created initial commit f9dee78: Primo commit
>>  0 files changed, 0 insertions(+), 0 deletions(-)
>>  create mode 100644 file.txt
>>
>> Paolo a CASA ~/daniele
>> $ echo "Guarda cosa succede ora Daniele :-)" >> file.txt
>>
>> Paolo a CASA ~/daniele
>> $ git gui
>> ----
>>
>> Seleziona file.txt  e vedrai nella finestra in alto il contenuto della
>> patch, in quella in basso andrai a scrivere il messaggio di log
>> (equivalenete di git commit -m "messaggio di log").
>> Chiaro?
>
> appena torno a casa provo

Fammi poi sapere.

>>> fetch che fa?
>>
>> Sincronizza il tuo db con uno remoto senza aggiornare la working directory.
>
> hum
> credo che la cosa non mi sia molto chiara
> sincronizza la directory .git con quella remota senza agire sui file locali?

Si.

> questo cosa mi permette di fare?

Di vedere in cosa differisce il repo remoto rispetto a quello locale.

Devi imparare a ragionare in ottica "distribuita".

>> Si, ti ho fatto un esempio in qui ti mostro come vedere il lavoro
>> fatto da un'altra persona su un'altro repository.
>
> intendi da un'altra persona sullo STESSO repo? :)

No. il secondo utente lavora sul *suo* repo, poi tu ne acquisi le
modifiche via fetch e le ispezioni prima di farne un eventuale merge.

>> Non credo che git gui abbia integrato il fetch, sicrumante puoi fare push.
>
> ancora non capisco
> tu hai detto che non fai mai il push
> cosa va fatto al suo posto? e perché?

Vedi sopra.

>> Ma il tutto è molto semplice:
>> git fetch repository remoto
>> gitk HEAD..FETCH_HEAD
>
> quest'ultimo comando che significato ha?
> (cosa fa ok... ma HEAD..FETCH_HEAD che significato ha?)

ti visualizza la differenza tra la tua ultima modifica (HEAD) e quanto
fatto dall'altro utente.
Il fetch ti crea un nuovo "head" chiamato "fetch_head".

>> Esite pero' un plugin git per eclipse (sviluppato ora da Google).
>
> hum si l'ho visto
> però installarlo non è propriamente semplice per il momento....
> e la documentazione per riuscirci è piuttosto carente :)
> appena riesco a installarlo sul pc windows che ci deve lavorare lo provo

Qui non ti so pero' aiutare.

Per dubbi:
git a vger.kernel.org dove probabilmente ti rispondera' Shawn O. Pearce di Google.


Il tuo problema pero' e' che non ti e' ben chiara la differenza tra
VCS centralizzato e remoto.

Ciao,
-- 
Paolo
http://paolo.ciarrocchi.googlepages.com/


Maggiori informazioni sulla lista Linux