Administrera Git repos i Gerrit Code Review

From Peters wiki
Jump to navigation Jump to search

Denna artikel beskriver hur man administrerar Git repos i Gerrit Code Review. Den är OS-neutral och bör även fungera för olika Linux distributioner. Det som skiljer alla olika system är hur man startar Gerrit tjänsten vid start. Det tar denna guide inte upp. Sök efter Gerrit paket för respektive system. Dessa brukar även innehålla startskript m.m. Denna guide tar inte heller upp själva granskningsprocessen i Gerrit. Utan vi kommer öppna upp för push m.m. direkt till master och andra brancher.

Gerrit kräver Java.

Installera Gerrit

Skapa en användare på systemet som heter gerrit. Logga in som gerrit och ladda ner senaste Gerrit releasen (i detta exempel gerrit-full-2.5.war). Installera Gerrit under en katalog som vi döper till review_site:

user $ java -jar gerrit-full-2.5.war init -d review_site

Vi kommer nu få svara på en massa installationsfrågor.


Notering: Vi här väljer öppen "autentisering", dvs vem som helst kan skapa nya konton och logga in som vem som helst. Ett bättre och säkrare alternativ måste väljas, t.ex. LDAP, om Gerrit ska vara öppen mot internet.


*** Gerrit Code Review 2.5
***

Create '/home/gerrit/review_site' [Y/n]? y

*** Git Repositories
***

Location of Git repositories   [git]:

*** SQL Database
***

Database server type           [H2/?]:

*** User Authentication
***

Authentication method          [OPENID/?]: development_become_any_account

*** Email Delivery
***

SMTP server hostname           [localhost]:
SMTP server port               [(default)]:
SMTP encryption                [NONE/?]:
SMTP username                  :

*** Container Process
***

Run as                         [gerrit]:
Java runtime                   [/usr/local]:
Copy gerrit.war to /home/gerrit/review_site/bin/gerrit.war [Y/n]?
Copying gerrit.war to /home/gerrit/review_site/bin/gerrit.war

*** SSH Daemon
***

Listen on address              [*]:
Listen on port                 [29418]:

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]?
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OK
Checksum bcprov-jdk16-144.jar OK
Generating SSH host key ... rsa... dsa... done

*** HTTP Daemon
***

Behind reverse proxy           [y/N]?
Use SSL (https://)             [y/N]?
Listen on address              [*]:
Listen on port                 [8080]:

*** Plugins
***

Prompt to install core plugins [y/N]?

Initialized /home/gerrit/review_site
Executing /home/gerrit/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server to start ... OK
Opening browser ...

Verifiera att Gerrit är uppe genom att t.ex. starta en webbrowser och gå till http://hostname:8080.

Skapa användare och projekt i Gerrit

Starta en webbrowser och gå till http://hostname:8080. Klicka på Become uppe till höger. Klicka på New Account under Register. Ange namn och epost-adress och ett unikt användarnamn. Gerrit använder SSH och nyckelpar, så för att kunna klona och pusha över SSH måste du ladda upp din publika SSH-nyckel. Om du inte har ett nyckelpar kan du skapa ett via kommandot ssh-keygen -t rsa. Din publika nyckel hamnar i filen ~/.ssh/id_rsa.pub.

Det första kontot du skapar när man kör med development_become_any_account blir även administratör i Gerrit.

Skapa ett HelloWorld projekt i Gerrit genom att klicka på Projects => Create New Project. Ange sedan följande:

Klicka sen på Create Project. Om man vill skapa flera projekt med samma rättigheter, utnyttjar man med fördel Gerrits stöd att projekt kan baseras på andra projekt. För att få möjlighet att skapa brancher och pusha direkt till master branchen m.m. gå till All-Projects och Access. Klicka på Edit och ändra så du har följande:


Notering: För att kunna tagga m.m. kommer det att behövas mer rättigheter.


Klona projekt och pusha ändring

Logga in som en användare som har ett konto i Gerrit och som har laddat upp sin publika nyckel. Klona sedan HelloWorld projektet:

Gå till repot och kör:

user $ cd HelloWorld
user $
touch README
user $
git add README
user $
git commit -m "Added README file"

Pusha nu tillbaka ändringarna till Gerrit och master branchen:

user $ git push origin master

Pusha en branch

Klona HelloWorld projektet och committa en ändring till en lokal branch som vi kallar test:

Gå till repot och kör:

user $ git checkout -b test
user $
touch main.c
user $
git add README
user $
git commit -m "Added main.c file

Pusha nu ändringen och branchen till Gerrit:

user $ git push --set-upstream origin test
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 250 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://user@host:29418/HelloWorld.git
 * [new branch]      test -> test
Branch test set up to track remote branch test from origin.

Tack vare Create Reference rättigheten på refs/* får vi pusha upp brancher till Gerrit.

Pusha en tag

Klona HelloWorld projektet:

Gå till repot och kör:

user $ git tag v1
user $
git push --tags
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://peter@192.168.0.115:29418/HelloWorld.git
 * [new tag]         v1 -> v1

Push en annotaterad tag

Taggen vi pushade i föregående kapitel, är en lättvikts tag. Den saknar information om vem och när man taggade. För att skapa en annoterad tag, kör kommandot:

user $ git tag -a -m "Annotated tag" v2
user $
git push --tags

Gerrit kommer nu vägra oss att pusha tagen till repot. Vi behöver lägga till följande rättighet: