-
Notifications
You must be signed in to change notification settings - Fork 0
Home
K-9 mail を日本人にやさしい(というか自分にやさしい)Android用のメーラにすることを目的とする。
- support-emoji ブランチ
携帯の絵文字に対応するためのパッチ。現在、DoCoMoの絵文字およびデコメ絵文字に対応している。
ただし、DoCoMoからGmail宛メールアドレスに送信した場合の挙動のみが確認されており、その他の条件については未検証。 - hide-message_view_attachment
デコメ絵文字対応に追加して、デコメ絵文字の添付データを添付ファイルとして表示しない。
内部DBの項目を変更しているため、このパッチを適用したバイナリを実行したあとは他のブランチに戻す前にDBファイルを削除する必要がある。 - support-multibyte-filename-attachment ブランチ
日本語ファイル名が文字化けするバグを修正(この修正により他の箇所に影響がある可能性あり。まだ、十分な評価が出来ていない
オリジナルソースのr1523で修正されたようです。(Issue 1289)
該当のコミット: a3d619e472b40d8f96b1fd2aa18cca6f97eefc2e - discard-empty-draft-message
空のメッセージをDraftに保存しないようにするパッチ。ただし、本家でも Issue 1322:Empty messages shall not be saved in Drafts in certain conditions で、私のパッチなんかよりまともな修正が行われるかも。 - ja-l10n
服部さんの日本語リソース。 - enlarged-downloading-buffer-size
添付ファイルなどメッセージのダウンロード時間が長いと言うことで、受信バッファサイズを大きくしてみた(IMAPのみ) 1024B→10240B
エミュレータでの実行で約365.4kBの添付ファイルの受信が30秒だったのが12秒に短縮された。(気のせいかもしれない) -
bugs
本家に対する細かなバグ修正、仕様の変更を反映するブランチ→本家のバグ対応が早すぎるので不要なブランチであった
上記のブランチは、開発終了/中断などにより削除される場合がある。
以下は常に存在するブランチ
- master ブランチ
オリジナルのtrunkソースのブランチ。不定期的に最新ソースがpushされる予定。 -
build
バイナリをビルドするためのブランチ。各種パッチをマージしたのちリリース用のバイナリはこのブランチで作成される。バイナリ公開前にこのブランチが更新されることになるため、必ずしも最新ソースとは限らない。ビルド対象のソースはタグのみで示す
- オリジナルソースのライセンスは、 Apache License 2.0
- 絵文字サポートのためにバンドルした 絵文字アイコン のライセンスは、 クリエイティブ・コモンズ
- 絵文字サポートパッチを含む私(Koji Arai aka jca02266)の修正部分については、 MIT license のつもりでいる
- オリジナルソース 全部は大きいのでr1400からインポートしている。
- 現在(2010-03-15)r1501までのオリジナルソースが入っている。今後のオリジナルソースのインポートについては、方針を検討する必要がある。
- master ブランチは今のところオリジナルソースを格納し、オリジナルから適当に枝分かれしたブランチで各種パッチの開発を勧める方針とする。(git svn rebase すると、pullできなくなるから)
- 各種パッチをマージしたブランチを別途作成し、バイナリ作成はそこで行うこととするのはどうか?(build ブランチで試している)
- 英語で書くこととする(苦手だけど、
その方がcoolに見える気がするから思わぬ問題を避けるため)。
以下、このプロジェクトからソースを取得する手順
% git clone git://github.com/jca02266/k9mail.git
環境によってはProxyサーバ経由でないとソースを取得できないかもしれない。その場合は、以下のようにGitにてProxyサーバの設定をした上で、HTTPプロトコルで、clone する。
% git config --global --add http.proxy proxy-server:port
% git clone http://github.com/jca02266/k9mail.git
proxy-server:port の部分はそのサイトのプロキシサーバおよびポートを指定する。
ダウンロード時間の短縮のためにリポジトリの履歴全体ではなく、直近の履歴のみ必要な場合は、以下のように —depth オプションを利用すると良い。以下の例では直近20コミットの履歴のみを取得する例
% git clone --depth 20 http://github.com/jca02266/k9mail.git
clone した直後はカレントディレクトリに、k9mailというフォルダが作成される。
% cd k9mail/
% git branch -a
(出力例)
* build
remotes/origin/HEAD -> origin/build
remotes/origin/build
remotes/origin/discard-empty-draft-message
remotes/origin/hide-message_view_attachment
remotes/origin/ja-l10n
remotes/origin/master
remotes/origin/support-emoji
remotes/origin/support-multibyte-filename-attachment
現在(2010/4/13)、デフォルトのブランチを build としているため、clone 直後はbuildがcheckoutされた状態となる(行頭の"*"で現在のブランチが示される。実際に、作業ディレクトリk9mailの下にはbuildブランチのファイルが展開されている)。
他のブランチに切り替えたい場合は、以下の通りブランチ名を指定してgit checkoutを実行する。
% git checkout support-emoji
(出力例)
Branch support-emoji set up to track remote branch support-emoji from origin.
Switched to a new branch 'support-emoji'
% git branch -a
(出力例)
build
* support-emoji
remotes/origin/HEAD -> origin/build
remotes/origin/build
remotes/origin/discard-empty-draft-message
remotes/origin/hide-message_view_attachment
remotes/origin/ja-l10n
remotes/origin/master
remotes/origin/support-emoji
remotes/origin/support-multibyte-filename-attachment
あなたが、support-emojiブランチのファイルに対して何らかの変更を行いたい場合は、前項の状態から好きなエディタを使って直接ファイルを修正すれば良い。以下、修正を行った後の状態を示す。
作業ディレクトリの状態を確認したい場合は、statusコマンドを利用する。
% git status
(出力例)
git status
# On branch support-emoji
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: src/com/fsck/k9/mail/store/LocalStore.java
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# assets/emoticons/sun2.gif
no changes added to commit (use "git add" and/or "git commit -a")
この表示により、src/com/fsck/k9/mail/store/LocalStore.java が修正されており、さらにバージョン管理されていない新しいファイルassets/emoticons/sun2.gifが追加されていることが示されている。
作成中…
% git diff
作成中…
% git add -u
% git commit -m 'nancharakanchara'
% git log
作成中…
% git format-patch
以下の内容で local.properties ファイルを作成し、android-sdkのパスを書く(以下では、sdkをc:\opt に置いているものとする。パス区切りはスラッシュで書いているがもしかすると \ でも問題ない?)
sdk-location=C:/opt/android-sdk-windows
sdk.dir=C:/opt/android-sdk-windows
2つパスを書くのは後者が比較的新しめのソースで変数名が変わっているからである。本当はどちらか一方だけで問題ないが、2つ書いておけば間違いない。
この点を除けば後は、本家に記載の通りである BuildingK9 参照
% ant debug
ただし、Windowsのandroid-sdk 1.6 の場合、ツール dx.bat がバグっているのでそのままだと
[echo] Converting compiled files and external libraries into bin/classes.dex...
[apply] error: no command specified
:
BUILD FAILED
C:\home\arai\custom-vendor-src\k9mail-github\build.xml:219: apply returned: 1
っとエラーになる。これを避けるには、
Issue 4217 から、修正版 dx.bat を取ってきて、android-sdk-windows\platforms\android-1.6\tools\dx.bat を置き換えるのがてっとり早い。
コンパイルというか、プロジェクトの取込み方。最近のバージョンでは最初からEclipseに取り込めるみたい。
- File → Import
- Existing Projects into Workspace → [Next>]
- Select root directory: k9mailのパス → [Finish]
ここでは、本プロジェクトのリポジトリをどのように作ったかを示す。
これは、著者個人のための記録である。
% git svn clone -r1400 -s http://k9mail.googlecode.com/svn/k9mail/
% cd k9mail
% git svn fetch
... patching to support Emoji
% git branch -a
* master
support-emoji
remotes/2.4-MAINT
remotes/attachments-on-sd
remotes/issue1116
remotes/reworking-identity
remotes/tags/2.405
remotes/tags/2.505
remotes/tags/2.506
remotes/tags/2.507
remotes/tags/2.508
remotes/tags/2.510
remotes/tags/2.511
remotes/tags/2.512
remotes/trunk
% git remote add origin git@github.com:jca02266/k9mail.git
% git push origin master
% git push origin support-emoji
前項の「リポジトリの作り方」は無視して(!)
- github のアカウントを持ってなければ作成する
- 本ページの右上のフォークボタンを押す
- フォークした自分のリポジトリで開発する
- (もし、開発に満足したら)pull request する
4 番目は必須ではないけれど、素敵なハックはぜひpull requestで教えてください。
前項「リポジトリの作り方」と同じようにオリジナルのソースを作って自分でリポジトリを作成した場合、同じソースを起源とすることができずgit でうまくマージを扱えなくなる(gitのコミットは作成時刻、コミット時刻をsha1に含むため)。パッチのファイルを交換するだけなら別にそれでも構わないけれどgitやgithubを使う意味がなくなるし、git svn fetch は無駄に時間を使うだけである。
以下を参照のこと
バイナリの作成の仕方(開発者向け)
- 現在
o--o--o--o--o master (= original source) \ o--o--o support-emoji
- 将来
本家が開発をすすめてその内容を取り込む場合→本家からmergeする
o--o--o--o--o--o--o--o master (= original source) \ \ o--o--o--------o support-emoji
- 遠い将来
マージの繰り返しは、リポジトリが汚くなるから何かの契機で rebase するかも
そうするとこのプロジェクトを追っかけている人がいたらそちらもrebaseしないといけなくなる。
か、dangling branch で(気づかずに)開発を続けるのかも?
安定バージョンのバージョンアップ時などに実施するかも
ブランチ名に本家のバージョンを含めると良いのではないか?
o--o--o--o--o--o--o--o-------------------------------o master (= original source) \ \ \ o--o--o---------o dangling branch o --- support-emoji (rebase)
- 本家へのcontribute
本家にパッチをマージしてもらった場合も本家は svn なので、マージしてもらったソースは同じコミットにはならないので、そこからrebaseしなおすことになるだろう
o--o--o--o--o--o--o--o------------------------------o master (= original source = support-emoji) \ \ \ o--o--o---------o dangling branch o --- new-commit (rebase)