Administrera Git repos i Gerrit Code Review: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(28 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Denna artikel beskriver hur man administrerar Git repos i [http://code.google.com/p/gerrit/ 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. | Denna artikel beskriver hur man administrerar Git repos i [http://code.google.com/p/gerrit/ 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. | Gerrit kräver Java för att fungera. | ||
{{Note|Det är problematiskt att radera projekt, så välj rätt namn från början när du skapar projekt.}} | |||
== Installera Gerrit == | == Installera Gerrit == | ||
Line 7: | Line 9: | ||
{{Cmd|java -jar gerrit-full-2.5.war init -d review_site}} | {{Cmd|java -jar gerrit-full-2.5.war init -d review_site}} | ||
Vi kommer nu få svara på en massa installationsfrågor. | Vi kommer nu få svara på en massa installationsfrågor. Vi kommer välja att använda en PostgreSQL databas och autentisera via LDAP. Vill du snabbt komma igång att testa Gerrit, välj då istället en H2 databas och "autentisering" via development_become_any_account. | ||
{{ | Skapa först PostgreSQL användaren och databasen: | ||
{{Cmd|createuser -A -D -P -E -R gerrit|createdb -E UTF-8 -O gerrit2 reviewdb}} | |||
{{Bc|1= | {{Bc|1= | ||
Line 25: | Line 28: | ||
*** | *** | ||
Database server type [H2/?]: | Database server type [H2/?]: postgresql | ||
Server hostname [localhost]: | |||
Server port [(POSTGRESQL default)]: | |||
Database name [reviewdb]: | |||
Database username [gerrit]: | |||
gerrit's password : | |||
confirm password : | |||
*** User Authentication | *** User Authentication | ||
*** | *** | ||
Authentication method [OPENID/?]: | Authentication method [OPENID/?]: ldap | ||
LDAP server [ldap://localhost]: | |||
LDAP username : cn=Manager,dc=example,dc=com | |||
cn=Manager,dc=example,dc=com's password : | |||
confirm password : | |||
Account BaseDN : ou=People,dc=example,dc=com | |||
Group BaseDN [ou=People,dc=example,dc=com]: ou=Group,dc=example,dc=com | |||
*** Email Delivery | *** Email Delivery | ||
Line 44: | Line 59: | ||
Run as [gerrit]: | Run as [gerrit]: | ||
Java runtime [/usr/local | Java runtime [/usr/local]: | ||
Copy gerrit.war to /home/gerrit/review_site/bin/gerrit.war [Y/n]? | Copy gerrit.war to /home/gerrit/review_site/bin/gerrit.war [Y/n]? | ||
Copying gerrit.war to /home/gerrit/review_site/bin/gerrit.war | Copying gerrit.war to /home/gerrit/review_site/bin/gerrit.war | ||
Line 66: | Line 81: | ||
Behind reverse proxy [y/N]? | Behind reverse proxy [y/N]? | ||
Use SSL (https://) [y/N]? | Use SSL (<nowiki>https://</nowiki>) [y/N]? | ||
Listen on address [*]: | Listen on address [*]: | ||
Listen on port [8080]: | Listen on port [8080]: | ||
Line 83: | Line 98: | ||
Verifiera att Gerrit är uppe genom att t.ex. starta en webbrowser och gå till http://hostname:8080. | Verifiera att Gerrit är uppe genom att t.ex. starta en webbrowser och gå till http://hostname:8080. | ||
=== Kompletterande konfigurering === | |||
Om du har problem vid login samt att namnen inte visas korrekt, lägg till följande rader i gerrit.config: | |||
{{Bc|1= | |||
[gerrit] | |||
canonicalWebUrl = http://example.com:8080/ | |||
[ldap] | |||
accountFullName = cn | |||
}} | |||
== Skapa användare och projekt i Gerrit == | == 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 {{Ic|ssh-keygen -t rsa}}. Din publika nyckel hamnar i filen ~/.ssh/id_rsa.pub. | 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 {{Ic|ssh-keygen -t rsa}}. Din publika nyckel hamnar i filen ~/.ssh/id_rsa.pub. Det är hela innehållet i denna fil som du ska ladda upp till Gerrit. | ||
Det första kontot du skapar när man kör med development_become_any_account blir även administratör i Gerrit. | Det första kontot du skapar när man kör med development_become_any_account blir även administratör i Gerrit. | ||
Line 99: | Line 123: | ||
{{Note|För att kunna tagga m.m. kommer det att behövas mer rättigheter.}} | {{Note|För att kunna tagga m.m. kommer det att behövas mer rättigheter.}} | ||
== Klona projekt och pusha | === Skapa projekt via kommandoraden === | ||
Klona | För att skapa ett projekt som heter linux, ärver rättigheter från ett projekt som heter private, har en tom initial commit och en beskrivning som är "Linux kernel configuration", kör kommandot: | ||
{{Cmd|git clone ssh://user | {{Cmd|ssh -p 29418 <host> gerrit create-project --name linux --parent private --empty-commit --description "'Linux kernel configuration'"}} | ||
{{Cmd|cd HelloWorld| | == Klona projekt och pusha ändring == | ||
touch README| | Logga in som en användare som har ett konto i Gerrit och som har laddat upp sin publika nyckel. Klona sedan HelloWorld projektet: | ||
git add README| | {{Cmd|git clone ssh://user@hostname:29418/HelloWorld.git}} | ||
git commit -m "Added | Gå till repot och kör: | ||
{{Cmd|cd HelloWorld|touch README|git add README|git commit -m "Added README file"}} | |||
Pusha nu tillbaka ändringarna till Gerrit och master branchen: | |||
{{Cmd|git push origin master}} | |||
== Pusha en branch == | |||
Klona HelloWorld projektet och committa en ändring till en lokal branch som vi kallar test: | |||
{{Cmd|git clone ssh://user@hostname:29418/HelloWorld.git}} | |||
Gå till repot och kör: | |||
{{Cmd|git checkout -b test|touch main.c|git add README|git commit -m "Added main.c file"}} | |||
Pusha nu ändringen och branchen till Gerrit: | |||
{{Cmd|git push --set-upstream origin test}} | |||
{{Bc|1= | |||
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: | |||
{{Cmd|git clone ssh://user@hostname:29418/HelloWorld.git}} | |||
Gå till repot och kör: | |||
{{Cmd|git tag v1|git push --tags}} | |||
{{Bc|1= | |||
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 | |||
}} | |||
== Pusha 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: | |||
{{Cmd|git tag -a -m "Annotated tag" v2|git push --tags}} | |||
Gerrit kommer nu vägra oss att pusha tagen till repot. Vi behöver lägga till följande rättighet: | |||
[[Image:Gerrit_code_review-3.png]] | |||
När detta är gjort, kör om kommandot: | |||
{{Cmd|git push --tags}} | |||
[[Category: | [[Category:Guide]] |
Latest revision as of 11:52, 21 April 2013
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 för att fungera.
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:
Vi kommer nu få svara på en massa installationsfrågor. Vi kommer välja att använda en PostgreSQL databas och autentisera via LDAP. Vill du snabbt komma igång att testa Gerrit, välj då istället en H2 databas och "autentisering" via development_become_any_account.
Skapa först PostgreSQL användaren och databasen:
*** 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/?]: postgresql Server hostname [localhost]: Server port [(POSTGRESQL default)]: Database name [reviewdb]: Database username [gerrit]: gerrit's password : confirm password : *** User Authentication *** Authentication method [OPENID/?]: ldap LDAP server [ldap://localhost]: LDAP username : cn=Manager,dc=example,dc=com cn=Manager,dc=example,dc=com's password : confirm password : Account BaseDN : ou=People,dc=example,dc=com Group BaseDN [ou=People,dc=example,dc=com]: ou=Group,dc=example,dc=com *** 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.
Kompletterande konfigurering
Om du har problem vid login samt att namnen inte visas korrekt, lägg till följande rader i gerrit.config:
[gerrit] canonicalWebUrl = http://example.com:8080/ [ldap] accountFullName = cn
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 är hela innehållet i denna fil som du ska ladda upp till Gerrit.
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:
Skapa projekt via kommandoraden
För att skapa ett projekt som heter linux, ärver rättigheter från ett projekt som heter private, har en tom initial commit och en beskrivning som är "Linux kernel configuration", kör kommandot:
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:
Pusha nu tillbaka ändringarna till Gerrit och master branchen:
Pusha en branch
Klona HelloWorld projektet och committa en ändring till en lokal branch som vi kallar test:
Gå till repot och kör:
Pusha nu ändringen och branchen till Gerrit:
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:
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
Pusha 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:
Gerrit kommer nu vägra oss att pusha tagen till repot. Vi behöver lägga till följande rättighet:
När detta är gjort, kör om kommandot: