vim-jp.github.io
vim-jp.github.io copied to clipboard
「パッチの書き方」ページについて
今のパッチの書き方 はmercurialを使いながらも、git的でよろしくないとの指摘を受けました。気になって聞いたり調べたり実際に使ってみたのですが、確かにmercurialにおいてはMQのほうが便利で、特にVimのパッチ開発方法にはマッチします。
一方、現在gitへのcloneレポジトリの準備中で、vim-jpでレビューする上ではそちらのほうが都合が良かったりもします。というようなことから、最終的には以下の両方を解説するというのも手だろうと考え至りました。
- mercurial MQでパッチを作る方法
- gitでパッチを作る方法
ところで、本題とは関係ないですけどgitにもMQ的なのってないんですかね。あれはあれで便利なので気になりました。
これはパッチを送る敷居がかなり下がりますね。
書いてーーーーー
んじゃMQ分は私が書きます。
+1
MQについては、hgbookの12, 13章も詳しいです。 12 Managing change with Mercurial Queues 13 Advanced uses of Mercurial Queues
https://github.com/vim-jp/issues/issues/245
src/testdir/ にtest89を新規追加しました。(test89.in test89.ok)
テスト全体の流れを簡単に説明すると...
test*.ok を test.ok にコピー。(Makefile: 70)
test*.in の STARTTEST の次の行から ENDTEST の手前の行までを Xdotest というファイルに切り出して実行する。(Makefile: 73 →dotest.in)
実行中は基本的に自分自身にテスト結果を :$put ~ で追記していって、最後に start:という行以降を test.out に書き出す。(test89.in: 63)
test.outを1.のtest.okとdiff取って一致していたらtest.okをtest89.okにコピー。(Makefile: 87)
不一致ならtest.logにtest89 FAILEDと追記して、test.okをtest89.failedにコピー。
全てのテストが終わったらtest.logの有無を確認して、あれば内容を表示してエラー終了、無ければ ALL DONE を表示して大成功!(Makefile: 46)
せっかくh-eastさんにVimソースコードのテストの書き方を解説してもらったので、「パッチの書き方」ページにも情報を載せたいと考えています。機能追加の場合、Bram氏はテストコードがあるかどうかも重視しているようなので、テストを書くときに戸惑わなくてすみます。
12/30のBram氏のvim_devの返信
Instead of manual testing, it would be useful to have the tests in src/testdir. Vim is getting more and more complex, it's good to test every feature.
を見て私こんなツイートしました。 https://twitter.com/h_east/status/285251852361166848
vimのテスト(src/testdir)はどの番号が何のテストしてるか一覧表作ったほうが良いなぁ。vim-jpで「テストの追加方法」wikiページ作ったらええやん
誰か作ったらええやん!? シマリス好きの人とかw テストコード(Vim script)はVim本体(C言語)よりたいぶ敷居低いと思うので、分かり易く手順をまとめておけば貢献してくれる人が増える予感...
誰も反応しなかったら私がまったり書きます。
誰か作ったらええやん!? シマリス好きの人とかw テストコード(Vim script)はVim本体(C言語)よりたいぶ敷居低いと思うので、分かり易く手順をまとめておけば貢献してくれる人が増える予感... 誰も反応しなかったら私がまったり書きます。
シマリス好きの人とは誰ですかね……。 そのTweetは見ていなかったのですが、確かにテストの追加方法 wikiがあると捗りそうです。 私もお手伝いしたいと思います。
@h-eastさんから呼ばれてきました。
「テストの追加方法」wikiページについては、 既に頭に入ってる@Shougoさんに作成してもらった方が良いかと思います。 私が協力できるとしたら、「どの番号が何のテストしてるか一覧表」でしょうか。
@ramu 一覧表作って貰えるのですか!欲しいです。 ありがとうございます。 +αで
$ head -1 test*.in
すると綺麗に1行説明が表示されるようにpatchを書くとかもありですね。
@Shougo シマリス好き(ramu)がやって来ましたよw
私もお手伝いしたいと思います。
ありがとうございます。 まずは私の方で「Vim本体のテストについて」(昨晩書いたやつをもう少し砕いたやつ)を書きます。 それと「Vim本体のテストの追加方法」を書きます。 それとramuさんの一覧表出来てから次の展開考えましょうか。 ちなみに私の分は今日明日明後日とかには出て来ませんので( ゚Д゚)
@Shougo シマリス好き(ramu)がやって来ましたよw
ああ、某ゲームのシマリスのことだったんですね。
まずは私の方で「Vim本体のテストについて」(昨晩書いたやつをもう少し砕いたやつ)を書きます。 それと「Vim本体のテストの追加方法」を書きます。 それとramuさんの一覧表出来てから次の展開考えましょうか。 ちなみに私の分は今日明日明後日とかには出て来ませんので( ゚Д゚)
了解です。さて、私は何をお手伝いしましょうか。 h_eastさんの昨日書いてくれたテストコードの解説、とかでしょうか。 多分、テストの例があるとわかりやすいかと思うので具体的なケースで解説できればなと思っています。
はい、お願いします。 「Vim本体のテストの追加方法」を手付けてもらっても良いですよ。
「Vim本体のテストの追加方法」を手付けてもらっても良いですよ。
そちらは時間があったらという事で……。
何も進めていないのはまずいと思ったので、「テストの書き方」のページファイルを追加しておきました。
testdir内のテストを一通り眺めて、一覧作成しました。
・テスト一覧表(編集権限付けてます) https://docs.google.com/spreadsheet/ccc?key=0AhjXDBX2Xpn0dE5VOUhnc1E5ZXhJOHB3UjUwM0lFTlE
Vim script力無いですが、:helpで調べながらテスト内容を確認、 日本語の簡単な説明 + キーワードを記載してあります。 「赤字で書いてある部分」が理解不能/大変だと思った所なので、 フォローおよび指摘して頂けると助かりますm(_ _)m
勉強になりました!
@ramu :+1: 乙です!
いくつかコメント付けましたが、今日はもう眠いのでまた明日以降。
@koron 早速ありがとうございます! コメントを参考に明日見直ししようと思います
んじゃMQ分は私が書きます。
とだいぶ前にコメントがありましたが、今見てみるとページにMQに関する記述が無いですね。 誰もやらないのなら、勉強がてら私が書いてみようと思いますがどうでしょうか。 あまり知識のないままとりあえず書いてみるので、間違いがあったら突っ込み等よろしくおねがいします。
MQを用いるように手順を修正し、pushしました。 全体的な文章にも手を加えています。
1行越えてるの無いから「※実際は1行」いらないかな。
修正しました。
mqの話を書いたなら、ブランチの話はいらない気がする。
確かに。文章がおかしくなっていたので修正しました。
色々文章を追記したり削除したりしたので、もはや別物になってしまった気がする……。 でも、MQは便利だから活用しないともったいないですよね。 後はこれでパッチを書く人が増えればいいなぁ。 少なくとも、私はもっと前からMQの使い方がわかっていればVimへパッチを書く敷居がかなり下がっていました。
いえ、そもそもブランチを使った修正方法が間違いだったので消して良かったです。
了解です。
$ hg pull --mq
$ hg qpop -a # 一旦パッチを全て適用解除
$ hg pull -u # 最新のソースを取得、更新
$ hg qpush -a # パッチを全て適用
かな? --mqはパッチキューをバージョン管理する場合に使うものです。
(後は、上でいくつか出てきている MQ の解説ページへのリンクがあってもよいかも。)
上記の指摘を取り込みました。
本日、少し記事をアップデートしました。