#linux-kernel #patch #kernel #linux

app kmail

Kmail 是一个小型辅助工具,用于自动收集在发送 Linux 内核补丁集时应包含的电子邮件地址,并使用 git send-email 将补丁集发送给他们。

3 个版本

0.1.2 2022 年 4 月 22 日
0.1.1 2022 年 2 月 22 日
0.1.0 2022 年 2 月 22 日

#170电子邮件

GPL-3.0-or-later

20KB
132

kmail

kmail 是一个小型辅助工具,用于自动收集在发送补丁时应包含的电子邮件地址,并使用这些地址和补丁集调用 git send-email。这本来可以是一个 bash 脚本,但我更喜欢 Rust。

安装

首先,请确保您的系统上已安装 cargo。以下内容取决于您所在的平台

$ sudo dnf install cargo

或者

sudo apt install cargo

一旦您安装了 cargo,您可以使用以下命令安装 kmail

$ cargo install kmail

请确保将 $HOME/.cargo/bin 添加到您的 $PATH 中,以便自动发现由 cargo 安装的任何二进制文件

echo "export PATH=$PATH:$HOME/.cargo.bin" >> ~/.bashrc

使用方法

一旦您安装了 kmail,您只需在命令行上调用 kmail 即可使用它。让我们看看使用说明

$ kmail --help
kmail 1.0
David Vernet <[email protected]>
A utility for automatically sending emails to the correct maintainers for a kernel patchset.

Kmail invokes scripts/get_maintainer.pl on a patchset, parses the email
addresses (both the maintainers themselves and the relevant lists) to
email, and sends them the patchset using git send-email.

USAGE:
    kmail [OPTIONS] <PATCH_PATH> [-- <EXTRA_ARGUMENTS>...]

ARGS:
    <PATCH_PATH>            The path to the patch (or a directory containing patches) to be
                            mailed to the kernel upstream community using git send-email
    <EXTRA_ARGUMENTS>...    Arguments that will be passed directly to git send-email. For
                            example, you may specify -- --dry-run --cc personal@my_domain.com to
                            have the invocation be a dry-run, and to cc your own personal email
                            address

OPTIONS:
    -h, --help                Print help information
    -t, --tree <TREE_PATH>    The path to a linux source tree containing a MAINTAINERS file, and a
                              scripts/get_maintainer.pl script. If no path is specified, the current
                              directory is assumed to be a linux kernel tree
    -V, --version             Print version information

如您所见,没有太多选项需要指定,只有一个必需的参数(尽管这取决于脚本的调用方式)。

发送补丁

假设您有一个补丁 /tmp/0001-TESTING-MY-DUMB-SCRIPT.patch,您想将其发送出去供审查,并在补丁更新的子系统中 MAINTAINERS 中有如下条目

LIVE PATCHING
M:      David Vernet <void@manifault.com>
L:      fake-list@manifault.com
S:      Maintained

您可以使用 kmail 自动调用 git send-email 如下所示

$ pwd
/home/Decave/linux

$ kmail /tmp/0001-TESTING-MY-DUMB-SCRIPT.patch

/tmp/0001-TESTING-MY-DUMB-SCRIPT.patch
From: David Vernet <[email protected]>
To: [email protected],
        [email protected]
Subject: [PATCH] TESTING MY DUMB SCRIPT
Date: Tue, 22 Feb 2022 06:36:07 -0800
Message-Id: <20220222143607[email protected]>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll):

特定树

kmail 接受一个 -t / --tree 选项,允许您指向特定的 Linux 内核树(如果您是 Linux 内核贡献者,那么您可能根据您为补丁贡献的子系统,本地有许多树已被检出)。如果未指定此选项(如上述示例所示),kmail 将检查您的本地树是否为 Linux 内核树。否则,您可以通过以下方式指定 -t

$ pwd
/home/Decave/linux

$ kmail --tree ../linus /tmp/0001-TESTING-MY-DUMB-SCRIPT.patch

/tmp/0001-TESTING-MY-DUMB-SCRIPT.patch
From: David Vernet <[email protected]>
To: [email protected],
        [email protected]
Subject: [PATCH] TESTING MY DUMB SCRIPT
Date: Tue, 22 Feb 2022 06:56:29 -0800
Message-Id: <20220222145629[email protected]>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll):

在此示例中,kmail 使用 Linus 源树中的 MAINTAINERSscripts/get_maintainer.pl 文件,而不是当前工作目录中的 "linux" 树。

向 git send-email 传递参数

您可以通过指定它们在 -- 之后传递额外的参数给 git send-email,其中 kmail 的所有选项和参数之前都跟随此选项

$ kmail --tree ../linus /tmp/0001-TESTING-MY-DUMB-SCRIPT.patch -- --dry-run

/tmp/0001-TESTING-MY-DUMB-SCRIPT.patch
Dry-OK. Log says:
Sendmail: /bin/msmtp -f [email protected] -i [email protected] [email protected] [email protected]
From: David Vernet <[email protected]>
To: [email protected],
        [email protected]
Subject: [PATCH] TESTING MY DUMB SCRIPT
Date: Tue, 22 Feb 2022 06:59:33 -0800
Message-Id: <20220222145933[email protected]>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Result: OK

在这种情况下,我们传递了 --dry-run。例如,我们也可以传递 --cc another-email@domain.com,如果我们想将其他收件人添加为补丁的抄送人

$ kmail --tree ../linus /tmp/0001-TESTING-MY-DUMB-SCRIPT.patch -- --dry-run --cc [email protected]

/tmp/0001-TESTING-MY-DUMB-SCRIPT.patch
Dry-OK. Log says:
Sendmail: /bin/msmtp -f [email protected] -i [email protected] [email protected] [email protected] [email protected]
From: David Vernet <[email protected]>
To: [email protected],
        [email protected]
Cc: [email protected]
Subject: [PATCH] TESTING MY DUMB SCRIPT
Date: Tue, 22 Feb 2022 07:02:25 -0800
Message-Id: <20220222150225[email protected]>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Result: OK

贡献

我认为这里没有太多(如果有的话)其他要做的,但如果您想到了一些您想要的功能,请随时贡献。

依赖关系

~6–15MB
~175K SLoC