Hg

Page last edited 1 832 giorni 12 ore fa
Da wiki.betaingegneria.it.

[Category:Software]

Mercurial Hg[modifica]

Creare un repository[modifica]

Possiamo creare, a scelta, un solo repository e metterci dentro le cartelle, oppure creare un repository diverso in ogni cartella che vogliamo versionare.

In questo secondo caso posizioniamoci un livello sopra la cartella che vogliamo versionare (se non c'è, hg la creerà)

  $ cd Documenti/clienti/ComunePd/2012/acsor/code
  $ hg init sinapsi

Questo comando crea una directory .hg dentro la cartella code/sinapsi. dentro ad .hg ci sono dei file e delle cartelle che sono descritti più avanti in questo wiki. E' tutto.

Verificare lo stato del repository[modifica]

Lo stato del repository si definisce come la differenza tra i file attualmente presenti nella directory e quelli registrati nello storico. La differenza può riguardare

  • i file che ci sono nella directory ma non nel repository (file da aggiungere)
  • i file che ci sono sia nella directory e anche nello storico, ma in versioni diverse
  • i file che ci sono in storico ma non ci sono più nella directory

I file da aggiungere sono marcati con ? da Hg, mentre quelli modificati sono marcati con M. Quelli che sono stati cancellati vengono marcati con D.

Come aggiungere i file nuovi al repository[modifica]

Normalmente si creano o si aggiungono nuovi file al progetto, nel qual caso bisogna aggiungerli al repository;

 marcob@jsbach:/var/www/mycal$ hg add
 aggiunta in corso di .hgignore
 aggiunta in corso di math.php
 aggiunta in corso di month.php
 aggiunta in corso di prova.php
 aggiunta in corso di week.php

In questo caso li ho aggiunti. Se riprovo a vedere lo stato del repository ora i file sono passati da ? a A:

 marcob@jsbach:/var/www/mycal$ hg status
 M calendar.php
 M index.php
 M mycal.php
 M stile1.css
 A .hgignore
 A math.php
 A month.php
 A prova.php
 A week.php

La storicizzazione avviene usando il comando commit

Problemi al commit[modifica]

Mi è capitato di eseguire questo comando

 hg ci

e di vedermi ritornare un errore

no username supplied

alla fine la soluzione 'ho trovata nell'help della interfaccia web!!!

  • fare partire il server
 hg serve
 in ascolto su [1] (limitato a *:8000)
  • leggo la sintassi corretta dalla pagina web
  • da console eseguo
 hg commit -u marcob

funziona!

Come ignorare determinati tipi di file[modifica]

creare nella direcory di lavoro, accanto alla cartella .hg, un file .hgignore e elencare i pattern da ignorare. Io per esempio ho listato qui dentro i pattern relativi ai file di backup prodotti dai vari editor:

 syntax: glob
 
 *~
 *.bak


Si possono usare anche le espressioni regolari:

 syntax: regexp
 ^\.pc/

[2]

Come estrarre i sorgenti in un tarball alla versione voluta[modifica]

Posizionarsi nella cartella da estrarre e

  $ hg archive -t tgz /home/marcob/mycal.tgz

questo estrae la testa, cioè la versione più recente; per estrarre versioni più vecchie aggiungere il parametro -rev=x.y con x.y= versione che si vuole estrarre. Per non estrarre anche i file di configurazione hg (.hg, .hgignore) aggiungere l'opzione -X ".hg*"

Come aggiungere un tag ad una revisione[modifica]

Posizionarsi nella cartella e esaminare la storia

  marcob@jsbach:/var/www/ulss16/extra-dev/openadm$ hg history 
  changeset:   1:4d167e287f19
  tag:         tip
  utente:      marcob
  data:        Tue Jan 08 11:52:56 2013 +0100
  sommario:    prototipo presentato a Paolo
  changeset:   0:0d483a239701
  utente:      marcob
  data:        Mon Jan 07 13:35:37 2013 +0100
  sommario:    importazione iniziale


decido di taggare la revisione 1 (changeset: 1:4d167e287f19):

  marcob@jsbach:/var/www/ulss16/extra-dev/openadm$ hg tag -r 1 v0.1