#author("2018-05-06T17:46:40+09:00","","")
#author("2018-05-06T17:50:29+09:00","","")
#nofollow
#norelated
総数:&counter(total); 今日:&counter(today); 昨日:&counter(yesterday);

* もくじ [#z10a77dd]

#contents

* ''JDK8のインストール'' [#t6137b40]
-JDK8をインストールする。
 ~$ sudo apt-get update
 ~$ sudo apt-get -y install openjdk-8-jdk

 gerrit@ubdt16044:~$ which java
 /usr/bin/java
 gerrit@ubdt16044:~$ ls -la /usr/bin/java
 lrwxrwxrwx 1 root root 22  5月  5 12:28 /usr/bin/java -> /etc/alternatives/java
 gerrit@ubdt16044:~$ ls -la /etc/alternatives/java
 lrwxrwxrwx 1 root root 46  5月  5 12:28 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
 gerrit@ubdt16044:~$ ls -la /usr/lib/jvm/java-8-openjdk-amd64//jre/bin/java 
 -rwxr-xr-x 1 root root 6464  3月 14 21:58 /usr/lib/jvm/java-8-openjdk-amd64//jre/bin/java

-複数のJDKを切り替えたい場合は下記で設定する。
 ~$ sudo update-alternatives --config java
 ~$ sudo update-alternatives --config javac

*Configure Java for Strong Cryptography [#x5f463e6]
参考URL
https://gerrit-documentation.storage.googleapis.com/Documentation/2.15.1/install.html#cryptography

しかしopenjdk8の場合は不要

**Openjdk comes already installed with JCE [#t2c88bd3]
-A quick test to see if you have the JCE Unlimited Strength Jurisdiction Policy files installed:
 /usr/lib/jvm/java-8-openjdk-amd64/bin/jrunscript -e 'print (javax.crypto.Cipher.getMaxAllowedKeyLength("RC5") >= 256);'

実行結果は・・・
 true


ここからの記載の参考url
[[Ubuntu 16.04: GerritとJenkinsでコードレビュー環境を構築する>https://www.hiroom2.com/2016/07/28/ubuntu-16-04-gerrit%E3%81%A8jenkins%E3%81%A7%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B/]]

*gerritサーバ側の設定 [#j90aa26f]
Ubuntu 16.04でgerritサーバを動作させる為の設定を記載します。

**gerritパッケージのインストール(apt-getで) [#vc221ad2]
***パッケージソースのリストに gerrit の repository を追加する。 [#g86c88e8]
 ~$ sudo su -c 'echo "deb mirror://mirrorlist.gerritforge.com/deb gerrit contrib" > /etc/apt/sources.list.d/gerritforge.list'

-確認
 ~$ cat /etc/apt/sources.list.d/gerritforge.list
 deb mirror://mirrorlist.gerritforge.com/deb gerrit contrib

***認証する鍵情報をローカルキーチェーンに取り込んでおく [#k070d5f2]
Ubuntu公式以外のリポジトリからパッケージを取得するためには、そのリポジトリを認証する鍵情報をapt-keyコマンドでローカルキーチェーンに取り込んでおく必要があります。&br;

 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1871F775

 Executing: /tmp/tmp.LlR3JDAzXm/gpg.1.sh --keyserver
 keyserver.ubuntu.com
 --recv-keys
 1871F775
 gpg: 鍵1871F775をhkpからサーバkeyserver.ubuntu.comに要求
 gpg: 鍵1871F775: 公開鍵"GerritForge <info@gerritforge.com>"をインポートしました
 gpg: 処理数の合計: 1
 gpg:               インポート: 1  (RSA: 1)

Proxy配下からだと上手く動きません。&br;
このような場合、下記のように、--keyserver-optionを使うと幸せになれます。
 --keyserver-option http-proxy=http://<アカウント>:<パスワード>@プロキシサーバ:ポート
例:
 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --keyserver-option http-proxy=http://<アカウント>:<パスワード>@プロキシサーバ:ポート --recv-keys 1871F775

***パッケージリストを更新する [#s4781e30]
 $ sudo apt-get update -y

 ヒット:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
 ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease                                                        
 ヒット:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease                                                      
 ヒット:4 http://security.ubuntu.com/ubuntu xenial-security InRelease                           
 無視:5 mirror://mirrorlist.gerritforge.com/deb gerrit InRelease                                
 取得:6 mirror://mirrorlist.gerritforge.com/deb gerrit Release [1,475 B]
 取得:7 mirror://mirrorlist.gerritforge.com/deb gerrit Release.gpg [473 B]
 取得:8 mirror://mirrorlist.gerritforge.com/deb gerrit/contrib amd64 Packages [33.9 kB]
 取得:9 mirror://mirrorlist.gerritforge.com/deb gerrit/contrib i386 Packages [33.9 kB]
 69.8 kB を 4秒 で取得しました (15.1 kB/s)
 パッケージリストを読み込んでいます... 完了
 W: mirror://mirrorlist.gerritforge.com/deb/dists/gerrit/Release.gpg: 鍵 F0E24DA66FFAA737081E5A7E1FFFAA5E1871F775 による署名は弱い digest アルゴリズム (SHA1) を使用しています

***インストールする。 [#p785c4d9]
 $ sudo apt-get install -y gerrit

 パッケージリストを読み込んでいます... 完了
 依存関係ツリーを作成しています                
 状態情報を読み取っています... 完了
 以下のパッケージが新たにインストールされます:
   gerrit
 アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 96 個。
 89.1 MB のアーカイブを取得する必要があります。
 この操作後に追加で 89.3 MB のディスク容量が消費されます。
 取得:1 mirror://mirrorlist.gerritforge.com/deb gerrit/contrib amd64 gerrit all 2.15.1-1 [89.1 MB]
 89.1 MB を 33秒 で取得しました (2,622 kB/s)                                                                                   
 以前に未選択のパッケージ gerrit を選択しています。
 (データベースを読み込んでいます ... 現在 229288 個のファイルとディレクトリがインストールされています。)
 .../gerrit_2.15.1-1_all.deb を展開する準備をしています ...
 Checking Java version ... 1.8.0
 gerrit (2.15.1-1) を展開しています...
 gerrit (2.15.1-1) を設定しています ...
 
 Initialising Gerrit site ... DONE
 Setting user/group owner ... DONE
 Creating symlinks .......... DONE
 
 Installation completed
 
 Starting Gerrit Code Review: OK
 To start using Gerrit, open: http://ubdt16044:8080/

***サービス自動起動有効 [#va1b4f9a]
 $ sudo systemctl enable gerrit

 gerrit.service is not a native service, redirecting to systemd-sysv-install
 Executing /lib/systemd/systemd-sysv-install enable gerrit

***サービス起動 [#h3cdff70]
 $ sudo systemctl start gerrit

 Job for gerrit.service failed because the control process exited with error code.
 See "systemctl status gerrit.service" and "journalctl -xe" for details.

あれ、失敗する・・・では ubuntu自体を一度再起動してから再挑戦・・・
 $ sudo systemctl start gerrit

**確認 [#mbb0d4b0]
ブラウザから以下のURLにアクセスすることでgerritに接続できます。
 http://<srver>:8080/

例: http://192.168.3.25:8080/
例: http://ubdt16044:8080/

**TCPポートの変更 [#fc3e2ef4]
デフォルトのポートは8080です。他のサービスと重複する場合は以下のように変更します。&br;

なお、canonical&#x57;eb&#x55;rlのドメイン名はページ遷移で使われるので、外部からアクセスできるものにしてください。&br;
IPアドレスでも良いです。デフォルトだとドメイン名はホスト名が設定されています。&br;

 ~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
 --- /etc/gerrit/gerrit.config.org	2018-05-05 15:40:47.447992597 +0900
 +++ /etc/gerrit/gerrit.config	2018-05-05 16:48:20.334216036 +0900
 @@ -1,7 +1,7 @@
  [gerrit]
  	basePath = git
  	serverId = aa1c7b17-5abd-4153-9b3c-c2c79523742a
 -	canonicalWebUrl = http://ubdt16044:8080/
 +	canonicalWebUrl = http://192.168.3.25:8081/
  [database]
  	type = h2
  	database = db/ReviewDB
 @@ -14,7 +14,7 @@
  [sshd]
  	listenAddress = *:29418
  [httpd]
 -	listenUrl = http://*:8080/
 +	listenUrl = http://*:8081/
  	filterClass = com.googlesource.gerrit.plugins.ootb.FirstTimeRedirect
  	firstTimeRedirectUrl = /login/%23%2F?account_id=1000000
  [cache]

gerritを再起動します。

 $ sudo systemctl restart gerrit

ブラウザから以下のURLにアクセスすることでgerritに接続できます。
 http://<server>:8081

例: http://192.168.3.25:8081/

**Apache2を利用する [#k7a0cb3c]
&lt;server>:<port>ではなく、<server>/gerritでアクセスできるようにApache2を利用するようにします。&br;
また、URLアクセスにダイジェスト認証を利用するようにします。&br;

gerritでApache2を利用するようにします。&br;

 ~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
 --- /etc/gerrit/gerrit.config.org	2018-05-05 16:48:20.334216036 +0900
 +++ /etc/gerrit/gerrit.config	2018-05-05 17:32:57.662216036 +0900
 @@ -1,7 +1,7 @@
  [gerrit]
  	basePath = git
  	serverId = aa1c7b17-5abd-4153-9b3c-c2c79523742a
 -	canonicalWebUrl = http://192.168.3.25:8081/
 +	canonicalWebUrl = http://192.168.3.25/gerrit
  [database]
  	type = h2
  	database = db/ReviewDB
 @@ -14,7 +14,7 @@
  [sshd]
  	listenAddress = *:29418
  [httpd]
 -	listenUrl = http://*:8081/
 +	listenUrl = proxy-http://127.0.0.1:8081/gerrit
  	filterClass = com.googlesource.gerrit.plugins.ootb.FirstTimeRedirect
  	firstTimeRedirectUrl = /login/%23%2F?account_id=1000000
  [cache]

gerritを再起動します。
 $ sudo systemctl restart gerrit

Apache2にgerrit用の設定ファイルを追加します。&br;

-proxy_httpでTCPポート8081のサービスを/gerritでアクセスできるようにします。&br;
-auth_digestでURLのアクセスにダイジェスト認証を使います。&br;
-nocanonを付けることで、path/to/src.cのようにスラッシュを持つソースコードにアクセスできるようにします。&br;

 ~$ sudo su -c 'cat << EOF > /etc/apache2/mods-enabled/gerrit.conf
 ProxyPass           /gerrit  http://localhost:8081/gerrit nocanon
 ProxyPassReverse    /gerrit  http://localhost:8081/gerrit nocanon
 ProxyRequests       Off
 
 <Proxy http://localhost:8081/gerrit>
   Order deny,allow
   Allow from all
 </Proxy>
 
 <Location /gerrit>
   AuthType Digest
   AuthName "gerrit"
   AuthUserFile /etc/apache2/.htdigest
   Require valid-user
 </Location>
 EOF
 '
ダイジェスト認証のファイルを作成します。
例
|設定項目|設定内容|h
|gerrit ユーザー名|gerrit_admin|
|パスワード|gerrit|

 ~$ sudo htdigest -c /etc/apache2/.htdigest "gerrit" gerrit_admin
 Adding password for gerrit_admin in realm gerrit.
 New password: 
 Re-type new password:

gerritはスラッシュの代わりに%2Fを使うページがあります。&br;
&#x56;irtual&#x48;ostディレクティブ内部で&#x41;llow&#x45;ncoded&#x53;lashesをOnにします。&br;

 ~$ diff -uprN /etc/apache2/sites-available/000-default.conf{.org,}
 --- /etc/apache2/sites-available/000-default.conf.org	2016-03-19 18:48:35.000000000 +0900
 +++ /etc/apache2/sites-available/000-default.conf	2018-05-05 18:01:06.922216036 +0900
 @@ -26,6 +26,8 @@
  	# following line enables the CGI configuration for this host only
  	# after it has been globally disabled with "a2disconf".
  	#Include conf-available/serve-cgi-bin.conf
 +
 +	AllowEncodedSlashes On
  </VirtualHost>
  
  # vim: syntax=apache ts=4 sw=4 sts=4 sr noet


proxy_httpとauth_digestを有効にして、Apache2を再起動します。

 $ sudo a2enmod proxy_http auth_digest
 Considering dependency proxy for proxy_http:
 Enabling module proxy.
 Enabling module proxy_http.
 Considering dependency authn_core for auth_digest:
 Module authn_core already enabled
 Enabling module auth_digest.
 To activate the new configuration, you need to run:
   service apache2 restart

 $ sudo systemctl restart apache2

*管理ユーザの追加 [#md923e3b]

HTTPでアクセスできる管理ユーザを作成します。以下の手順で管理ユーザを追加します。&br;

-クライアント側でSSHの公開鍵を作成する
-gerritのユーザ認証をHTTPに変え
-URLにアクセスしてユーザを作成する
-gerritのユーザ認証をDEVELOPMENT_BECOME_ANY_ACCOUNTに変え、
-ユーザをAdministratorsグループに所属させる
-gerritのユーザ認証をHTTPに変える
-SSH経由でemailを登録する
-以降は管理ユーザでユーザを管理する

**他のPCで管理ユーザとなるgerritクライアントを作成しておきます。 [#i5f63dde]
 ~$ sudo bash
 ~# adduser gerrit_admin 
 ユーザー `gerrit_admin' を追加しています...
 新しいグループ `gerrit_admin' (1001) を追加しています...
 新しいユーザー `gerrit_admin' (1001) をグループ `gerrit_admin' に追加しています...
 ホームディレクトリ `/home/gerrit_admin' を作成しています...
 `/etc/skel' からファイルをコピーしています...
 新しい UNIX パスワードを入力してください: 例:gerritと入力
 新しい UNIX パスワードを再入力してください: 
 passwd: パスワードは正しく更新されました
 gerrit_admin のユーザ情報を変更中
 新しい値を入力してください。標準設定値を使うならリターンを押してください
 	フルネーム []: 
 	部屋番号 []: 
 	職場電話番号 []: 
 	自宅電話番号 []: 
 	その他 []: 
 以上で正しいですか? [Y/n] Y
 ~# exit
 ~$ 


**他のPCで管理ユーザとなるgerritクライアントでSSHの公開鍵を作成します。 [#w245cd25]
すでに公開鍵を持っている場合はそちらを利用してください。&br;

 ~$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/gerrit_admin/.ssh/id_rsa): 
 Created directory '/home/gerrit_admin/.ssh'.
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/gerrit_admin/.ssh/id_rsa.
 Your public key has been saved in /home/gerrit_admin/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:mPQiaJK0tNCpzDG91CKSWds172kHi4s38j15wVDF+SU gerrit_admin@ryu
 The key's randomart image is:
 +---[RSA 2048]----+
 |  .   o    o..   |
 | =.+.. o  . o E .|
 |=*++... o.   . o |
 |BoB.o. *.+    .  |
 |+=o.. = So.      |
 | o   o + .o      |
 |    o +  . .     |
 |     + oo .      |
 |      . .o       |
 +----[SHA256]-----+

 ~$ cat .ssh/id_rsa.pub
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCr15DYehkRNxugr8xjbUgvgFKX/Uy+rwpWILNu+TqqF9fCNGbt37WPvLebHrbbGuPVQYyOW7KFCJpzYQDGR6DIozhyAzOJVwmpxhQkehtrHOiKFfs4dvilMVnffxddgonONTUljtwFG6zGCgUYz+DWSrOIyu1ymN+W2ODzIjVQfHt1YBcOLkiLSrf82gUyd2p8hYeHs9MYCgDMLtkm46BPoWBST01mGS1mosNMrmzaTPTIVQCI6Hf7HhfGezDWGJUO6lhTrcqU1MKBfmm4186CumeevKAv6Y9cJ2zxUCGtsmRF3ZXAzGOcgQONavPg/4NYeTRHo1JxUGuQPn7gRnJL gerrit_admin@ryu

**gerritをインストールしたPCでユーザ認証をHTTPに変更します。 [#x8d426de]

 ~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
 --- /etc/gerrit/gerrit.config.org	2018-05-05 17:32:57.662216036 +0900
 +++ /etc/gerrit/gerrit.config	2018-05-05 21:56:55.490216036 +0900
 @@ -8,7 +8,7 @@
  [index]
  	type = LUCENE
  [auth]
 -	type = DEVELOPMENT_BECOME_ANY_ACCOUNT
 +	type = HTTP
  [sendemail]
  	smtpServer = localhost
  [sshd]

gerritを再起動します。

 ~$ sudo systemctl restart gerrit


**他のPCでURLにアクセスしてユーザを作成する [#h263c6f3]

ブラウザから以下のURLへアクセスします。
 http://<server>/gerrit

例:&br;
http://192.168.3.25/gerrit

-ダイジェスト認証のダイアログが開きます。

***ダイジェスト認証のダイアログ画面にて [#i61e8fc0]
htdigestで作成したユーザ名とパスワードを入力します。

|入力項目|入力内容|h
|ユーザー名|gerrit_admin|
|パスワード|gerrit|

-すると、register画面が表示されます。

***register画面にて [#k5288c35]
Please review your contact information:
|入力項目|入力内容|h
|Username|gerrit_admin|
|Full Name|gerrit admin|

フルネームはユーザ名とは別のものにする必要があります。&br;

SSHの公開鍵を登録します。&br;
Register an SSH public key:&br;
|入力項目|入力内容|h
|Add SSH Public Key|管理ユーザとなるgerritクライアントでSSHの公開鍵である、.ssh/id_rsa.pub の中身テキストをペーストします。|
Add ボタンを選択する。&br;

なお、仕様なのか、HTTP経由だとemailの登録はできません。後ほどSSH経由で登録します。&br;

**gerritをインストールしたPCでユーザ認証をDEVELOPMENT_BECOME_ANY_ACCOUNTに変更します。 [#ub94b59f]

 ~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
 --- /etc/gerrit/gerrit.config.org	2018-05-05 21:56:55.490216036 +0900
 +++ /etc/gerrit/gerrit.config	2018-05-05 22:58:25.566216036 +0900
 @@ -8,7 +8,7 @@
  [index]
  	type = LUCENE
  [auth]
 -	type = HTTP
 +	type = DEVELOPMENT_BECOME_ANY_ACCOUNT
  [sendemail]
  	smtpServer = localhost
  [sshd]

gerritを再起動します。

 ~$ sudo systemctl restart gerrit

**他のPCでブラウザをリロードし、右上のユーザ名からSwitch Accountを選択します。 [#wbe30711]
-すると、login 画面が表示されます。

**他のPCで Choose: の admin を選択します。 [#bcb7ae82]
-すると、右上のユーザ名が Administrator と表示されます。

**他のPCで 上のメニューからPeopleのList Groupsを選択します。 [#q3b32216]
-すると、Groups 画面が表示されます。

**他のPCで Group Name が Administrators を選択します。 [#q4466ef3]
-Group Adminitorators画面が表示されます。

**他のPCで Group Name が Administratorsグループに先ほど作成したユーザを追加します。 [#t13a5768]
|入力項目|入力内容|h
|Members|gerrit_admin|

Add ボタンを選択する。

**gerritをインストールしたPCで ユーザ認証をHTTPに変更します。 [#bf12fdc2]

 ~$ diff -uprN /etc/gerrit/gerrit.config{.org,}
 --- /etc/gerrit/gerrit.config.org	2018-05-06 14:14:55.867434310 +0900
 +++ /etc/gerrit/gerrit.config	2018-05-06 14:38:40.603434310 +0900
 @@ -8,7 +8,7 @@
  [index]
  	type = LUCENE
  [auth]
 -	type = DEVELOPMENT_BECOME_ANY_ACCOUNT
 +	type = HTTP
  [sendemail]
  	smtpServer = localhost
  [sshd]

gerritを再起動します。

 ~$ sudo systemctl restart gerrit

**SSH経由でemailを登録します。 [#nac95ad6]
 $ # ssh -p 29418 <server> gerrit set-account --add-email <mail> <user>
 $ # ssh -p 29418 <server> gerrit set-account --preferred-email <mail> <user>
例:
 $ ssh -p 29418 192.168.3.25 gerrit set-account --add-email "gerrit_admin@domain" gerrit_admin
 $ ssh -p 29418 192.168.3.25 gerrit set-account --preferred-email "gerrit_admin@domain" gerrit_admin

**これ以降の管理ユーザの作成 [#s6011be9]
ただいま作成した管理ユーザを用いれば、これ以降の管理ユーザはHTTP/DEVELOPMENT_BECOME_ANY_ACCOUNTの切り替え不要です。&br;

**コミッタやレビュアのようにHTTPアクセスが必要なユーザの作成 [#a5ab2c44]
コミッタやレビュアのようにHTTPアクセスが必要なユーザは以下のように作成します。&br;

-ユーザ名とパスワードをダイジェスト認証のファイルに追加する
-追加したユーザ名とパスワードを用いてHTTP経由でgerritサーバにアクセスし、ユーザを作成する
-SSH経由でユーザのemailを更新する

**Jenkinsのように外部からSSH経由のみでアクセスするユーザの作成 [#a89e4756]
-SSH経由でユーザを作成する

*gerritクライアント側の設定 [#x251ecd9]
Ubuntu 16.04でgerritサーバへパッチを送信する為の設定を記載します。

**gitをinstall しておきます。 [#r54eb822]
 ~$ sudo apt-get install git-core

**no matching key exchange method found. Their offer: diffie-hellman-group1-sha1 [#d804515c]

gerritはSSHの暗号化にdiffie-hellman-group1-sha1を使おうとする一方、 &br;
OpenSSH 7から古い暗号化がデフォルトで無効になっており、&br;
OpenSSH 7クライアントとgerritサーバのSSH接続が失敗してしまいます。&br;

 ~$ ssh -V
 OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016

クライアント側の.ssh/configにてgerritのサーバはdiffie-hellman-group1-sha1を使用するようにします。&br;

 $ cat << EOF > .ssh/config
 Host 192.168.3.25
   KexAlgorithms +diffie-hellman-group1-sha1
 EOF

**git-reviewのインストール [#c4f160c8]
gerritサーバにパッチを送信するgit-reviewをクライアント側でインストールします。

 ~$ sudo apt-get install -y git-review

 パッケージリストを読み込んでいます... 完了
 依存関係ツリーを作成しています                
 状態情報を読み取っています... 完了
 以下のパッケージが自動でインストールされましたが、もう必要とされていません:
   libllvm3.8 libqmi-glib1 linux-headers-4.4.0-112
   linux-headers-4.4.0-112-generic linux-headers-4.4.0-116
   linux-headers-4.4.0-116-generic linux-image-4.4.0-112-generic
   linux-image-4.4.0-116-generic linux-image-extra-4.4.0-112-generic
   linux-image-extra-4.4.0-116-generic
 これを削除するには 'sudo apt autoremove' を利用してください。
 以下の追加パッケージがインストールされます:
   python-ndg-httpsclient python-requests python-urllib3
 提案パッケージ:
   python-ntlm
 以下のパッケージが新たにインストールされます:
   git-review python-ndg-httpsclient python-requests python-urllib3
 アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 51 個。
 169 kB のアーカイブを取得する必要があります。
 この操作後に追加で 815 kB のディスク容量が消費されます。
 続行しますか? [Y/n] Y
 取得:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-ndg-httpsclient all 0.4.0-3 [25.1 kB]
 取得:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-urllib3 all 1.13.1-2ubuntu0.16.04.1 [57.2 kB]
 取得:3 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-requests all 2.9.1-3 [55.6 kB]
 取得:4 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 git-review all 1.25.0-2 [31.2 kB]
 169 kB を 0秒 で取得しました (870 kB/s)
 以前に未選択のパッケージ python-ndg-httpsclient を選択しています。
 (データベースを読み込んでいます ... 現在 484125 個のファイルとディレクトリがインストールされています。)
 .../python-ndg-httpsclient_0.4.0-3_all.deb を展開する準備をしています ...
 python-ndg-httpsclient (0.4.0-3) を展開しています...
 以前に未選択のパッケージ python-urllib3 を選択しています。
 .../python-urllib3_1.13.1-2ubuntu0.16.04.1_all.deb を展開する準備をしています ...
 python-urllib3 (1.13.1-2ubuntu0.16.04.1) を展開しています...
 以前に未選択のパッケージ python-requests を選択しています。
 .../python-requests_2.9.1-3_all.deb を展開する準備をしています ...
 python-requests (2.9.1-3) を展開しています...
 以前に未選択のパッケージ git-review を選択しています。
 .../git-review_1.25.0-2_all.deb を展開する準備をしています ...
 git-review (1.25.0-2) を展開しています...
 man-db (2.7.5-1) のトリガを処理しています ...
 python-ndg-httpsclient (0.4.0-3) を設定しています ...
 python-urllib3 (1.13.1-2ubuntu0.16.04.1) を設定しています ...
 python-requests (2.9.1-3) を設定しています ...
 git-review (1.25.0-2) を設定しています ...

*新規プロジェクトの追加 [#r29c63ab]

**SSH経由でプロジェクトを作成 [#d46b2963]
以下のコマンドにてSSH経由でプロジェクトを作成できます。&br;
既存リポジトリをインポートしない場合は–empty-commitが必要です。&br;

 ~$ ssh -p 29418 <server> gerrit create-project --empty-commit <name> --description "'<desc>'"

例:SSH経由でfirst-projectというプロジェクトを作成します。&br;

 ~$ ssh -p 29418 192.168.3.25 gerrit create-project --empty-commit first-project.git --description "'Create first project from SSH command'"


プロジェクトのリポジトリのURLは以下の通りです。&br;

 http://<server>/gerrit/<name>.git
 ssh://<server>:29418/<name>.git

例:http://192.168.3.25/gerrit/first-project.git

HTTP経由でgit cloneします。
**HTTP経由でgit cloneします。 [#a9745123]

 ~$ git clone http://192.168.3.25/gerrit/first-project.git
 Cloning into 'first-project'...
 Username for 'http://192.168.3.25': gerrit_admin
 Password for 'http://gerrit_admin@192.168.3.25': 例:gerrit と入力
 remote: Counting objects: 2, done
 remote: Finding sources: 100% (2/2)
 remote: Total 2 (delta 0), reused 0 (delta 0)
 Unpacking objects: 100% (2/2), done.
 Checking connectivity... done.

 ~$ cd first-project

git-review用の設定ファイルの.gitreviewを作成します。&br;
**git-review用の設定ファイルの.gitreviewを作成します。 [#x2f39eb9]
hostとprojectをご自分の環境のものに変更してください。&br;

 $ cat <<EOF > .gitreview
 [gerrit]
 host=192.168.3.25
 port=29418
 project=first-project
 defaultbranch=master
 EOF

新規ファイル追加等のgitでの作業を実行します。
**新規ファイル追加等のgitでの作業を実行します。 [#k73f6330]

 $ echo hello > hello.txt
 $ git add hello.txt
 $ git commit -m "Hello, World"

git-review実行前のgit logは以下の通りです。
**git-review実行前のgit logは以下の通りです。 [#h9983431]
 ~/first-project$ git commit -v
 [master 708da64] first commit
  1 file changed, 1 insertion(+)
  create mode 100644 hello.txt
 gerrit_admin@ryu:~/first-project$ git log
 commit 708da64c8bfad4248b720f9da45ec32a5ea8d58b
 Author: gerrit_admin <gerrit_admin@domain>
 Date:   Sun May 6 17:00:42 2018 +0900
 
     first commit
     
         new file:   hello.txt
     +hello
 
 commit f63ad9f50b2fcc942eee3e41d25931caf1230cd5
 Author: gerrit_admin <gerrit_admin@192.168.3.25>
 Date:   Sun May 6 16:26:31 2018 +0900
 
     Initial empty repository

git-reviewを実行します。
**git-reviewを実行します。 [#w2b4f76c]
 ~/first-project$ git review
 Creating a git remote called "gerrit" that maps to:
 	ssh://gerrit_admin@192.168.3.25:29418/first-project
 Your change was committed before the commit hook was installed.
 Amending the commit to add a gerrit change id.
 remote: Processing changes: new: 1, done            
 remote: 
 remote: New Changes:        
 remote:   http://192.168.3.25/gerrit/#/c/first-project/+/1 first commit        
 remote: 
 remote: Pushing to refs/publish/* is deprecated, use refs/for/* instead.        
 To ssh://gerrit_admin@192.168.3.25:29418/first-project
  * [new branch]      HEAD -> refs/publish/master

git-review実行後のgit logは以下のとおりです。&br;
**git-review実行後のgit logは以下のとおりです。 [#m33b32fc]
先ほどのコミットメッセージにChange-Idが追加されています。&br;
これはgerrit上でコミットを管理するのに使われる識別子です。&br;

 ~/first-project$ git log
 commit 0a8bdb1e24bbb1f63cae5f59053f161d00542120
 Author: gerrit_admin <gerrit_admin@domain>
 Date:   Sun May 6 17:00:42 2018 +0900
 
     first commit
     
         new file:   hello.txt
     +hello
     
     Change-Id: Id4707e70131dca4f44f8aff74a160f5b2a60a164
 
 commit f63ad9f50b2fcc942eee3e41d25931caf1230cd5
 Author: gerrit_admin <gerrit_admin@192.168.3.25>
 Date:   Sun May 6 16:26:31 2018 +0900
 
     Initial empty repository

なお、このChange-Idはgit-review実行時にダウンロードされたgerrit用の.git/hooks/commit-msgが付加しています。&br;


gerritのウェブページのメニューにて、AllのOpenを開きます。&br;
**gerritのウェブページのメニューにて、AllのOpenを開きます。 [#qb92890c]
先ほどのコミットしたパッチが表示されます。&br;


パッチを選択すると詳細画面が表示されます。&br;
**パッチを選択すると詳細画面が表示されます。&br; [#c7839d69]
この画面でパッチの内容を確認します。&br;
確認して問題があればAbandon、問題がなければCode-Review+2をクリックします。&br;

**確認して問題があればAbandon、問題がなければCode-Review+2をクリックします。&br; [#c409b10b]
ここではCode-Review+2をクリックしています。&br;

**Submitする [#b2554be4]
デフォルトだとCode-Reviewスコアは+2になるとSubmit可能になります。&br;
Submitするとリポジトリにパッチがプッシュされます。&br;


*既存リポジトリを利用する [#r31a89c5]

**–empty-commitを指定せずにプロジェクトを作成します。 [#sa2a10d5]

 $ ssh -p 29418 192.168.3.25 gerrit create-project existing-project.git --description "'Create existing project from SSH command'"

**既存リポジトリのベアリポジトリを作成します。 [#qe0ba848]

 $ git clone --bare <path-to-repository>/existing-project.git
 $ cd existing-project.git

**ベアリポジトリをSSH経由で先ほど作成したプロジェクトにプッシュします。 [#y17e7e13]

 $ git push ssh://192.168.3.25:29418/existing-project.git *:*

**これ以降はHTTP経由でgit cloneが可能となります。また、既存リポジトリとハッシュ値は同じになっています。 [#q1874c92]

 $ git clone http://192.168.3.25/gerrit/existing-project.git

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS