2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacでSourceTreeからGerritを利用するときのメモ

Last updated at Posted at 2019-02-11

MacからSourceTreeを通じてGerritを利用する際のメモ

前提

以下は実施済み・設定済みとし、本記事では扱わない

  • Gerrit上でのユーザ作成と設定
    • 公開鍵登録
    • リポジトリへの権限設定

開発の準備

秘密鍵の設置場所

クライアントPCに保持している秘密鍵の設置場所は、鍵生成時のデフォルト~/.ssh/id_rsaにしておく
この場所でないと、SourceTreeが秘密鍵を見つけられずGerritサーバへの接続に失敗してしまう

Gitの設定

クライアントPCのGitのデフォルトユーザ名は、Gerritで登録したユーザ名と一致させておく
一致させていないと、Gerritサーバへの接続に失敗してしまう場合がある

手順

SourceTreeを起動し、Command+「,」により、設定画面を開き、以下を設定する

  • 「ソースツリーにグローバルMerrurialとGitのコンフィグレーション変更を許可する。」をチェックONに設定
  • 「デフォルトのユーザー情報」に、Gerrit上で登録したユーザ名を入力する
    settings_general.png

リポジトリのクローン

ブラウザ上でコマンドを取得し、Terminal上で実行する

手順

ブラウザでGerritにログインし、対象リポジトリのページを開く
SSHを選択し、「Clone with commit-msg hook」と表示されているコマンドをコピーし、Terminal上で実行する
repository_clone.png

「with commit-msg hook」のコマンドを利用すると、ローカルの各コミットで、コミットメッセージの末尾にGerritのコードレビューを一意に識別するChange-Idが自動で付与されるようになる

レビュアーに割り当てられた際の操作

修正内容をローカルで確認する

コードレビューのページでローカルリポジトリに修正内容を反映するコマンドを取得し、Terminal上で実行する

手順

コードレビューのページを開き、右上のメニューから「Download patch」をクリック
reviewer_patch_download_menu.png

接続方法を「SSH」に変更し、Checkoutのコマンドをコピーして、Terminal上で実行する
reviewer_patch_download_command.png

レビューを提出する際の操作

新しくコードレビューを開始する

ローカルのリポジトリでコミットした内容を、Gerritサーバのレビュー専用のブランチにPUSHする

手順

Windowsでは、.git/configファイルの[origin]配下にPUSH先を追記(以下参照)した上で、SourceTreeのPUSH機能をそのまま利用する

config
[origin]
...
push = refs/heads/*:refs/for/*

一方で、Macではどうやら上手くいかないので、代替の手段を利用する

PUSHの代替手段:カスタムアクションを用意する

以下スクリプトファイルをクライアントPCの任意の場所に保存しておく

GerritPush.sh
# !/bin/sh
BRANCH=`git symbolic-ref --short HEAD`
git push origin HEAD:refs/for/$BRANCH --tags
echo "Pushed the branch to gerrit: $BRANCH"

以下コマンドで、保存したスクリプトファイルに実行権限を付与する

chmod 755 GerritPush.sh

SourceTreeを起動し、Command+「,」により設定画面を開き、カスタムアクションの項目を選択する
settings_custom_actions.png

左下の「追加」ボタンを押し、メニューキャプションに「GerritへPUSH」(任意の名前)、実行するスクリプトに先ほど保存したスクリプトファイルを選択し、「OK」ボタンを押す
settings_add_custom_action.png

PUSH対象のブランチにチェックアウトした上で、任意のコミットを右クリックし、作成したカスタムアクションを選択する
select_custom_action.png

参考:https://github.com/WeiWeiOuO/Using-Sourcetree-on-Gerrit

コードレビューの指摘を受けてコードを修正する

該当のコミットを、コミットメッセージのChange-Idだけ変えずに修正し、再度GerritサーバにPUSHする

手順

以下のように指摘が入った場合
reviewee_minus.png

ローカルで修正が完了したら、「最新のコミットを修正」のオプションを選択する
reviewee_amend.png

Change-Id部分以外のメッセージを適宜書き換えてコミット
Change-Id部分は書き換えてしまうと、PUSHしたときに別のコードレビュー扱いになってしまうので注意
reviewee_amend_commit.png

カスタムアクションを用いてGerritサーバにPUSHすると、Gerrit上でコードの更新が反映される
reviewee_update.png

修正前のコードの変更はGerrit上に残る一方で、修正前のコミットメッセージは残らないため、注意する必要がある

その他

Gerritの練習

Gerritの利用方法は多少癖があると感じるので、ローカルにGerritサーバを立てて練習するのがオススメ
以下の公式が用意しているDockerを用いた構築手順を参考にすると、非常に簡単にローカルにGerritサーバを立てられる
https://github.com/GerritCodeReview/docker-gerrit

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?