@@ -5,33 +5,26 @@ title: パッチの書き方
5
5
6
6
パッチを書いたことがない、または他の人のパッチを試したことがない皆さんにとって、パッチというのは敷居の高いことかもしれません。
7
7
しかし、一度Vimにパッチを書いてみたり、他人のパッチを試してみると、パッチを扱うことが空気のように思えてくるはずです。
8
- Vimはバージョン管理ツールとしてMercurialを採用しているおかげで 、簡単にパッチを作成し管理することができます。
8
+ Vimはバージョン管理ツールとして Git を採用しているおかげで 、簡単にパッチを作成し管理することができます。
9
9
ここではパッチの作成方法について学びましょう。
10
10
11
11
最近、www.vim.org のページに[ Vim development] ( http://www.vim.org/develop.php ) という記事ができました。
12
12
こちらは英語ですが、手順がよくまとまっているため、英語を苦にしない人はこちらを参照するとよいでしょう。
13
13
14
- まず前提条件として、あなたのPCではコンパイル環境が整備されており、[ Mercurial ] ( http ://mercurial.selenic .com/) が使える状態になっているとします。
14
+ まず前提条件として、あなたのPCではコンパイル環境が整備されており、[ Git ] ( https ://git-scm .com/) が使える状態になっているとします。
15
15
Windowsユーザーであれば[ Visual Studioでのコンパイル方法] ( http://vim-jp.org/docs/build_windows_msvc.html ) もしくは[ MinGWでのコンパイル方法] ( http://vim-jp.org/docs/build_windows_mingw.html ) も参照して下さい。
16
16
17
17
最新のソースコードを取得する為に、シェル(Windowsであればコマンドプロンプト)から以下を実行します。
18
18
19
- $ hg clone https://bitbucket.org /vim-mirror /vim
19
+ $ git clone https://github.com /vim/vim
20
20
21
- 今回の手順では [ Mercurial Queue ] ( http://mercurial.selenic.com/wiki/JapaneseMqExtension ) を利用するので、あらかじめ機能を有効化しておきましょう 。
21
+ 次に修正内容に対応するブランチを作成します 。
22
22
23
- $ cat ~/.hgrc
24
- [extensions]
25
- mq=
23
+ $ git checkout -b add-new-func-trim
26
24
27
- 次に修正内容に対応するパッチを作成します。
28
- 今回はパッチ名を` 010-fix-quickfix-on-windows.patch ` としました。
25
+ ブランチを移動したらソースファイルを修正します。
29
26
30
- $ hg qnew 010-fix-quickfix-on-windows.patch
31
-
32
- パッチが作成されたらソースファイルを修正します。
33
-
34
- $ vim os_win32.c
27
+ $ vim evalfunc.c
35
28
36
29
この際コーディングスタイルは既存のものに合わせるようにしましょう。
37
30
[ ` :help coding-style ` ] ( http://vim-jp.org/vimdoc-ja/develop.html#coding-style ) にコーディング規約が書かれてあります。
@@ -41,20 +34,33 @@ Windowsユーザーであれば[Visual Studioでのコンパイル方法](http:/
41
34
42
35
$ patch -p1 < something.patch
43
36
44
- ソースファイルを修正したらパッチを更新しましょう 。
37
+ ソースファイルを修正したらコミットしましょう 。
45
38
46
- $ hg qrefresh
39
+ $ git commit -m "added new function trim()"
47
40
48
41
もし、修正中に元のソースコードが変更された場合は、次のコマンドでリポジトリを同期させます。
49
42
50
- $ hg qpop -a; hg pull -u; hg qpush -a
43
+ $ git fetch --all
44
+ $ git rebase master
45
+
46
+ 全ての修正が完了したら pull-request を送信しましょう。GitHub 上で vim のリポジトリから Fork ボタンをクリックするか、[ hub] ( https://github.com/github/hub ) コマンドをお持ちであれば ` hub fork ` でも可能です。fork が出来たら自分のリポジトリに対して push します。
47
+
48
+ $ hub fork
49
+ $ git push [ユーザID] add-new-func-trim
50
+
51
+ あとはブラウザで vim のリポジトリを開くと pull-request ボタンが表示されるので指示に従って pull-request を作成して下さい。その際、海外の方も開発に参加していますので本文は英語で書いて頂く必要があります。
51
52
52
- 全ての修正が完了したらパッチファイルを作りましょう。最終的には全修正を一連のパッチファイルとしてメーリングリストに投げます。
53
+ pull-request の冒頭で
53
54
54
- $ hg qdiff > fix-quickfix-on-windows.diff
55
+ - 発生している現象
56
+ - 再現手順
57
+
58
+ を説明します。また、パッチを作成してメーリングリストに送信する方法もあります。
59
+
60
+ $ git diff master > add-new-func-trim.diff
55
61
56
62
これで作成したパッチの差分ファイルが作成出来るので、メーリングリスト[ vim\_ dev] ( https://groups.google.com/forum/#!forum/vim_dev ) に添付ファイルを付けるか本文に貼り付けてメールを投げます。(vim\_ dev初回投稿時はBram氏の承認が必要なため、すぐには表示されません。)
57
- メールの冒頭で
63
+ pull-request と同様にメールの冒頭で
58
64
59
65
- 発生している現象
60
66
- 再現手順
@@ -68,21 +74,15 @@ Windowsユーザーであれば[Visual Studioでのコンパイル方法](http:/
68
74
Vimでは基本的にバグ修正が優先して取り込まれ、新機能の追加は後回しにされる傾向が強いです。
69
75
特に巨大な変更の場合、パッチの取り込みがマイナーリリース時点まで保留されることもあります。
70
76
71
- パッチが取り込まれ、パッチが不要になったら
77
+ パッチが取り込まれたらローカルのブランチを削除しても構いません。
72
78
73
- $ hg qdelete
79
+ $ git checkout master
80
+ $ git branch -D add-new-func-trim
74
81
75
- で削除できます。あとは最新版のVimをMercurialで取ってきてコンパイルするだけです 。
82
+ で削除できます。あとは最新版のVimを Git で取ってきてコンパイルするだけです 。
76
83
77
84
さぁ君もCONTRIBUTE AUTHORになろう!
78
85
79
- ※ここで紹介しているMercurial Queueは[ quilt] ( http://savannah.nongnu.org/projects/quilt ) と呼ばれるパッチ管理ソフトウェアのコマンド体系をベースにしています。
80
- Mercurial Queueの使い方を勉強するときには、まずquiltについて学んでおくと理解が早いでしょう。
81
-
82
86
参考資料:
83
87
84
- - [ Mercurial Queues エクステンション] ( http://mercurial.selenic.com/wiki/JapaneseMqExtension )
85
- - [ Mercurial MQ について] ( http://d.hatena.ne.jp/dayflower/20090520/1242794877 )
86
- - [ 12 Managing change with Mercurial Queues] ( http://foozy.bitbucket.org/hgbook-ja/d6ca1334a19d/hgbookch12.html#x105-26500012 )
87
- - [ 13 Advanced uses of Mercurial Queues] ( http://foozy.bitbucket.org/hgbook-ja/d6ca1334a19d/hgbookch13.html#x108-30000013 )
88
88
- [ Vim development] ( http://www.vim.org/develop.php )
0 commit comments