« 2010年7月 | トップページ | 2010年9月 »

2010年8月の5件の記事

2010年8月28日 (土)

twicil の Geotagging 機能 を Android/Google Gears で使えるようにしてみた

Gears API - Google Code で位置情報を付けてツイートする twicli プラグインを作ってみました。

主に Android 標準のブラウザ向け。

LYNX SH-10B で動作確認しました。

Internet Explorer + Google Gears でも動くかも (未確認)。

ブラウザが標準で W3C Geolocation API Specification に対応してる場合 (Firefox 3.5、Opera 10.60、Chrome 5、Safari 5 (iPhone Safari 3) 以降) は不要です。

プラグインの追加方法は以下の通り。

  1. twicli の [+] タブを開く。
  2. Preferences を開く。
  3. plugins に http://gist.github.com/554729.txt https://raw.github.com/watagashi/twicli/android/plugins/gearsgeo.js を追加。
  4. [save] ボタンを押してリロード。

使い方は twicli 本体の GeoTagging 機能と同じです。

それから今回は試しに Gist - GitHub 使ってみたり。

はい。LYNX はこの前、買いました。

2010年8月27日 (金)

Hg-Git は rebase 出来ない (twicli rebase の続き)

昨日の記事 (rebase してもらった twicli の修正のその後に悩む: 「わ」の日記もどき) を書いた直後の @NeoCat さんからの情報。

Twitter / NeoCat: @_wa_ gitだとrebaseすると元のツリーは ...

@_wa_ gitだとrebaseすると元のツリーは消える(というかrebase結果に変更される)んですけど、hgだとどうするもんなんでしょうねえ。

http://twitter.com/NeoCat/statuses/22182169487

もしやブランチが出来てしまうのは Hg-Git Mercurial Plugin が rebase に対応してないからなのか。

ということで、本物の Git を使ってみることに。

git pull git://github.com/NeoCat/twicli.git master

とやったら

Automatic merge failed; fix conflicts and then commit the result. 

になった…。なんか失敗っぽい。

そこで元に戻してから

git pull --rebase git://github.com/NeoCat/twicli.git master

とやったら

Nothing to do. 

になった。

Git GUI を実行して確認。

ブランチが解消されて、本家と同じ一直線になった!

今度は自分の GitHub リポジトリに push したいところ。

しかし、git push --rebase なんてオプションはない。さて。

git push git@github.com:wa-/twicli.git master

とやったら拒否された。

 ! [rejected]        master -> master (non-fast forward)

結局、以下のように forced update を実行したら本家と同じになった。

git push -f git@github.com:wa-/twicli.git master

という訳で、rebase が発生するリポジトリに対して Hg-Git を使うのは避けましょうという話であった。

2010年8月26日 (木)

rebase してもらった twicli の修正のその後に悩む

先日、twicli の search.js プラグインでバグを見つけたので、プログラムを直してみて、作者の @NeoCat さんに GitHub でプルリクエストしてみた。

そしたら @NeoCat さんも別件 (その時発生していた Twitter API の不具合対策 Twitter Status - A known API issue is causing some clients to crash) でほぼ同時にコミットしており、コミットかち合うという事態に。

このままプルされればブランチが出来てしまうはずだけれど、 Twitter / NeoCat: @_wa_ あ、rebaseはこちらでやるので大丈夫ですよ ということで rebase していただいた。

で、本題はここから。

rebase された本家リポジトリ NeoCat/twicli をプルしたところ、自分のリポジトリのログが以下のようになってしまった (Hg-Git で hg pull と hg glog を実行した結果)。

o  チェンジセット:   317:22ffa2526833
|  親:               315:fb686eaff952
|  ユーザ:           NeoCat <**@**>
|  日付:             Wed Aug 25 01:10:29 2010 +0900
|  要約:             Fix search tab problem when searching some marks
|
| @  チェンジセット:   316:63a3bf86b644
|/|  親:               313:f147dfa3cb74
| |  親:               315:fb686eaff952
| |  ユーザ:           NeoCat <**@**>
| |  日付:             Tue Aug 24 23:59:55 2010 +0900
| |  要約:             Merge remote branch 'git-svn'
| |
o |  チェンジセット:   315:fb686eaff952
| |  ユーザ:           Takashi WADA <**@**>
| |  日付:             Tue Aug 24 14:54:01 2010 +0000
| |  要約:             fix "remove tab" when search word contains < or >.
| |
o |  チェンジセット:   314:31309fc15446
|/   ユーザ:           Takashi WADA <**@**>
|    日付:             Tue Aug 24 14:53:56 2010 +0000
|    要約:             fix "remove tab" when search word contains quot or backslash.
|
o  チェンジセット:   313:f147dfa3cb74
|  親:               310:0c6a639d2b9d
|  ユーザ:           NeoCat <**@**>
|  日付:             Tue Aug 24 14:22:34 2010 +0000
|  要約:             Skip null tweets (Twitter API bugs?)
|
| o  チェンジセット:   312:e09e689299f0
| |  タグ:             default/master
| |  タグ:             master
| |  ユーザ:           Takashi WADA <**@**>
| |  日付:             Tue Aug 24 23:43:33 2010 +0900
| |  要約:             fix "remove tab" when search word contains < or >.
| |
| o  チェンジセット:   311:cf357df7b86f
|/   ユーザ:           Takashi WADA <**@**>
|    日付:             Tue Aug 24 23:13:16 2010 +0900
|    要約:             fix "remove tab" when search word contains quot or backslash.
|
o  チェンジセット:   310:0c6a639d2b9d
|  ユーザ:           NeoCat <**@**>
|  日付:             Mon Aug 23 23:06:59 2010 +0000
|  要約:             Add FAQ for Post with shift/ctrl+Enter
|

ここで チェンジセット 311:cf357df7b86f と 312:e09e689299f0 は最初に自分が直してコミットしたときのチェンジセット、314:31309fc15446 と 315:fb686eaff952 が rebase されたチェンジセットである。

つまり、同じ修正内容のチェンジセットが 2つ出来てしまい、元のチェンジセットはブランチになってしまったのである。

さて、この場合、311:cf357df7b86f と 312:e09e689299f0 の扱いはどうしたらいいんだろうか。

  • 311:cf357df7b86f と 312:e09e689299f0 は search.js のバグを修正するという目的を持ったブランチなのだから、その目的を終えてもそのまま放置しておけばよい。
  • 同じ内容のチェンジセットが存在するのは良くないから、 311:cf357df7b86f と 312:e09e689299f0 は消してしまうのがよい。
    • Mercurial だったら MQ の hg strip で消せるし、公開リポジトリの Mercurial hosting — bitbucket.org にもそういう機能があるけれど、Git や GitHub ではどうするんだ?
  • 本家に取り込まれた修正なのだから、それに合わせてなんとか本家にマージすべきである。
    • マージしたって、そのマージ自体がブランチになってしまうから意味がない。

取り敢えずよく分からないから、今はそのまま放置してるけれど、本来はどうすべきなんだろう。

とにかく、rebase ってやつはややこしいなと思った。

もしここを見た方で、「普通はこうするものだよ」とか知ってる人がいたら教えて下さい…

2010年8月 8日 (日)

今度は Hg-Git から Git-Hub に push

今度は Hg-Git Mercurial PluginGitHub に push しようと考えた。

HTTP や HTTPS で簡単に push できる Mercurial と違い、Git の場合は基本、SSH での push になる。

しかし、自分はいつも Windows を使っており、UNIX 環境を利用することが殆どないため、SSH を使えるようにするところから始めなくてはならない。

OpenSSH 使うために Cygwin をセットアップするのも面倒だなと思い、msysGit 付属の OpenSSH を使った。

つまり Windows 用の Git をインストールしたというわけ。

msysgit を使った SSH の鍵の設定方法などは以下を参考に。

OpenSSH 互換の copssh も試してみたけれど、これは SSH サービス用に Windows のアカウントを作成する必要があったりして、使い勝手が余り良くなかった。

TortoiseHg に付いている TortoisePlink とか Pageant とかも使えるのかも知れないけれど、やり方が分からなかった。

それから、Mercurial の MQ エクステンションでパッチの管理領域を作ったリポジトリに対して Hg-Git を使うと、Mercurial がクラッシュしてしまうみたいなので併用は避けた方が良さそう。

もし MQ と Hg-Git を併用したい場合は、Hg-Git を使うリポジトリと MQ を使うリポジトリを別にして、双方で push/pull した方が良さそう。併用の必要性なんてそうなさそうだけれど。

2010年8月 3日 (火)

Hg-Git プラグインを使ってみた

Mercurial よりも Git の方が興味のある公開リポジトリがあるのよね。

ってことで、Hg-Git Mercurial Plugin を使ってみた。

Hg-Git は dulwich という Python のユーティリティを使用しているようだけれど、 TortoiseHg には最初から組み込まれているから、準備は不要。

先ずは、Hg-Git のプラグインを上記のサイトの download a snapshot と書かれたところからプラグインのアーカイブをダウンロードし展開。

次に、Hg-Git を使いたい作業領域の .hg/hgrc をテキストエディタで開き、以下の記述を追加。私が使ったのは Windows でだけれど、ディレクトリの区切りは一応 / で。

[extensions]
hgext.bookmarks =
hggit = (Hg-Git を展開したディレクトリ)/hg-git/hggit

bookmarks エクステンションを追加してるのは Git のブランチを Mercurial のブックマークに変換するためみたい。

その後は、コマンドプロンプトから例えば

hg clone git://github.com/NeoCat/twicli.git

を実行することで、twicli の Git リポジトリを Hg のリポジトリとしてあっさりクローンできた。

勿論、pull も大丈夫。

唯、Hg-Git プラグインを使っていて気になったというか、残念なこと。

  • Mercurial のリポジトリに push しようとすると、「予期せぬ例外が浮揚されました」とエラーになって失敗することがある。
    • このときは一時的に Hg-Git のエクステンションを無効にすればうまくいくようだ。
  • hg pull を1回やった後、続けてもう一度やろうとすると、「中止: プロセスはファイルにアクセスできません。別のプロセスが使用中です。」と出ることがある。
    • このときは hg gclear を実行し、Git のキャッシュをクリアするとうまくいくようだ。

とにもかくにも Git のリポジトリから Mercurial のリポジトリに clone や pull は出来たので、今度は逆もやってみようと思い… (続く、かも)

« 2010年7月 | トップページ | 2010年9月 »

Social connection

  • Check

最近のトラックバック

2017年5月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

これも見とるよ

その他

無料ブログはココログ