Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@cubicdaiya

nginxの開発MLにパッチを送る

More than 5 years have passed since last update.

先日nginxでValgrindの警告を消すパッチを開発メーリングリストに投稿した時のメモ。

nginxはバージョン管理にMercurialを使っている。Mercurialには指定したリビジョンのコミットからパッチを生成するコマンドと、パッチファイルをコミットとして取り込むコマンドがあるので単なるunified diffテキストを送るよりはこれを使う方が良さげ。

パッチ作成対象のコミットは以下のリビジョンのもの。なお、これ自体は既にnginx本体に取り込まれたものなので、実際に送ったパッチやその際のやりとりについてはこちらのスレッドを参照。

$ hg log -r 5252
changeset:   5252:982678c5c270
tag:         tip
user:        Tatsuhiko Kubo <cubicdaiya@gmail.com>
date:        Wed Jun 12 00:41:24 2013 +0900
files:       src/os/unix/ngx_channel.c
description:
Valgrind: another complaint about uninitialized bytes.


$

コミットからパッチを作成するにはexportコマンドを使用する。

$ hg export 5252
# HG changeset patch
# User Tatsuhiko Kubo <cubicdaiya@gmail.com>
# Date 1370965284 -32400
#      Wed Jun 12 00:41:24 2013 +0900
# Node ID 982678c5c270f93a0c21ab6eb23cb123c0dc3df0
# Parent  4ef49081ef4c261a2138aeb4944be0afeee5a586
Valgrind: another complaint about uninitialized bytes.

diff -r 4ef49081ef4c -r 982678c5c270 src/os/unix/ngx_channel.c
--- a/src/os/unix/ngx_channel.c Thu Jun 13 16:28:42 2013 +0400
+++ b/src/os/unix/ngx_channel.c Wed Jun 12 00:41:24 2013 +0900
@@ -34,6 +34,8 @@
         msg.msg_control = (caddr_t) &cmsg;
         msg.msg_controllen = sizeof(cmsg);

+        ngx_memzero(&cmsg, sizeof(cmsg));
+
         cmsg.cm.cmsg_len = CMSG_LEN(sizeof(int));
         cmsg.cm.cmsg_level = SOL_SOCKET;
         cmsg.cm.cmsg_type = SCM_RIGHTS;
$

exportコマンドの出力にはコミットの作成者や変更元のリビジョンのハッシュ値(Parent)も含まれるのでパッチを取り込む側にとっては何かと都合が良い。また、リビジョン番号の代わりにコミットのハッシュ値でもできるし、この場合はtip(gitでいうHEAD)でもパッチが作れる。

$ hg export tip
       ・
    (中略)$ hg export 982678c5c270
       ・
    (中略)$

あとは生成したパッチを添付したメールをnginx-devel@nginx.orgに送ればいい。なお、nginxのMercurialリポジトリは以下のURLからcloneできる。

$ hg clone http://hg.nginx.org/nginx
2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
cubicdaiya
Tech Lead, Network
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?