ConoHaのISUCON環境をGitで管理できるようにする方法

git

こんにちは。仁科(@nishina555)です。

こちらの記事ConoHaにISUCONの過去問の環境を作成する手順について説明をしました。

ISUCONでは実際にパフォーマンスチューニングをするにあたり、ソースコードなど修正していくことになります。

そのため、ISUCONのソースコードをgitで管理できるようにしておくと非常に便利です。

ConoHaの環境に直接コミットをしても別にいいのですが、リポジトリをForkして自分のGitHubアカウントにISUCONのソースコードを置いておいておく形のほうがよりよいです。

今回はConoHaにあるISUCONのソースコードをForkしてgitで管理する方法について説明をしたいと思います。

ConoHaでは公式のリポジトリをcloneしてきている

まずは現状確認をしてみます。

git remote -vでリモートリポジトリの向き先を確認してみると公式のリポジトリからcloneされてきたことがわかります。

$ cd /home/isucon/isubata
$ git remote -v

origin  https://github.com/isucon/isucon7-qualify (fetch)
origin  https://github.com/isucon/isucon7-qualify (push)

本家をForkしたリポジトリをoriginとして管理する

ConoHaでは公式のリポジトリ(以下、本家と呼びます)がリモートリポジトリの向き先として設定されていることがわかりました。

リモートリポジトリの向き先を自分のアカウントに変更するため、本家のリポジトリをForkして自分のアカウント配下にISUCONのリポジトリに持ってきます。

Forkとは本家のリポジトリを自分のリポジトリとしてコピーする方法で、本家のリポジトリの内容を自分で色々とカスタマイズしたいときに利用します。

Forkを利用することで本家のリポジトリを汚すことなく、自由にソースコードを修正し検証ができるため、OSS活動をするときなどに活用します。

Forkの方法ですが、Forkしたいリポジトリで、Forkボタンを押します。

これで自分のアカウント(nishina555)にISUCONのリポジトリ(isucon7-qualify)が作成されました。

Forkしたリポジトリをpush先の新たな向き先として変更しておきます。

$ git remote set-url origin https://github.com/nishina555/isucon7-qualify

本家のリポジトリはupstreamとして管理する

originのpush先を本家のアカウントから自分のアカウントに変更しました。

本家のリポジトリの管理はupstreamという名前で管理するようにします。

本家と自分のアカウント両方をgitで管理することで、本家のリポジトリが更新された場合、Forkしたリポジトリにもその修正を取り込むことができるようになります。

$ git remote add upstream https://github.com/isucon/isucon7-qualify

確認をすると本家と自分のアカウントそれぞれが別名で管理されていることがわかります。

$ git remote -v

origin  https://github.com/nishina555/isucon7-qualify (fetch)
origin  https://github.com/nishina555/isucon7-qualify (push)
upstream    https://github.com/isucon/isucon7-qualify (fetch)
upstream    https://github.com/isucon/isucon7-qualify (push)

リモートブランチを含む、すべてのブランチを確認してみると以下のようになっています。

$ git branch -a
 * master
   remotes/origin/HEAD -> origin/master
   remotes/origin/master
   remotes/upstream/master

これでブランチ管理の設定は完了したので、originのmasterブランチからトピックブランチを作成して開発をスタートしていきます。

$ git checkout -b test

本家のリポジトリに追加修正がされた場合の対応については以下の記事で説明していますので、参考にしてください。

OSS活動する人必見!Forkしたリポジトリのローカルでの管理方法について

gitの初期設定をする

新しく借りたVPSで初めてgit commitをするため、以下のようなエラーがでるかもしれないです。

*** Please tell me who you are.

Run

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

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <isucon@conoha.(none)>) not allowed

これは、gitの初期設定としてメールアドレスとユーザー名が登録されていない場合に起こるエラーです。

以下のコマンドでメールアドレスとユーザー名の設定を行っておきます。

$ git config --global user.email [メールアドレス]
$ git config --global user.name [ユーザー名]

~/.gitconfigを確認すると先ほど登録した情報が保存されていることがわかります。

$ vim ~/.gitconfig

[user]
        email = [メールアドレス]
        name = [ユーザー名]

実際にcommitとpushをしてみる

では試しにcommitとpushができるかを試してみます。

ここではtestというファイルを作成して、pushをしています。

$ touch test
$ git add test
$ git commit -m 'add test'

[test dfdf2dd] add test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test

$ git push origin HEAD

Username for 'https://github.com': nishina555
Password for 'https://nishina555@github.com':
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/nishina555/isucon7-qualify
 * [new branch]      HEAD -> test

実際に自分のリポジトリをみると先ほどのコミットがpushできていることがわかります。

なお、今はパスワード認証でpushをしている状態となっています。
パスワードなしでpushをするためにはパスワード認証から鍵認証に変更する必要があります。

鍵認証でgit pushする方法については以下の記事を参考にしてください。

Gitにパスワード認証なしでPushするまでの手順

ConoHaのISUCON環境をGitで管理できるようにする方法の説明を終わります。おつかれさまでした!

この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!