Linux 自定义git diff输出格式(区块头中我的文件的自有函数名)
我在Linux/x86-64/Debian/Sid上使用Git2.14.1。我没有任何带有Linux 自定义git diff输出格式(区块头中我的文件的自有函数名),linux,git,github,Linux,Git,Github,我在Linux/x86-64/Debian/Sid上使用Git2.14.1。我没有任何带有GIT的shell环境变量。我读了这一页。下面是我当前项目(在github上)的git config-l的输出: 当我在一些C文件上执行git diff时,比如main\u BM.C我得到的输出如下 diff --git a/main_BM.c b/main_BM.c index 3639a52..9c43d9e 100644 --- a/main_BM.c +++ b/main_BM.c @@ -371,
GIT
的shell环境变量。我读了这一页。下面是我当前项目(在github上)的git config-l的输出:
当我在一些C文件上执行git diff
时,比如main\u BM.C
我得到的输出如下
diff --git a/main_BM.c b/main_BM.c
index 3639a52..9c43d9e 100644
--- a/main_BM.c
+++ b/main_BM.c
@@ -371,6 +371,7 @@ rungui_BM (void)
}
if (gui_command_log_file_BM)
{
+ /// the current time
{
time_t nowtim = time (NULL);
struct tm nowtm = { };
注意块头行@-371,6+371,7@@rungui_BM(void)
;它显示了一个函数名(例如,rungui\u BM
),我不明白为什么会这样(但我喜欢这样)
我还有几个.bismon
文本文件(由机器生成,但版本在git下,可以被认为是一些简单的领域特定语言)。例如,我的文件包含如下内容
!(_0277f6mOd9j_0tVZSXnTzUK |=basiclo_temporary_module|
!~ name (~ basiclo_temporary_module
~)
!@ 1504862208.05
!$_0LK4TzFd6u1_0JFUsrQ4odG |=class|
!: _01h86SAfOfg_1q2oMegGRwW |=comment|
"class of temporary modules containing only functions for closures"
!~ class (~ |supercl plain_temporary_module:| _1oEp0eAAyFN_4lsobepyr1T
~)
!)_0277f6mOd9j_0tVZSXnTzUK
(我的store*.bismon
有自己的格式——我定义了这种格式,如果方便的话可以稍加修改——基本上表示某个解释器的持久内存堆转储)
从git diff
的角度来看,我希望任何类似于
!(_0277f6mOd9j_0tVZSXnTzUK |=基本的临时模块|
(即任何以!(11个字母数字字符后接。
后接11个字母数字字符)开头的行被git diff
视为一个函数开始,并在@
块头中由git diff
显示
当前,git diff store2.bismon
没有提供我想要的好的块头:
diff --git a/store2.bismon b/store2.bismon
index edbb2f7..3847b6b 100644
--- a/store2.bismon
+++ b/store2.bismon
@@ -6,7 +6,13 @@
!(_0277f6mOd9j_0tVZSXnTzUK |=basiclo_temporary_module|
!~ name (~ basiclo_temporary_module
~)
-!@ 1504861742.79
+!@ 1504862208.05
+!$_0LK4TzFd6u1_0JFUsrQ4odG |=class|
+!: _01h86SAfOfg_1q2oMegGRwW |=comment|
+ "class of temporary modules containing only functions for closures"
+!~ class (~ |supercl plain_temporary_module:| _1oEp0eAAyFN_4lsobepyr1T
+~)
+
!)_0277f6mOd9j_0tVZSXnTzUK
我希望块标题行@-6,7+6,13@
类似于:
@@ -6,7 +6,13 @@ !(_0277f6mOd9j_0tVZSXnTzUK |=basiclo_temporary_module|
也许我需要将一些GIT\u EXTERNAL\u DIFF
设置为一些脚本。但是如何调用这个东西,以及由GIT
的哪个子部分调用
如果可能,我希望git diff使用的颜色保持不变。解决方案是:
您可以调整regexp以获得更高的精度
@@ -6,7 +6,13 @@ !(_0277f6mOd9j_0tVZSXnTzUK |=basiclo_temporary_module|
echo '*.bismon diff=bismon' > .gitattributes
git config diff.bismon.xfuncname '^!\(_.*$'