如何将git branch 和 commit id打印到内核log中?

2023-05-16

问题提出:

多项目多分支的开发模式中,为了方便定位问题,往往需要确认当前的问题日志对应的是哪个分支,哪个提交。为了解决这个问题我们需要有一种方便的手段。

解决方案:

首先想象的是是把git branch和git commit id都打印到dmesg里面,从而完美解决问题。具体做法如下:

diff --git a/apps_proc/kernel/msm-4.4/init/version.c b/apps_proc/kernel/msm-4.4/init/version.c
index 067fa52..b434702 100644
--- a/apps_proc/kernel/msm-4.4/init/version.c
+++ b/apps_proc/kernel/msm-4.4/init/version.c
@@ -46,7 +46,7 @@ EXPORT_SYMBOL_GPL(init_uts_ns);
 const char linux_banner[] =
        "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
        LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION 
-       "(" COMMIT_INFO ")" "\n";
+       "(" BRANCH_INFO":"COMMIT_INFO ")" "\n";
 
 const char linux_proc_banner[] =
        "%s version %s"
diff --git a/apps_proc/kernel/msm-4.4/scripts/mkcompile_h b/apps_proc/kernel/msm-4.4/scripts/mkcompile_h
index d01233c..214e9ab 100755
--- a/apps_proc/kernel/msm-4.4/scripts/mkcompile_h
+++ b/apps_proc/kernel/msm-4.4/scripts/mkcompile_h
@@ -77,7 +77,8 @@ UTS_TRUNCATE="cut -b -$UTS_LEN"
   echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
 
   echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | grep ' version '`\"
-  echo \#define COMMIT_INFO \"`git log | head -3`\"
+  echo \#define COMMIT_INFO \"`git log -1 | awk 'NR==1 {print substr($2,0,40)}'`\"
+  echo \#define BRANCH_INFO \"`git symbolic-ref --short -q HEAD`\"
 ) > .tmpcompile

测试效果:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.115-perf (CN\xxx@cqrnd01) (gcc version 5.3.0 (GCC) ) #1 SMP PREEMPT Thu Aug 26 00:03:02 CST 2021(projects/master:ef2327218cb8e990315931cc828a2d3edfe7fd01)
[    0.000000] Boot CPU: AArch64 Processor [512f2011]

可以看到,dmesg里面打印了(projects/master:ef2327218cb8e990315931cc828a2d3edfe7fd01),满足需求。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将git branch 和 commit id打印到内核log中? 的相关文章

随机推荐