いつもTwitter4Jの機能追加をするたびに試行錯誤することが多いので備忘録代わりにまとめておきます。
前提
-
AndroidStudioIntelliJ IDEA で Twitter4J の機能追加や調査・修正といった作業をする。 - AndroidStudio2.1あたりからmavenがサポートされてないっぽいんで IDEA で。
- Windows10
- TortoiseGit
Forkして最新版を取得する
https://github.com/yusuke/twitter4j を Fork する(https://github.com/takke/twitter4j)
clone したり色々やって下記の状態。
$ git branch -a
* master
video_support
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/video_support
remotes/upstream/2.0.x
remotes/upstream/2.1.x
remotes/upstream/2.2.x
remotes/upstream/TFJ-671
remotes/upstream/TFJ-679-api1.1
remotes/upstream/master
remotes/upstream/revert-171-TFJ-806
最新に追いつく
作業するたびにorigin/master
がけっこう古くなってるので最新版をマージする。
GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する - Qiita などを参考に。
$ git fetch upstream
...
$ git log origin/master -1
commit 96b7f3487910febc39ec1f8230f2b847b49c0d97
Author: Yusuke Yamamoto <yusuke@mac.com>
Date: Mon Mar 23 16:26:33 2015 +0900
fix for KryoSerializationTest
$ git log upstream/master -1
commit 45f7de95a22a42167099c53849042cb1f88c8963
Author: Yusuke Yamamoto <yusuke@mac.com>
Date: Tue Jun 9 23:41:45 2015 +0900
correct scm urls
$ git merge upstream/master
...
$ git push
...
$ git log -1
commit 45f7de95a22a42167099c53849042cb1f88c8963
Author: Yusuke Yamamoto <yusuke@mac.com>
Date: Tue Jun 9 23:41:45 2015 +0900
correct scm urls
私家版を作ってプルリクを送るまで
IDEAのプロジェクトを作る
Mavenからインポートする感じでプロジェクトを作る。
(Import Project からデフォルト設定で mvn からインポートすることでプロジェクトが作れる)
IDEAで修正する
修正したり機能追加したりテスト書いたり。。
ビルド
package.sh を参考に mvn コマンドを実行する。
各モジュールディレクトリで下記を実行するとローカルの .m2/repo 以下に入る(twitter4j-4.0.4-SNAPSHOT ができる感じ)。
$ mvn clean install -Dmaven.test.skip=true
Goal を install にするのがポイント。
自分のアプリで利用する
"ローカルの.m2/repo" に配置された私家版Twitter4Jを自分のアプリで利用します。
allprojects {
repositories {
// Twitter4J(local)
mavenLocal()
}
}
dependencies {
compile 'org.twitter4j:twitter4j-core:4.0.4-SNAPSHOT'
compile 'org.twitter4j:twitter4j-media-support:4.0.4-SNAPSHOT'
compile 'org.twitter4j:twitter4j-stream:4.0.4-SNAPSHOT'
...
}
プルリク
テスト通って一通り動作確認できたらプルリクを送る。
テストについて追記
イケメンさん曰く↓
らしいです。 そういえば私も修正箇所周辺のテストしか通してませんでした。というか全部通そうとすると(一度やろうとしたことがある)テスト専用アカウントを複数用意してそれらのフォロー関係とかごにょごにょしなきゃいけないので余裕で半日くらいかかりますし現実的じゃないですね。テスト全部通すのはかなり難しいので、修正箇所で必要な部分だけコンシューマキーやシークレット用意すればok。ってかテスト通してなくてもプルリク当方で確認します! - Twitter4J開発手順メモ(私家版の作り方) - Qiita - http://t.co/FzyiJNFKqx
— いますぐフォローすべき山本裕介 (@yusuke) June 21, 2015
一回何も気にせず自分の垢をテストに使ったらアイコンがTwitter4jになりました https://t.co/sBYAhZfBRa
— RED FAT だるま (@fat_daruuuuma) June 21, 2015
他の人の修正を取り込む
他の人が行ったプルリクを自分のブランチにもマージしたい場合の手順をメモしておきます。
例えば、
Add property for "tweet_volume" to Trend, YouTrack Issue #TFJ-886 by Bunkerbewohner · Pull Request #232 · yusuke/twitter4j
のプルリクをマージしたい場合は下記の手順でやるといいです。
該当ブランチを探す
上記スクリーンショットの from ... の部分から分かるように、プルリク元のブランチは
https://github.com/Bunkerbewohner/twitter4j/tree/TFJ-886
です。
リモートブランチを追加する
$ git remote
mumei
origin
upstream
$ git remote add Bunkerbewohner git@github.com:Bunkerbewohner/twitter4j.git
$ git remote
Bunkerbewohner <-- 追加された!
mumei
origin
upstream
$ git fetch Bunkerbewohner
remote: Counting objects: 36, done.
remote: Total 36 (delta 7), reused 7 (delta 7), pack-reused 29
Unpacking objects: 100% (36/36), done.
From github.com:Bunkerbewohner/twitter4j
* [new branch] 2.0.x -> Bunkerbewohner/2.0.x
* [new branch] 2.1.x -> Bunkerbewohner/2.1.x
* [new branch] 2.2.x -> Bunkerbewohner/2.2.x
* [new branch] TFJ-671 -> Bunkerbewohner/TFJ-671
* [new branch] TFJ-679-api1.1 -> Bunkerbewohner/TFJ-679-api1.1
* [new branch] TFJ-886 -> Bunkerbewohner/TFJ-886
* [new branch] master -> Bunkerbewohner/master
* [new branch] revert-171-TFJ-806 -> Bunkerbewohner/revert-171-TFJ-806
* [new tag] release-tfj-886 -> release-tfj-886
マージする
マージ先をチェックアウトしてマージする
$ git checkout master
$ git merge Bunkerbewohner/TFJ-886
Merge made by the 'recursive' strategy.
readme.txt | 1 +
.../java/twitter4j/TrendJSONImpl.java | 13 ++++++-
twitter4j-core/src/main/java/twitter4j/Trend.java | 4 +++
.../twitter4j/examples/trends/GetPlaceTrends.java | 40 ++++++++++++++++++++++
4 files changed, 57 insertions(+), 1 deletion(-)
create mode 100644 twitter4j-examples/src/main/java/twitter4j/examples/trends/GetPlaceTrends.java
conflict があれば適宜修正しましょう。
以上です。