Servei Git

RDlab@lsi.upc.edu
Novembre 2013

català Benvinguts a LSI.

  1. Introducció
  2. Accés al servei
  3. Requisits
  4. Configuració inicial del projecte
  5. Modificacions al projecte
  6. Desar canvis en revisió local
  7. Enviar canvis al servidor git­-rdlab
  8. Enllaços d’interès

1. Introducció

A continuació es mostrarà com accedir al servei de repositoris Git del RDlab, i com realitzar les tasques principals en mode text (per línia de comandes).

2. Accés al servei

Per tal de tenir accés al servei cal demanar al RDlab un nom d'usuari (en endavant, <username>) i una contrasenya (<password>). També es pot demanar nom per al repositori (en endavant <repositori>) que si no es demana tindrà per defecte el nom d’usuari. Aquests es poden demanar via web a http://rdlab.lsi.upc.edu/index.php/ca/serveis/solicitaracces.html o mitjançant un correu electrònic a rdlab@lsi.upc.edu.

Un cop rebuts, l'usuari ja disposa d'un repositori per als seus projectes. Aquest repositori s’inicialitza des de RDlab amb un arxiu “readme.rdlab”.

Al repositori s’hi accedeix mitjançant el client de git i la URL http://git-rdlab.lsi.upc.edu/git/<repositori>.git

2.1 Accés https

També està disponible l’accés segur mitjançant la URL:

https://git-rdlab.lsi.upc.edu/git/<repositori>.git

En cas de trobar el següent error:

error: server certificate verification failed.
CAfile: /etc/ssl/certs/ca-certificates.crt
CRLfile: none while accessing https://git-rdlab.lsi.upc.edu/git/<repositori>.git/info/refs
fatal: HTTP request failed

Cal executar la següent comanda:

git config --global http.sslverify "false"

3. Requisits

IMPORTANT: Per utilitzar el servei Git del RDlab és obligatori tenir instal·lada la versió del client de Git 1.6.6 o superior.

La versió instal·lada de Git es pot consultar amb la comanda “git --version”.

4. Configuració inicial del projecte

El primer pas és configurar el projecte a l’ordinador de l’usuari. Per això s’ha de crear una carpeta destinada a allotjar una còpia del projecte que es sincronitzarà amb el servidor “git-rdlab”. Per al nostre exemple suposem que és la carpeta “/home/user/elMeuProjecte”. Des d’aquesta carpeta s’ha de fer una primera importació del projecte que hi ha al servidor “git-rdlab” mitjançant la comanda “git clone”:

$ git clone http[s]://<username>@git-rdlab.lsi.upc.edu/git/<repositori>.git

El sistema demanarà la contrasenya i tot seguit mostrarà una sortida com la següent:

Initialized empty Git repository in home/user/elMeuProjecte/<repositori>/.git

Amb aquesta comanda s’haurà creat una carpeta amb el nom <repositori> dins la qual trobarem un arxiu “readme.rdlab” i una carpeta “.git” que conté la informació que utilitza Git per al control de versions.

Nota: una opció per no haver d’indicar l’usuari i contrasenya a les comandes “git commit” i “git push” (veure apartat 7) és editar l’arxiu “.netrc” del directori “home” de l’usuari (si no existeix s’ha de crear) i incloure les següents línies:

Machine git-rdlab.lsi.upc.edu
login <username>
password <password>

En aquest cas la comanda seria:

$git clone http1://git-rdlab.lsi.upc.edu/git/<repositori>.git

I el sistema no demanarà la contrasenya.

5. Modificacions al projecte

Quan es fan modificacions en arxius del projecte, es copien o s’afegeixen nous arxius, cal indicar a Git que els ha d’incloure al conjunt d’arxius sota revisió.

Per fer-ho s’utilitza la comanda “git add <nom d’arxiu>” o “git add .” per incloure tots els arxius. Suposem que hem afegit un arxiu “HolaMon.java”:

$ git add HolaMon.java

6. Desar canvis en revisió local

Amb la comanda “git commit” es crea una nova revisió local. És obligatori incloure un comentari. Si no ho fem utilitzant l’opció “-m”, el programa ens obrirà l’editor de text per defecte per afegir-ne un:

$ git commit –m “afegit HolaMon.java”

El sistema mostrarà una sortida com la següent:

[master 506ac89] Afegit HolaMon.java
Committer: user <user@lsi.upc.edu> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly:

git config --global user.name "Your Name"
git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

git commit --amend --author='Your Name <you@example.com>'

1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 HolaMon.java

Nota: A diferència de svn, el fet de modificar un arxiu no implica que automàticament s’inclogui en el proper commit: és necessari executar la comada “git add” (veure apartat 5) també en aquest cas.

Una alternativa és utilitzar la comanda “git commit -a” que és equivalent a fer la seqüència de comandes “git add” i “git commit”. Aquesta comanda només funciona per fer commit de els arxius modificats, no dels afegits nous.

Per saber quins canvis es desaran el proper cop que fem un commit podem executar la crida “git status”, que ens informarà de quins arxius s’inclouran en la propera revisió i quins s’ignoraran.

7. Enviar canvis al servidor git­-rdlab

La crida “git commit” només crea una revisió local. Per pujar els canvis de la darrera revisió local al servidor “git-rdlab” cal utilitzar la comanda “git push”:

$ git push

Nota: només es pujaran al servidor els arxius que s’hagin actualitzat amb la darrera comanda “git commit”.

El sistema mostrarà una sortida com la següent:

Fetching remote heads...
   refs/
   refs/heads/
   refs/tags/
   updating 'refs/heads/master'
     from b6a55fa54e77b5c9aa56eb1ad9ea60d4cad2b1ee
     to 506ac89f2e9a66178e4b3d4471c9e3d97770cb97
sending 3 objects
   done
   Updating remote server info
   To http://git-rdlab.lsi.upc.edu/git/<repositori> b6a55fa..506ac89 master ->
master

Si el sistema mostra el següent error:

error: The requested URL returned error: 401 while accessing http://git- rdlab.lsi.upc.edu/git/<repositori>/info/refs

cal comprovar que hem introduït les credencials (usuari i password) correctament, ja sigui per línia de comandes o bé en l’arxiu “.netrc”, tal com s’indica a l’apartat 4.

8. Enllaços d’interès

  1. Git, pàgina oficial
    http://git-scm.com/
  2. Llibre on-line “Pro Git professional version control”
    http://progit.org/book/