トップ 最新 追記

Route 477



2009-04-01

[biwascheme] BiwaSchemeのメーリングリストができました

Google Groupが簡単に作れるっぽいのでとりあえず取ってみた。

英語
http://groups.google.co.jp/group/biwascheme
日本語
http://groups.google.co.jp/group/biwascheme-ja

最近yamatoさんといろいろメールのやりとりをしているので、話題はあります。

[biwascheme][git] githubのリポジトリの内容をWeb的に公開したい

BiwaSchemeはリポジトリがgithubにあって、公式サイト(というほどのものでもないけど)がサークルのサーバにある。

ので、githubにpushしたものをいちいちpullするのが面倒なのですよ。 だけどpullしないとWebから試せるものはいつまでも古いまま。これは困った。

そこでGithub Pagesが使えないか調べてみた。これは、githubに「yhara.github.com」という名前のリポジトリを作ると http://yhara.github.com/ でその内容が見えるというものだけど、それに加えて既存のリポジトリをミラーする機能もあるようだ(Project Pages)。

Project Pagesは主にrdocなんかを用途として想定してるみたいだけど、これを使ってbiwashcmeリポジトリをミラーしてもらえば、 REPLであるindex.htmlが http://yhara.github.com/biwascheme/index.html とかでアクセスできるようになるはず。これで勝つる!

やり方

デフォルトのname.github.comにある短い説明じゃ分かんなかったんだけど、どうもyhara.github.comではなくbiwaschemeのリポジトリ側に なにか操作をする必要があるらしい。

やり方は、http://pages.github.com/ に従って、作業中のコミットを片付け、gh-pagesというブランチを作り、ファイルをコミットする…と。

あれ、じゃあリポジトリの全体がミラーされるわけじゃないのか…。 どうしよう。

  • 案A: gh-pagesをメインのブランチとして作業する。
  • 案B: 適当なタイミングで、masterからgh-pagesにマージを行う。

なんか

  • 案C: Github Pagesを諦め、cronで一日一回git pullすることにする。

でもいい気がしてきたw


2009-04-02

[misc] 今週末は東京にいることになりました

4/4(土)午後と4/5(日)です。(月曜は仕事)

なんか面白いイベントないですかねー。

[biwascheme][git] git submodule(SVNの外部参照みたいなやつ)を使ってみた

動機

biwaschemeを使ったアプリケーション(以下tickets) を書いているのだが、利用者にとってみると、ticketsとbiwaschemeという 2つのリポジトリをcloneしないといけないので面倒。

さらに、ticketsで必要になった機能をbiwaschemeに随時追加したりしているので(例:R6RS hashtable)、 2つのリポジトリを同時にcloneしないと依存関係が合わなくて動かない。これは面倒。

解決法

ticketsのリポジトリにおいて、biwaschemeをサブモジュールとして登録する。

submoduleはサブディレクトリで普通にgit cloneするのと近い感じだけど、ticketsの各コミットと、「その時使っていた biwaschemeのバージョン」が対応付けられるので、上のような依存問題が発生しない。

手順

まずticketsの側で

git submodule add git://github.com/yhara/biwascheme.git

とした。これで、biwascheme/ 以下にリポジトリbiwaschemeのファイルがcloneされる。git ci でこの変更をコミットする。

あとは、tickets/biwascheme/以下でgit pullすることで、サブモジュールを最新版に更新できる。 が、これはtickets内の変更とも見なされるので、tickets側で「biwaschemeを最新のものにした」ということをコミットしなければならないようだ。

制限

  • tickets/biwascheme/ 以下で作業を行ったときは、tickets側でpushする前にtickets/biwascheme/以下をコミットしてpushしておかなければならない…らしい。
  • 利用者がticketsをcloneする場合、サブモジュールは自動では取ってこないので、git submodule init; git submodule updateが必要。
本日のツッコミ(全2件) [ツッコミを入れる]

mokehehe [add と submodule は逆でしょうか? msysgitで試したところ、最後に持ってくる名前?を入れる必要が..]

yhara [git submodule addが正しいです。直しておきました。]


2009-04-03

[event] 今週日曜にBiwaScheme Hackathon@東京

という名前のイベントをやってみたかっただけで、限定する気はあんまりないですが:

JOIN NOW!

http://atnd.org/events/508

10人くらいまでは大丈夫だそうです。


2009-04-07

[event][biwascheme] BiwaScheme Hackathon #1

というイベントが、先週土曜日に行なわれました。

流れとしては、東京行きますという日記を書いたらyamatoさんとmokeheheさんからお誘いを頂いて、せっかくならご一緒にお会いしましょうかということで今回のイベントになりました。

そんで行ってみたら初対面の方が5人いたり、全員がBiwaSchemeを知ってたり(まあそうか)異常な空間だった。

どうやらyamatoさんは本気でアプリケーションを書こうとされているようで、プロジェクトに対する責任感が芽生えたような気がしました。 もう自分のためだけのBiwaSchemeじゃないのね、みたいな。

BiwaSchemeの内部構造の話をしたり、デバッガの話をしたり、長らく忘れてたことをいろいろ思い出しました。 あといろいろアイデアをいただいた。

  • 例外処理。throwとcatchで実装できるかと思ったけど、ネットワーク通信とか挟むとスレッドが変わるから駄目だなぁ。jsで書かれたライブラリ関数からもraiseしたいと思うとマクロですますわけにも。
  • wonderscm(wonderflのScheme版)は面白いと思うので、さくっと実装できそうだったらぜひやってみたい。
  • メモ代わりに、specに「これがバグるよ」という項があるといい。
  • URLのパラメータ部分をJSから取得したい。
  • dumpの色分け。
  • cookie。
  • CDATAでくくる。

twitterにも書いたけど、自分のプロジェクトのイベントができるというのはとても幸せなことであるのが分かった。 続けていると良いことがあるものです。 改めて、今回来て下さった方に感謝を。次回以降も機会を見つけてやりたいと思ってるので、今回参加できなかった方もよろしくお願いします。

[scala] Scala DSLによるBASIC実装

Scalaすげー。

Rubyでは行番号がどうやっても無理で、Schemeでも改行がread時に消えちゃうからダメ。 Common Lisp+リーダマクロならできると思うけど。

[prog] Lisp風のマクロとPython風の文法を持つ言語、PLOT

それ何てCyan?て感じですが…。

リファレンスで、if式より前にマクロがあるところがなんとも(笑)。

        if x < 10
          f(x)
          g(x - 1)
        elseif x < 100
          f(x, x * 2)
        else
          f(x / 1000)

forという構文を定義するマクロの例(一番下)。Lispから括弧を抜いたような雰囲気がありますが、しかし記号が多いな…。


2009-04-08

[prog] ジェバンニが一晩で

朝起きてtrackfeedのログを見てびっくりした(笑)。

db33e44e16f5b3a0159a2bf9a98f9af1.png

皆さん仕事が速すぎる。

[rails][rspec] restful-authenticationの作るspecがRails 2.3.2に対応していない

以下のようなエラーが出ると思う。

3)NoMethodError in 'UsersController named routing should route user_(:id => '1') to /users/1'
undefined method `formatted_user_path' for #<Spec::Rails::Example::ControllerExampleGroup::Subclass_4::Subclass_3:0x22bcd8c>./spec/controllers/users_controller_spec.rb:152:

4)Test::Unit::AssertionFailedError in 'UsersController route generation should route users's 'update' action correctly'The recognized options <{"action"=>"show", "id"=>"1", "controller"=>"users"}> did not match <{"action"=>"update", "id"=>"1", "controller"=>"users"}>, difference: <{"action"=>"update"}>
./spec/controllers/users_controller_spec.rb:83:

こんな感じで直した。

http://gist.github.com/91779

参考:


2009-04-09

[biwascheme] GoogleMapsに1800個くらいマーカー置こうとしたらブラウザが限界に達した

所用で久しぶりに(卒論以来か?) BiwaSchemeでGoogle Mapsいじるコードを書いてたんだけど、 マーカーを1800個くらい置くSchemeのコードを書いたらFirefoxもOperaもSafarも 操作不能になった(いや、Operaは操作はできたな)。

ところどころにsleep入れてるんだけど、それでも駄目なんだよね。というか、evalじゃなくてread時に時間かかってるっぽい。 別にS式が巨大なわけじゃなくて、120文字くらいのが2000個あるだけなんだけど。もう少し要調査か。

ところがですね、製作途中らしいMac版Google Chrome(参考)だけは 実用的な速度(10秒くらい?)で動くんですよ。まあ機能がまだ全然ないので速いってのもあるかも知れんけど、それにしてもChromeやばい。

ちなみに書いてたコードはこんなの。「新しくマーカを作り、クリックされたらInfoWindowにこの文字列を表示する」とかも普通にできます。

(define *map* #f)
(define *markers* #f)

(define (point lat lng)
  (js-new "GLatLng" lat lng))

(define (marker-new pt)
  (js-new "GMarker" pt))

(define (add-marker! pt proc)
  (let ((marker (marker-new pt))
        (depth (- 15 (random-integer 2))))
    (js-invoke *markers* "addMarker"
               marker depth)
    (js-invoke (js-eval "GEvent") "addListener"
               marker "click"
               (js-closure (lambda (e) (proc marker))))))

(define (add-store! name lat lng addr url misc)
  (define (on-click marker)
    (let* ((br "<br>\n")
           (str (string-append name br addr br url br misc br)))
      (js-invoke marker "openInfoWindowHtml" str)))
  (when lat
    (add-marker! (point lat lng) on-click)))

(define center (point 35.4813224 133.0679589))
(define (init)
  (set! *map* (js-new "GMap2" ($ "map")))
  (js-invoke *map* "setCenter" center 14)
  (js-invoke *map* "addControl" (js-new "GLargeMapControl"))
  (set! *markers* (js-new "MarkerManager" *map*))
  )

(init)

(load "loader.scm")

[rails] Rails2.3だとプロジェクト作るときにテンプレート使えるらしい

bortとかextended-bortとかrocket-starterとか、「いろんなプラグインが入った状態から開発を始める」ための Rails関連ツールってのがいくつもあったわけですが、 Rails2.3からは「Rails Template」(Application Template?)という、railsコマンドでプロジェクト作ったあとに 自動でなんかするための機構が導入されたみたい。

参考:

まあなんかtemplate.rbに

# template.rb
run "rm public/index.html"
generate(:scaffold, "person name:string")
route "map.root :controller => 'people'"
rake("db:migrate")

git :init
git :add => "."
git :commit => "-a -m 'Initial commit'"

などと書いておき、

 rails foobar -m template.rb

とすると、プロジェクト作成後に自動的にscaffoldしたり、db:migrateしたり、gitリポジトリ作ったりしてくれると。 なかなか良い感じです。

サンプルがこのへんにあります。

ただ一つ気になったのは、pluginコマンドでプラグインを追加するとき、リポジトリの最新版しか取って来れないという点。 せっかく、script/pluginならタグが指定できるってのに…。 しかもscript/pluginはこれはこれでgitのsubmoduleにできないんだね(pluginコマンドはこれができる)。

んで、むりやり特定バージョンをsubmoduleにする方法を考えてみた。

# Install plugins
def submodule(url, tag=nil)
  name = url[%r{/([^/]*)\.git\z}, 1] or raise "wrong git url? #{url}"
  run "git submodule add #{url} vendor/plugins/#{name}"
  inside("vendor/plugins/#{name}"){ 
    run "git checkout #{tag}" if tag
  }
end

submodule 'git://github.com/dchelimsky/rspec.git', '1.2.2'
submodule 'git://github.com/dchelimsky/rspec-rails.git', '1.2.2'

うん、まあ、そのうち対応される気がするんで、おとなしく手でsubmodule addすればいいんじゃないかな。

本日のツッコミ(全3件) [ツッコミを入れる]

Yuya [Google Mapsは、MarkerManagerを使うと改善したりしないですかね。]

yhara [いえ、MarkerManager使ってこんな感じでした。]

Yuya [おっと失礼。GMarkerManagerだったかな。 MarkerManagerには2つのメジャーな実装があったよう..]


2009-04-10

[event][ruby] 9月、松江にて「RubyWorld Conference」

国際会議だそうですよ。

松江を訪れたことない方はこの機会にどうでしょう。

[ruby] Thorってなんなの?yet another rakeなの?

Thorについて分かっていること:

  • rubyforgeにアカウントがあるがリリースはない
  • と思ったらgithubから入れろということか
  • コマンドラインアプリを書くためのツールらしい
  • 作者の説明
  • Merbの開発者だ
  • sinatra-bookのビルドにも使われてる

どうも、*.thorというファイルでThorを継承したクラスを定義しておくと、そのメソッドが thor なんちゃら で呼べたりするらしい。

例。test.thor (ファイル名はどうも関係ないらしい)

class Sample < Thor
  desc "hello", "greets to you"
  def hello
    puts "Hello!"
  end
end

thor sample:hello で実行。

Hello!

thor -Tでタスク一覧。

sample
------
sample:hello                       greets to you

ふーん。

Rakeタスクとできることは同じような感じだけど*1

  • Rakeは依存関係を記述するのが主目的で、コマンドラインツールとして使うのは若干目的を外れている
  • Thorの方が薄いDSL (素のRubyに近い) ので書きやすそう

と思った。

*1 bin/rake2thorとかあるから、意識はしてるみたいだw

[ruby] Hamlのチートシートを書きました

「cheet sheet」の日本語訳って何だろうと考えると、やっぱり「早見表」だと思うんよね。

どうぞご利用下さい。


2009-04-13

[git] 「gitを始める前に知っておいたほうがいいこと」的な発表をした

社内勉強会でgitの話をした。gitはsvnと違うところがありすぎて(コマンド名とかstagingとか)、いきなり触るととっつきにくいところが多いので、 そのへんを自分なりにまとめてみた感じです。

そのうちこっちにまとめる。

[ruby][sinatra] gihyo.jpにSinatraの記事を書きました

mameさんからバトンをいただいて、gihyo.jpのWeb連載 「Ruby Freaks Lounge」でRubyのWebフレームワークの話を書かせていただきました。

SinatraはDSLを使ってWebアプリを簡単に書けるフレームワークで……という話は連載の方に譲りますが、 Sinatraは充分実用に耐える能力を持っていると思うので、ぜひ一度試してみて下さい。

まだ整理中ですが、Sinatraのチートシートも書いたので良ければどうぞ。


2009-04-14

[ruby][git] JRubyがgitに移行

JRubyのリポジトリがsvnからgitに移行したそうな。

なぜgitを選んだかについては、

  • 長いこと分散SCMを検討していて、Mercurialかgitにしようと思っていた
  • KenaiはsvnとMercurialしか使えなかったんだけど、最近gitがサポートされた
  • githubにリポジトリ置いた方がRubyistの援助を集めやすいんじゃね?
  • そうこうする間にgitが気に入ってきた
  • まあ結局、Ruby界でgitが人気だからgitにした。もしJythonの開発をやってたらMercurialの方を選んだだろうね

とのこと。

[ruby][javascript] Rubyでブラウザを使わずにJavaScriptのテストを行う

WWW::MecanizeやNokogiriのアーロンさんより。

rake testでJSのテストまでやりたかったので、いろいろyak shavingしてるうちに1年以上ハックし続けてしまったそうなw。

んで、実現に必要なものが3つあって、即ち:

  1. Rubyから操作できるJavaScript処理系。→ jhonsonというspidemonkeyのRubyラッパが使える。
  2. 適当なHTMLも解析できるXMLパーザ。→nokogiriが使える。
  3. DOMをエミュレートするライブラリ。→takaできたよー

これらを使うことで、

 assert_equal 0, @document.getElementsByTagName('option').length

という感じでJSのテストが書けると。…無茶しやがってwww

まだtakaで実装してないDOMのapiもあるそうなんで、応援したい人はがんがんパッチ書くと良いです。

本日のツッコミ(全1件) [ツッコミを入れる]

wtnabe [ほしかったっす!]


2009-04-15

[javascript][scheme] js-scheme

a Scheme interpreter written in JavaScript…とな?

継続は脱出用途しかサポートしないようだけど、デモのコマンドライン風REPLはいいな。

via http://onbangdo.readymade.jp/etc/?p=%282009.04.14%29

[misc] 英語を練習するためのチャット作った

インターネットのおかげで外人とチャットするとかすげー簡単になったわけなんですけど(例:IRC@freenode)、 やっぱりちょっとなんというか敷居が高いわけです。 剣道で例えると、自分は授業でちょろっとやっただけなのに五段の人と練習試合するみたいな。 「大丈夫、手加減するから」って言われても怖いじゃないですかwww

なので最初は日本人どうしで練習すればいいと思った。

ujihisaに昔の記事をremindされて思いつきました。ノープランですがよろしくお願いします。 日本人どうしだから超適当でも大丈夫だよ!!

#んで「間違いを気にしなければ意外と書けるんだ」ってことに気づいたら、英語のMLとかIRCとかに参戦できるようになると思います。

[ruby] ライブラリ「ActiveRecord」「DataMapper」の元ネタについて調べてみた

PofEAAっつー本のデザインパターン名らしい。

0321127420 4798105538

以下メモ

OTN Japan - 今だからデータ・アクセスを真剣に考える! 第1回

  • システムはだいだい以下の階層に分けられるよ(分け方は人によるけど)
    • UI層 / アプリ層 / サービス層 / ドメイン層 / パーシステンス層 / データストア(RDBなど)
    • Table Data Gateway、Row Data Gateway、Active Record、Data Mapper はパーシステンス層のパターン
  • ドメイン層にも以下のようなパターンがあるよ
    • Transaction Script
      • 機能をクラスにし処理をメソッドにする。
    • Domain Model
      • データをクラスにする。OO寄り。テーブルとクラスが(必ずしも)対応しない。
    • Table Module
      • データをクラスにする。RDB寄り。1テーブル1クラス。
    • 対象が複雑になったときの拡張性が違う。

OTN Japan - 今だからデータ・アクセスを真剣に考える! 第2回

  • パーシステンス層のパターン
    • Table Data Gateway
      • あるテーブルにアクセスするクラスを定義し、そいつ経由でDBアクセスを行う。
    • Row Data Gateway
      • あるテーブルの1行(レコード)を表すクラスを定義する。
    • Active Record
      • テーブルの1行(レコード)が1インスタンスになる。Row Data Gatewayと似ている
      • Row Data Gatewayと違い、ドメインロジックをメソッドとして含む。(Railsでいうモデルに定義するメソッドとか)
    • Data Mapper
      • ドメイン層にもデータストアにもなるべく依存せず、O/R間のデータ変換を行う
  • それぞれ、ドメイン層のどのパターンと合わせやすいかが違う
    • # RubyだとORMライブラリがドメイン層まで吸収してるので考える余地はなさそう
  • O/Rインピーダンスミスマッチの話
  • 大規模開発においては、OとRを分離して作りやすい「Domain Model」+「Data Mapper」がいいんじゃないか

[book][javascript] オライリー本「Prototype & script.aculo.us」

買っちゃった。

4873113725

  • 単なるリファレンスじゃなくて、「この関数はこういう時に使え」みたいなことも書いてあるのが嬉しい。
  • インプレース編集機能とかあったのか…。

2009-04-16

[softs] Apache Couchdb

Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール

  • RDBではなく、json形式のデータを保存。スキーマはない
  • HTTP経由のREST APIで操作
  • MapReduce風のクエリが使える
  • 実装はErlang

なんぞこれー。

[web] formula

TeX形式で書いた数式をブログに貼れるサービスらしい。

これでtDiaryでも簡単に数式が書けますね。

[misc] 人につくらせ、人に選ばせることで目的のものを手に入れる

(via http://b.hatena.ne.jp/kokokubeta/20090416 )

面白かった。

あるサイトに誘導するための広告バナーが欲しいときに、

  • ユーザに200個くらいバナーを作ってもらい、
  • それらを実際に表示し、クリック率の高いものを選ぶ

ことで「本当にクリックされるバナー広告」を作ることができる、という話。(いや、そういうシステムのバナー製作サイトができた、という話か。)

「作成」と「選別」に(大量の)人力を使うところがポイントか。

例えば芸能人のそっくりさんを探したいときに、

  • 芸能人に似てる写真を投稿するサイトと (「顔ちぇき」とかあるよね)
  • 芸能人に似てる度をユーザが評価するサイト

を用意すれば、自動的にそっくりさんが集まる、と。(効率がいいかはともかく)


2009-04-19

[haskell] link: HaskellによるAOBenchのコードの高速化をしてみた - 2009-04-11 - TTSYの日記

7.98秒っていうと、インタプリタではなかなか出せない感じのタイムですね。

高速化されたあとのコードがgithubに。高度なHaskellは読めん。

AOBenchのページはこちら。


2009-04-21

[ruby] gemを自作したのに実行ファイルがインストールされないと思ったら

gemspecの書き方が悪かった。$GEM_HOME/specification/*.gemspec から適当なものを参考に…と思ったけど、 それよりもまず:

ちゃんとマニュアル読まないとね。

executablesに実行ファイル名のリストを、 default_executableに一番重要な実行ファイル名を書く。

 spec.executables = ['bin/foo', 'bin/bar']
 spec.default_executable = 'bin/bar'

といっても、default_executableは今のところは何にも使われないみたいだけど。

  •  

ちなみにgemspec作るにはrtask使うのが簡単ですよ。 デフォルトで移動がカーソルキーなのにだけ注意。

[ruby] Hpricot 0.7出てたのか

MechanizeがNokogiriに移行しちゃったしなー(というかそのためのNokogiriかね)、Hpricot追いかける意欲が減退してるのは本当。

しかし「JRubyで動くのはHpricotだけ!」、その通り。IronRubyへのポートも進んでるとか。すげえ。

以下、「おまえらHpricotに不利なベンチマーク取ってるだろ」とすねる_why先生と、 「つーかバグトラッカー放置しすぎ」と正論を吐くRyan Davis、そして 「ベンチマークのコードはgithubにあるから改善してくれない?」と提案する(そして断られる)アーロンさん。


2009-04-22

[misc] ATOKだと「。」の変換で「…」が出せるぞ!

しらんかった。。。

これで「点」とか「店」に変換されてイラっとくることもなくなりますね…。

本日のツッコミ(全1件) [ツッコミを入れる]

g_maeda [「・」または「・・・」の変換でもOKです。]



2009-04-27

[ruby] gihyo.jpにSinatraで掲示板を作る記事を書きました

SequelとHamlの紹介もあるよ!

こちらもどうぞ↓

[biwascheme][memo] JSのテストをJSでできないか

JSのテストをJSでできないか。イベント処理も含めて。

作戦1

Prototype.jsではカスタムイベント+fireが使えるので、BiwaSchemeでいうとadd-handler! (Element.observe相当) をオーバーライドして カスタムイベントを経由させれば、スクリプトからイベントを発火させることが可能に。

という実験をBiwaSchemeでやってるんだけどさー。 「新規アイテム作成→削除」という単純なテストがあったときに

  (js-invoke ($ "origin") "fire" "bs:click")                                
  ; ---
  (expect (vector-length (ticket-divs)) is 1)
                                                                            
  (js-invoke ($ "hand_delete") "fire" "bs:click")
  ; ---
  (expect (vector-length (ticket-divs)) is 0)

上の「---」の部分がイベントハンドラの実行終了までブロックしてくれないので、アイテムが作られる前にexpectが実行されちゃってfailした。

作戦2

もうイベントハンドラ自分で実行すればいいんじゃないかなぁ。

(つづく?)

本日のツッコミ(全2件) [ツッコミを入れる]

jugyo [ブログ記事へのリンクありがとうございますー]

yhara [いえいえー]


2009-04-28

[ruby][scraping] Nokogiriに新機能が取り込まれたよ

NokogiriにもWeb::Scraperのshellみたいのが欲しいなーと思っていて、そしたらSequel添付のsequelコマンドが irbを使ってそれっぽいことを簡単に実現してたので、真似してみた。bin/nokogiri

んで、コミットしてpull request送ったら採用されました。これは嬉しい。

使い方は、

$ nokogiri http://www.ruby-lang.org/ (もしくはHTMlファイルのパス)

などとすると、変数@docに指定URLのHTMLを表すNokogiriオブジェクトが入った状態でirbが起動する、という感じです。 自分でいうのも何だけどこれは便利。

そのうちリリースされると思います (追記:されました) (今すぐ使いたい方はbin/nokogiriだけ取ってきてパスを通せばおk)


2009-04-29

[git] WEB+DB PRESS Vol50の「はじめてのGit」が神記事

読み終わった。

477413838X

なんといってもメンテナ自らが書いてるということで、言ってみれば世界一Gitに詳しい人(の一人)による入門記事なわけですよ。

紹介されているコマンドは以下の通り。

  • git add : ファイル・変更の追加
  • git commit : コミット
  • git diff : 差分 (git diff, git diff --cached, git diff HEADの違いも!)
  • git status : ワークツリーの状態を表示
  • git show : あるコミットの情報を表示
  • git log : コミット履歴
  • git blame :
  • gitk : GUIツール
  • git revert : コミットの取り消し(あるコミットを打ち消すコミットを行う)
  • git checkout : ファイルの取り出し
  • git reset : コミットの取り消し(コミット履歴そのものを削除する)
  • git rebase -i : 2つ以上前のコミットの書き換え
  • git pull : 変更の受信
  • git push : 変更の送信
  • git clone : リポジトリの複製
  • git init : リポジトリの初期化

「Gitではこういうことができます」という記事はWebにいろいろあるけど、 「Gitはこういう風に使います」というところまで書いてあるのが嬉しかった。 プロジェクトの規模に合わせて、柔軟にブランチを管理できるみたい。

本日のツッコミ(全2件) [ツッコミを入れる]

いまい [pullとpushが逆?]

yhara [直しました。ありがとうございます。]


2009-04-30

[git] git-svnが意外に簡単だった件

以下を参考に。

リポジトリの初期化

 $ git svn clone <subversion-url> ?optional-directory-name?

svnのリポジトリから、ローカルなgitのリポジトリを作る。全ての履歴を取ってくるので多少、時間はかかる。(たぶんオプションで最新版だけとかできそう)

コミットの受信

 $ git svn rebase

コミットの送信

 $ git svn dcommit

ローカルの各コミットがsvn側に送信される。

注意点としては、「マージ」はsvnにうまく変換できないこと。だからローカルでブランチを作るときは、マージ時にfast-forwardになるようにしなければならない(多分)。

こういうのはいいけど、

   *-*-
  /    \
--*-----*--

こういうのはダメなんじゃないかな。

   *-*-
  /    \
--*--*--*--

というか、怖いので当面はブランチ作らない予定。

それ意味あるの?と言われそうだけど、git logが爆速なのでそれだけで幸せです(^o^)

本日のツッコミ(全3件) [ツッコミを入れる]

okkez [trunk だけ clone してるけど、ブランチ関連で困ったことはないですよ。 master で git svn ..]

ujihisa [意外に]

yhara [thx]