与Linux内核开发人员在特定代码段中与问题或潜在错误进行通信的正确协议是什么?
我可以git blame -e
向最后触摸代码的人发送电子邮件,但他们可能不是最适合调查代码的人,如果他们正在度假(或者太忙而无法回复),那么可能是一个黑洞。
我可以在linux-kernel@vger.kernel.org
上询问,但这看起来像a very high volume mailing list,我会担心电子邮件会在噪音中丢失,或者让很多人对某个非常具体的问题感到困扰。< / p>
我可以在这个网站上询问,但如果这是一个非常难以理解的代码的高度具体的问题,我不太可能得到好的回复。
是否有官方推荐的方法来确定谁是询问Linux内核代码部分的最佳人选?
答案 0 :(得分:2)
您可以使用get_maintainer.pl脚本查看谁对相关文件负责。像#!/bin/bash
# Change this to the directory name (package name) where the entities reside.
PACKAGE=com/domain/project/entities
# Change this to the path where the Java source files are located.
cd src/main/java
for i in $(find $PACKAGE/*.java -type f); do
# Only process classes that have an IDENTITY sequence.
if grep "GenerationType.IDENTITY" $i > /dev/null; then
# Extract the table name line.
LINE_TABLE_NAME=$(grep -m 1 @Table $i | awk '{print $4;}')
# Trim the quotes (if present).
TABLE_NAME=${LINE_TABLE_NAME//\"}
# Trim the comma (if present).
TABLE_NAME=${TABLE_NAME//,}
# Extract the column name line.
LINE_COLUMN_NAME=$(grep -m 1 -C1 -A3 @Id $i | tail -1)
COLUMN_NAME=$(echo $LINE_COLUMN_NAME | awk '{print $4;}')
COLUMN_NAME=${COLUMN_NAME//\"}
COLUMN_NAME=${COLUMN_NAME//,}
# PostgreSQL sequence name.
SEQUENCE_NAME="${TABLE_NAME}_${COLUMN_NAME}_seq"
LINE_SEQ_GENERATOR="@SequenceGenerator( name = \"$SEQUENCE_NAME\", sequenceName = \"$SEQUENCE_NAME\", allocationSize = 1 )"
LINE_GENERATED_VAL="@GeneratedValue( strategy = GenerationType.SEQUENCE, generator = \"$SEQUENCE_NAME\" )"
LINE_COLUMN="@Column( name = \"$COLUMN_NAME\", updatable = false )\n"
# These will depend on source code formatting.
DELIM_BEGIN="@GeneratedValue( strategy = GenerationType.IDENTITY )"
# @Basic( optional = false ) is also replaced.
DELIM_ENDED="@Column( name = \"$COLUMN_NAME\" )"
# Replace these lines...
#
# $DELIM_BEGIN
# $DELIM_ENDED
#
# With these lines...
#
# $LINE_SEQ_GENERATOR
# $LINE_GENERATED_VAL
# $LINE_COLUMN
sed -i -n "/$DELIM_BEGIN/{:a;N;/$DELIM_ENDED/!ba;N;s/.*\n/$LINE_SEQ_GENERATOR\n$LINE_GENERATED_VAL\n$LINE_COLUMN/};p" $i
else
echo "Skipping $i ..."
fi
done
dir:
linux
kernel newbies mailing list也是一个很好的起点。
答案 1 :(得分:0)
注意:get_maintainer.pl
脚本包括:
使用&#34;
--roles
&#34;或&#34;--rolestats
&#34;使用git send-email --cc-cmd
或任何其他只有["name"] <email address>
的自动工具可能无效,因为<email address>
之后的额外输出。
使用Git 2.16.x / 2.17(2018年第一季度)应该更加强大:不需要维护自行开发的电子邮件地址解析代码,而是发送一份合理最新的Mail :: Address的副本,用作&#的后备39; git send-email
&#39;当平台缺乏它时。
commit d60be8a见Alex Bennée (stsquad
)(2018年1月8日)
请commit c8f9d13见commit bd869f6(2018年1月8日)和Matthieu Moy (moy
)(2018年1月5日)。
(由Junio C Hamano -- gitster
--合并于commit 897de84,2018年1月23日)
的本地副本
send-email
:添加并使用Mail::Address
我们曾经有两个版本的电子邮件解析代码。
- 我们使用的
parse_mailboxes
(in Git.pm)和Mail::Address
if 安装。
不幸的是,两个版本都有不同的错误集,并且根据是否安装Mail::Address
来改变git的行为是一个坏主意。第一次解决这个问题的尝试是cc90750(
send-email
:不要使用 邮件::地址,即使可用,2017-08-23,Git v2.14.3),但事实证明我们的parse_mailboxes
对某些用途来说太麻烦了 例如lack of nested comments support breaksget_maintainer.pl
in the Linux kernel tree。这个补丁是另一种方式:无论如何使用
Mail::Address
,但有一个 来自CPAN的本地副本作为后备,当系统不是时 可用。重复的脚本很小(276行代码),并且时间稳定 维护本地副本应该不是问题,而且肯定是 比维护我们自己的parse_mailbox更少负担。
另一个选择是将
Mail::Address
视为硬依赖, 但它很容易将额外依赖的麻烦省到最后 用户或打包者。