Lhaz開発課

提供: ちとらソフト開発部

目次

Warning撲滅キャンペーン実施中!

「えっ…LhazのWarning,多すぎ?」。

まずWarningをひとつ取るところから,Lhazの開発に参加してみませんか?

出だしはちょっと面倒だけど,やってみると,こんないいこともあるよ!

  • Linux kernel開発にも使われているgitの使い方が分かる!
  • Android開発にも使われているレビューシステムGerritの使い方が分かる!
  • このソフトに俺のコードが含まれているんだぜ,と友達に自慢できる!

以下の手順をゆっくり進めてみて!


質問・ディスカッション

Googleグループを開設していますので,こちらでお願いします。


開発ツールのインストール

コンパイラのインストール

Visual C++ 2010 Express Editionをインストールしてください。

http://www.microsoft.com/japan/msdn/vstudio/express/

Microsoft Windows SDKのインストール

x64版をビルドするためには,Microsoft Windows SDKが必要です。

Microsoft Windows SDK for Windows 7 and .NET Framework 4

Gitのインストール

Git for Windows (Git-1.7.10-preview20120409.exe)をインストールしてください。

http://msysgit.github.com/

改行コードについて

下図のようにCheckout Windows-style, commit Unix-style line endingsを選択してください。

image:Git_setup_1.png

[Lhaz+] Google Data APIのインストール

Lhaz+の開発には,Google Data API(Google_Data_API_Setup_2.0.1.0.msi)が必要です。

DLLのパスとして C:\Program Files\Google\Google Data API SDK\ を決めうちしていますので,x64マシンではインストール後に C:\Program Files (x86)\Google\Google Data API SDK をコピーしておいてください。

Gerritのセットアップ

ユーザー登録

Gerritのユーザー登録を行います。

Internet Explorerではうまく動作しませんので,ChromeやFireFoxの使用を推奨します。

また,ユーザー登録には,OpenIDが必要です(Google AccountやYahoo! IDなどでOK)。

Gerritページの右側にあるRegister(下図)を押してください。

image:Gerrit_regist_1.png

次に,Register with a Google Accountを選択するか、Yahoo! IDを使う場合は、http://yahoo.co.jp/と入力してRegisterを押してください。Register with a Yahoo! IDはyahoo.comのIDになります。

image:Gerrit_regist_2.png


ログイン後に、SettingsにあるProfileからメールアドレスの登録をしてください。また, プロジェクトの変更通知が受け取れるようWatched Projectにてメールを受け取るプロジェクトの登録をします。Browseボタンを押して必要なプロジェクトを選び, Watchボタンを押してください。変更の入ったプロジェクトがあればメールが来るようになります。


参考

yahoo.co.jpでログインする場合、Registerを押すとYahoo! JAPANのログインページが表示されますのでYahoo IDにてログインします。その後, 以下のようにOpenID URLの提供に関して注意書きが出るので「同意する」を押すことでGerritにログインできるようになります。


「次のサイトにログインし、OpenID URL(ユーザー識別子)を提供しようとしています。 「同意する」ボタンを押した後に移動する先は、Yahoo! JAPANのページではありません。Yahoo! JAPAN IDやパスワードを入力しないでください。

chitora.com

外部アプリケーションを利用する際の注意事項をご確認のうえ、「同意する」ボタンを押してください。」


次回からは, Cookieが有効になっていれば上記のページに出ていたOpenID URLが保存されていますのでSign Inを押すことでログインできるようになります。

SSH公開鍵の登録

無事ユーザー登録できましたら,SSH公開鍵をGerritに登録します。

SSH公開鍵の作成

[スタート]-[すべてのプログラム]-[Git]-[Git Bash]を起動します。

$ ssh-keygen -t rsa -C "ユーザー登録に使用したアドレス"
e.g.)
$ ssh-keygen -t rsa -C "chitora48@gmail.com"
Enter passphrase (empty for no passphrase):

はEnterキーを押してpassphraseを登録しない方が,後々開発時に楽です。

標準では,C:\Documents and Settings\Windowsアカウント名\.sshにid_rsa.pubファイルが生成されますので,以下でGerritに登録します。

注)ssh-keygenで鍵作成時に保存先を変更することができるようですが、変更した場合gitから正しく使えないようですので自動的に出てくる保存先をそのまま選択するようにしてください。Windows7ではc:\Users\Windowsアカウント名\.sshとなるようです。

SSH公開鍵の登録

GerritページにSign Inして,右側にあるSettings(下図)を押してください。(メールアドレスはご自分のものになるはずです)。

image:Gerrit regist 3.png

次に,左側のSSH Public Keysを選び,Add Keyボタンを押します(下図)。

image:Gerrit_regist_4.png

次に,id_rsa.pubファイルの内容を,下記エリアに入力し,Addボタンを押します(下図)。

image:Gerrit_regist_5.png


ソースコードの取得

Git Bashを起動し,適当なフォルダを作成します。clone.shを取得してそのフォルダにコピーしてください。

$ clone.sh Gerritに登録したユーザー名
e.g.) 
$ clone.sh chitora

と実行します。


ビルド

Visual C++で下記ソリューションファイルを開きます。

lhaz\Lhaz.sln

ソリューション構成をDebugもしくはReleaseにして,[ビルド]-[ソリューションのリビルド]を実行します。


変更したソースコードのGerritへの送信

ソースコードの修正を行いましたら,Gerritに送信してレビューを行います。

Gitの使い方は,詳しくは別途学習してください。

git config

※これはclone後に1度だけ必要です。

まず,コミッターとしての名前とメールアドレスを設定します。

$ cd lhaz
$ git config user.name Gerritに登録した名前
$ git config user.email Gerritに登録したメールアドレス
e.g.)
$ git config user.name chitora
$ git config user.email chitora48@gmail.com

git add

$ git add ファイル名

もしくは,

$ git add .

と実行して,コミットの準備をします(ステージングとかstageするといいます)。

git add .の場合,余計なファイル(.bakなど)がステージングされる場合があるので,注意してください。

$ git status

で状態を確認することができます。

git commit

コミットしてよい状態でしたら,

$ git commit

にてコミットします。コミットコメントは英語でお願いします。日本語の場合どうなるか確認していないためです。

$ git log

にて,コミットされたことを確認します。ここまでは,ローカルのリポジトリにしか影響を及ぼさないので,心配なくお試しください。

何かおかしくなったり,やり直したい場合は,

$ git checkout origin/master -b 別のローカルブランチ名

等でやり直せます。

git push

Gerritへのpushは,

$ git push origin ローカルブランチ名:refs/for/master
e.g.)
$ git push origin master:refs/for/master

と実行します。

成功すると,Gerritに反映されます。Add Reviewerで,ご自身とchitoraを追加してください。動作確認OKでしたら,「Review」「+1 Verified」「Publish Comments」,を行ってください。私の方でレビューし,+2 Looks good to me, approvedがつきましたら,Submit Changeしてください。マスターリポジトリにマージされます。

再push

レビューでNGになった場合に,修正して再度pushしたい場合は,

$ git push origin ハッシュ:refs/changes/番号(URLで分かります)
e.g.)
$ git push origin C0FFEE:refs/changes/127

と実行します。

ハッシュはgit logにて確認してください。

ローカルブランチの削除

不要なブランチは,

<tt>$ git branch -d ブランチ名

で削除できます。merge前で削除できない場合に強制的に削除したい場合は,

$ git branch -D ブランチ名

とdを大文字にします。

最新ソースコードの取得

開発の進んでいるマスターリポジトリからソースを取得するには,

$ cd /c/lhaz (例えばc:\lhazにclone.shをおいていた場合)
$ cd lhaz (lhaz Projectでの差分を反映する場合)
$ git pull

もしくは,git pullの代わりに

$ git remote update
$ git rebase origin/master

と実行します。

コンフリクト等の対処の仕方は,別途Pro Git等でGitの使い方を学習してください。

git pullをすべてのプロジェクトに対して実行するスクリプトが,lhaz/pullall.shになります。lhazフォルダにて実行してください。

#!/bin/sh

cd ..

pull_branch()
{
    echo git pull $1
    cd $1
    git pull
    cd ..
}

# Original
pull_branch lhaz
pull_branch Library
pull_branch Setup

# Third party not modified
pull_branch libObfuscate
pull_branch xz

# Third party modified
pull_branch 7-Zip
pull_branch Bzip2
pull_branch i6comp
pull_branch libpng
pull_branch oniguruma
pull_branch Rar
pull_branch zlib
pull_branch xerces-c

# Contributor's library
pull_branch altstr

リリースパッケージの作成方法

 リリースパッケージの作成方法は,こちらの記事を参照してください。

repoの使用

 repoの使用は必須ではありませんが,興味のある方は使用してみてください。

repoとは

 repoとは,複数のgitレポジトリの管理を容易にするためのツールです。repoはGoogle製で,Gerritと共にAndroidの開発に使用されています。

 Version Control with Repo and Git

Cygwinのインストール

 Windows上でrepoを動作させるためには,Cygwin環境が必要です。Kazzzの日記 を参考に,repoの動作に必要なパッケージをインストールしてください。注意点は,Pythonについて少し古いバージョン(=2.5.5-1)をインストールする,ということになります。また,libiconv含め,必要なパッケージすべてはCygwinインストーラで選択して,問題ありませんでした。また,gitの動作でvimが必要なので,vimもインストールしてください。

repoのインストール

 スタートメニューから Cygwin Bash Shell を起動します。

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod +x ~/bin/repo

とインストールします。SSL関係のエラーが発生した場合は,

$ curl -k https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod +x ~/bin/repo

と -k スイッチをつけてください。

Lhazソースの取得

 Lhazのソース取得は以下のように行います。

$ git config --global http.sslVerify false
$ mkdir workdir(任意)
$ cd workdir(任意)
$ repo init -u git://chitora.com/lhaz-manifest.git
$ git config --global core.autocrlf true
$ repo sync

 初めの,

$ git config --global http.sslVerify false

は,SSLまわりのエラーを回避するために必要です。

 途中の,

$ git config --global core.autocrlf true

は,Windows上で改行コードをCRLFでチェックアウトするために必要です。

 以降で repo init を再度行うときは,

$ git config --global core.autocrlf false

と false に戻してから repo init してください。これは,manifestファイルの改行コードがLFである必要があるためです。 repo sync の前には true にしてください。

ユーザー名の設定

 Gerritに登録したユーザー名とメールアドレスの名前が異なる場合,(各プロジェクト)/.git/configに以下の設定を追加してください。

[review "review.chitora.com"]
        username = ユーザー名
 (e.g.) username = chitora

 これは,repo uploadの際にメールアドレスの方(chitora48)が使用されるので,SSH認証に失敗してしまうためです。

 同一の場合は設定不要です。

ソース変更前の準備

 ソースの変更を始める前には,

$ cd lhaz(lhazプロジェクトの場合)
$ repo start ブランチ名 .

と実行して,repoが認識するブランチを作成します。

ソース変更後

 ソース変更後は,git add / git commit は共通です。

 Gerritへのpushは,以下のように,

$ repo upload .

と実行します。

最新ソースの取得

$ repo sync

と実行します。


仕様書

Lhaz機能仕様書 にて機能仕様書を作成中です。


ソースコードリーディング

OpenGrokにて,ソースコードブラウジングが出来ますので,ご活用ください。

また,Doxygenも充実させていく予定です。


開発アイテム

Redmineのチケットにて,現在の開発アイテムを管理していますので,ご覧ください。

チケットで取り組んでみたいものがありましたら,ご一報ください。

案内