vim-jp.github.io icon indicating copy to clipboard operation
vim-jp.github.io copied to clipboard

「パッチの書き方」ページについて

Open koron opened this issue 14 years ago • 32 comments

今のパッチの書き方 はmercurialを使いながらも、git的でよろしくないとの指摘を受けました。気になって聞いたり調べたり実際に使ってみたのですが、確かにmercurialにおいてはMQのほうが便利で、特にVimのパッチ開発方法にはマッチします。

一方、現在gitへのcloneレポジトリの準備中で、vim-jpでレビューする上ではそちらのほうが都合が良かったりもします。というようなことから、最終的には以下の両方を解説するというのも手だろうと考え至りました。

  • mercurial MQでパッチを作る方法
  • gitでパッチを作る方法

ところで、本題とは関係ないですけどgitにもMQ的なのってないんですかね。あれはあれで便利なので気になりました。

koron avatar Sep 24 '11 08:09 koron

これはパッチを送る敷居がかなり下がりますね。

Shougo avatar Sep 24 '11 09:09 Shougo

書いてーーーーー

mattn avatar Sep 26 '11 00:09 mattn

んじゃMQ分は私が書きます。

koron avatar Sep 26 '11 01:09 koron

+1

MQについては、hgbookの12, 13章も詳しいです。 12 Managing change with Mercurial Queues 13 Advanced uses of Mercurial Queues

k-takata avatar Dec 17 '12 14:12 k-takata

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氏はテストコードがあるかどうかも重視しているようなので、テストを書くときに戸惑わなくてすみます。

Shougo avatar Jan 02 '13 03:01 Shougo

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言語)よりたいぶ敷居低いと思うので、分かり易く手順をまとめておけば貢献してくれる人が増える予感...

誰も反応しなかったら私がまったり書きます。

h-east avatar Jan 02 '13 05:01 h-east

誰か作ったらええやん!? シマリス好きの人とかw テストコード(Vim script)はVim本体(C言語)よりたいぶ敷居低いと思うので、分かり易く手順をまとめておけば貢献してくれる人が増える予感... 誰も反応しなかったら私がまったり書きます。

シマリス好きの人とは誰ですかね……。 そのTweetは見ていなかったのですが、確かにテストの追加方法 wikiがあると捗りそうです。 私もお手伝いしたいと思います。

Shougo avatar Jan 02 '13 05:01 Shougo

@h-eastさんから呼ばれてきました。

「テストの追加方法」wikiページについては、 既に頭に入ってる@Shougoさんに作成してもらった方が良いかと思います。 私が協力できるとしたら、「どの番号が何のテストしてるか一覧表」でしょうか。

ramu avatar Jan 02 '13 09:01 ramu

@ramu 一覧表作って貰えるのですか!欲しいです。 ありがとうございます。 +αで

$ head -1 test*.in

すると綺麗に1行説明が表示されるようにpatchを書くとかもありですね。

h-east avatar Jan 02 '13 10:01 h-east

@Shougo シマリス好き(ramu)がやって来ましたよw

私もお手伝いしたいと思います。

ありがとうございます。 まずは私の方で「Vim本体のテストについて」(昨晩書いたやつをもう少し砕いたやつ)を書きます。 それと「Vim本体のテストの追加方法」を書きます。 それとramuさんの一覧表出来てから次の展開考えましょうか。 ちなみに私の分は今日明日明後日とかには出て来ませんので( ゚Д゚)

h-east avatar Jan 02 '13 11:01 h-east

@Shougo シマリス好き(ramu)がやって来ましたよw

ああ、某ゲームのシマリスのことだったんですね。

まずは私の方で「Vim本体のテストについて」(昨晩書いたやつをもう少し砕いたやつ)を書きます。 それと「Vim本体のテストの追加方法」を書きます。 それとramuさんの一覧表出来てから次の展開考えましょうか。 ちなみに私の分は今日明日明後日とかには出て来ませんので( ゚Д゚)

了解です。さて、私は何をお手伝いしましょうか。 h_eastさんの昨日書いてくれたテストコードの解説、とかでしょうか。 多分、テストの例があるとわかりやすいかと思うので具体的なケースで解説できればなと思っています。

Shougo avatar Jan 02 '13 11:01 Shougo

はい、お願いします。 「Vim本体のテストの追加方法」を手付けてもらっても良いですよ。

h-east avatar Jan 02 '13 11:01 h-east

「Vim本体のテストの追加方法」を手付けてもらっても良いですよ。

そちらは時間があったらという事で……。

Shougo avatar Jan 02 '13 12:01 Shougo

何も進めていないのはまずいと思ったので、「テストの書き方」のページファイルを追加しておきました。

Shougo avatar Jan 04 '13 15:01 Shougo

testdir内のテストを一通り眺めて、一覧作成しました。

・テスト一覧表(編集権限付けてます) https://docs.google.com/spreadsheet/ccc?key=0AhjXDBX2Xpn0dE5VOUhnc1E5ZXhJOHB3UjUwM0lFTlE

Vim script力無いですが、:helpで調べながらテスト内容を確認、 日本語の簡単な説明 + キーワードを記載してあります。 「赤字で書いてある部分」が理解不能/大変だと思った所なので、 フォローおよび指摘して頂けると助かりますm(_ _)m

勉強になりました!

ramu avatar Jan 08 '13 15:01 ramu

@ramu :+1: 乙です!

koron avatar Jan 08 '13 15:01 koron

いくつかコメント付けましたが、今日はもう眠いのでまた明日以降。

koron avatar Jan 08 '13 16:01 koron

@koron 早速ありがとうございます! コメントを参考に明日見直ししようと思います

ramu avatar Jan 08 '13 16:01 ramu

んじゃMQ分は私が書きます。

とだいぶ前にコメントがありましたが、今見てみるとページにMQに関する記述が無いですね。 誰もやらないのなら、勉強がてら私が書いてみようと思いますがどうでしょうか。 あまり知識のないままとりあえず書いてみるので、間違いがあったら突っ込み等よろしくおねがいします。

Shougo avatar Apr 10 '13 11:04 Shougo

MQを用いるように手順を修正し、pushしました。 全体的な文章にも手を加えています。

Shougo avatar Apr 11 '13 02:04 Shougo

1行越えてるの無いから「※実際は1行」いらないかな。

mattn avatar Apr 11 '13 02:04 mattn

修正しました。

Shougo avatar Apr 11 '13 02:04 Shougo

mqの話を書いたなら、ブランチの話はいらない気がする。

mattn avatar Apr 11 '13 02:04 mattn

確かに。文章がおかしくなっていたので修正しました。

Shougo avatar Apr 11 '13 02:04 Shougo

色々文章を追記したり削除したりしたので、もはや別物になってしまった気がする……。 でも、MQは便利だから活用しないともったいないですよね。 後はこれでパッチを書く人が増えればいいなぁ。 少なくとも、私はもっと前からMQの使い方がわかっていればVimへパッチを書く敷居がかなり下がっていました。

Shougo avatar Apr 11 '13 02:04 Shougo

いえ、そもそもブランチを使った修正方法が間違いだったので消して良かったです。

mattn avatar Apr 11 '13 02:04 mattn

了解です。

Shougo avatar Apr 11 '13 03:04 Shougo

$ hg pull --mq

$ hg qpop -a     # 一旦パッチを全て適用解除
$ hg pull -u       # 最新のソースを取得、更新
$ hg qpush -a   # パッチを全て適用

かな? --mqはパッチキューをバージョン管理する場合に使うものです。 (後は、上でいくつか出てきている MQ の解説ページへのリンクがあってもよいかも。)

k-takata avatar Apr 11 '13 03:04 k-takata

上記の指摘を取り込みました。

Shougo avatar Apr 11 '13 03:04 Shougo

本日、少し記事をアップデートしました。

Shougo avatar May 26 '13 21:05 Shougo