From: Jack Adrian Zappa <hidden> Date: 2017-02-07 19:22:20
I'm trying to specify a hunk header using xfuncname, and it just
doesn't want to work.
The full question is on SO here:
http://stackoverflow.com/questions/42078376/why-isnt-my-xfuncname-working-in-my-gitconfig-file
But the basic gist is that no matter what regex I specify, git will
not recognise the hunk header. Am I doing something wrong or is this
a bug?
For those who don't want to jump to the SO site, I've copied the text below:
-----8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<---
I'm trying to setup a hunk header for .natvis files. For some reason,
it doesn't seem to be working. I'm following their instructions from
here, which doesn't say much in terms of restrictions of the regex,
such as, is the matched item considered the hunk header or do I need a
group? I have tried both with no success. This is what I have:
[diff "natvis"]
xfuncname = "^[\\\t ]*<Type[\\\t ]+Name=\"([^\"])\".*$"
I've also added to my .gitattributes file (even though I'm not
positive that it is necessary):
*.natvis diff=natvis
I've tried \t instead of \\\t as well as replacing the entire regex
with just <Type.* with no luck. I'm using git version 2.7.0.windows.1
on Windows 8.1. EDIT: I upgraded to git version 2.11.1.windows.1 on
Windows 8.1 and even tried git version 2.8.3 on cygwin64 on Windows
8.1 with the same results.
As a test file, I have the following test.natvis file:
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer
xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="test">
<Expand>
<Item Name="var">var</Item>
<!-- Non-blank line -->
<Item Name="added var">added_var</Item>
<Item Name="var2">var2</Item>
</Expand>
</Type>
</AutoVisualizer>
with the <Item Name="added var">added_var</Item> being the new line added.
I'm really not sure why this is so difficult.
EDIT:
Here is a sample output of what I am getting:
$ git diff --word-diff
warning: LF will be replaced by CRLF in test.natvis.
The file will have its original line endings in your working directory.
Even using xfuncname = "^.*$" I would have expected that <!--
Non-blank line --> would have shown up as my hunk header, but I get
nothing. :(
EDIT:
I've tried the solution proposed by torek, but to no avail. It's like
it doesn't know what to do with the xfuncname entry. :(
From: René Scharfe <hidden> Date: 2017-02-07 23:25:16
Am 07.02.2017 um 20:21 schrieb Jack Adrian Zappa:
I'm trying to setup a hunk header for .natvis files. For some reason,
it doesn't seem to be working. I'm following their instructions from
here, which doesn't say much in terms of restrictions of the regex,
such as, is the matched item considered the hunk header or do I need a
group? I have tried both with no success. This is what I have:
[diff "natvis"]
xfuncname = "^[\\\t ]*<Type[\\\t ]+Name=\"([^\"])\".*$"
The extra "\\" allow backslashes to be used for indentation as well as
between Type and Name, which is probably not what you want. And your
expression only matches single-char Name attributes. Try:
xfuncname = "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
René
From: Jack Adrian Zappa <hidden> Date: 2017-02-08 17:11:46
Thanks Rene, but you seem to have missed the point. NOTHING is
working. No matter what I put there, it doesn't seem to get matched.
Just to be sure, I tested your regex and again it didn't work.
Someone on the SO site stated they could get it to work on FreeBSD and
I'm on Windows, so this might be a platform thing. Can anyone else on
Windows please confirm?
Thanks,
A
On Tue, Feb 7, 2017 at 6:18 PM, René Scharfe [off-list ref] wrote:
Am 07.02.2017 um 20:21 schrieb Jack Adrian Zappa:
quoted
I'm trying to setup a hunk header for .natvis files. For some reason,
it doesn't seem to be working. I'm following their instructions from
here, which doesn't say much in terms of restrictions of the regex,
such as, is the matched item considered the hunk header or do I need a
group? I have tried both with no success. This is what I have:
[diff "natvis"]
xfuncname = "^[\\\t ]*<Type[\\\t ]+Name=\"([^\"])\".*$"
The extra "\\" allow backslashes to be used for indentation as well as
between Type and Name, which is probably not what you want. And your
expression only matches single-char Name attributes. Try:
xfuncname = "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
René
Note the XML namespace in the hunk header. It's put there by the
default rule because "xmlns" starts at the beginning of the line. Your
diff has nothing there, which means the default rule is not used, i.e.
your user-defined rule is in effect.
Come to think of it, this line break in the middle of the AutoVisualizer
tab might have been added by your email client unintentionally, so that
we use different test files, which then of course results in different
diffs. Is that the case?
Anyway, if I run the following two commands:
$ git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
$ echo '*.natvis diff=natvis' >.gitattributes
... then I get this, both on Linux (git version 2.11.1) and on Windows
(git version 2.11.1.windows.1):
@@ -19,7 +19,7 @@ test <!-- Non-blank line -->- <Item Name="added var">added_var</Item>+ <Item Name="added var">added_vars</Item> <Item Name="var2">var2</Item>
Just to be sure, I tested your regex and again it didn't work.
At this point I'm out of ideas, sorry. :( The only way I was able to
break it was due to mistyping the extension as "netvis" several times
for some reason.
René
Note the XML namespace in the hunk header. It's put there by the
default rule because "xmlns" starts at the beginning of the line. Your
diff has nothing there, which means the default rule is not used, i.e.
your user-defined rule is in effect.
Come to think of it, this line break in the middle of the AutoVisualizer
tab might have been added by your email client unintentionally, so that
we use different test files, which then of course results in different
diffs. Is that the case?
Anyway, if I run the following two commands:
$ git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
$ echo '*.natvis diff=natvis' >.gitattributes
... then I get this, both on Linux (git version 2.11.1) and on Windows
(git version 2.11.1.windows.1):
@@ -19,7 +19,7 @@ test <!-- Non-blank line -->- <Item Name="added var">added_var</Item>+ <Item Name="added var">added_vars</Item> <Item Name="var2">var2</Item>
quoted
Just to be sure, I tested your regex and again it didn't work.
At this point I'm out of ideas, sorry. :( The only way I was able to
break it was due to mistyping the extension as "netvis" several times
for some reason.
René
From: Jack Adrian Zappa <hidden> Date: 2017-02-08 20:39:34
I'm not so sure about that. With your example I get this diff without
setting diff.natvis.xfuncname:
So, to make sure we are on the same page, I removed the
diff.natvis.xfuncname from the .gitconfig and .git/config. My output
was:
C:\Users\adrianh\Documents\tmp>git diff
@@ -18,6 +18,7 @@ <!-- test text -->+ <Item Name="added var">added_var</Item> <Item Name="var2">var2</Item>
So I didn't get the default output that your specified.
I've been modifying the .gitconfig file directly, but I tried your command:
git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
and still had the same results. I.e. NOTHING. :(
On Wed, Feb 8, 2017 at 1:37 PM, René Scharfe [off-list ref] wrote:
quoted hunk
Am 08.02.2017 um 18:11 schrieb Jack Adrian Zappa:
quoted
Thanks Rene, but you seem to have missed the point. NOTHING is
working. No matter what I put there, it doesn't seem to get matched.
I'm not so sure about that. With your example I get this diff without
setting diff.natvis.xfuncname:
Note the XML namespace in the hunk header. It's put there by the
default rule because "xmlns" starts at the beginning of the line. Your
diff has nothing there, which means the default rule is not used, i.e.
your user-defined rule is in effect.
Come to think of it, this line break in the middle of the AutoVisualizer
tab might have been added by your email client unintentionally, so that
we use different test files, which then of course results in different
diffs. Is that the case?
Anyway, if I run the following two commands:
$ git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
$ echo '*.natvis diff=natvis' >.gitattributes
... then I get this, both on Linux (git version 2.11.1) and on Windows
(git version 2.11.1.windows.1):
@@ -19,7 +19,7 @@ test <!-- Non-blank line -->- <Item Name="added var">added_var</Item>+ <Item Name="added var">added_vars</Item> <Item Name="var2">var2</Item>
quoted
Just to be sure, I tested your regex and again it didn't work.
At this point I'm out of ideas, sorry. :( The only way I was able to
break it was due to mistyping the extension as "netvis" several times
for some reason.
René
From: Jack Adrian Zappa <hidden> Date: 2017-02-08 20:42:43
Thanks Samuel,
So, the question is, what is causing this problem on my system?
Anyone have an idea to help diagnose this problem?
On Wed, Feb 8, 2017 at 3:24 PM, Samuel Lijin [off-list ref] wrote:
quoted hunk
On Windows 7, it works for me in both CMD and Git Bash:
$ git --version
git version 2.11.0.windows.3
$ git diff HEAD^ --word-diff
Note the XML namespace in the hunk header. It's put there by the
default rule because "xmlns" starts at the beginning of the line. Your
diff has nothing there, which means the default rule is not used, i.e.
your user-defined rule is in effect.
Come to think of it, this line break in the middle of the AutoVisualizer
tab might have been added by your email client unintentionally, so that
we use different test files, which then of course results in different
diffs. Is that the case?
Anyway, if I run the following two commands:
$ git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
$ echo '*.natvis diff=natvis' >.gitattributes
... then I get this, both on Linux (git version 2.11.1) and on Windows
(git version 2.11.1.windows.1):
@@ -19,7 +19,7 @@ test <!-- Non-blank line -->- <Item Name="added var">added_var</Item>+ <Item Name="added var">added_vars</Item> <Item Name="var2">var2</Item>
quoted
Just to be sure, I tested your regex and again it didn't work.
At this point I'm out of ideas, sorry. :( The only way I was able to
break it was due to mistyping the extension as "netvis" several times
for some reason.
René
From: Samuel Lijin <hidden> Date: 2017-02-08 20:48:25
I just put this togther: https://github.com/sxlijin/xfuncname-test
Try cloning and then for any of config1 thru 3,
$ cp configX .git/config
$ git diff HEAD^ -- test.natvis
On Wed, Feb 8, 2017 at 2:42 PM, Jack Adrian Zappa [off-list ref] wrote:
Thanks Samuel,
So, the question is, what is causing this problem on my system?
Anyone have an idea to help diagnose this problem?
On Wed, Feb 8, 2017 at 3:24 PM, Samuel Lijin [off-list ref] wrote:
quoted
On Windows 7, it works for me in both CMD and Git Bash:
$ git --version
git version 2.11.0.windows.3
$ git diff HEAD^ --word-diff
Note the XML namespace in the hunk header. It's put there by the
default rule because "xmlns" starts at the beginning of the line. Your
diff has nothing there, which means the default rule is not used, i.e.
your user-defined rule is in effect.
Come to think of it, this line break in the middle of the AutoVisualizer
tab might have been added by your email client unintentionally, so that
we use different test files, which then of course results in different
diffs. Is that the case?
Anyway, if I run the following two commands:
$ git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
$ echo '*.natvis diff=natvis' >.gitattributes
... then I get this, both on Linux (git version 2.11.1) and on Windows
(git version 2.11.1.windows.1):
@@ -19,7 +19,7 @@ test <!-- Non-blank line -->- <Item Name="added var">added_var</Item>+ <Item Name="added var">added_vars</Item> <Item Name="var2">var2</Item>
quoted
Just to be sure, I tested your regex and again it didn't work.
At this point I'm out of ideas, sorry. :( The only way I was able to
break it was due to mistyping the extension as "netvis" several times
for some reason.
René
From: Jack Adrian Zappa <hidden> Date: 2017-02-08 21:04:39
Thanks Samuel,
That example showed that there must be something wrong in my .git
directory, because with it, I'm getting the correct output. Moving
the same lines to my .git/config didn't work.
On Wed, Feb 8, 2017 at 3:46 PM, Samuel Lijin [off-list ref] wrote:
I just put this togther: https://github.com/sxlijin/xfuncname-test
Try cloning and then for any of config1 thru 3,
$ cp configX .git/config
$ git diff HEAD^ -- test.natvis
On Wed, Feb 8, 2017 at 2:42 PM, Jack Adrian Zappa [off-list ref] wrote:
quoted
Thanks Samuel,
So, the question is, what is causing this problem on my system?
Anyone have an idea to help diagnose this problem?
On Wed, Feb 8, 2017 at 3:24 PM, Samuel Lijin [off-list ref] wrote:
quoted
On Windows 7, it works for me in both CMD and Git Bash:
$ git --version
git version 2.11.0.windows.3
$ git diff HEAD^ --word-diff
Note the XML namespace in the hunk header. It's put there by the
default rule because "xmlns" starts at the beginning of the line. Your
diff has nothing there, which means the default rule is not used, i.e.
your user-defined rule is in effect.
Come to think of it, this line break in the middle of the AutoVisualizer
tab might have been added by your email client unintentionally, so that
we use different test files, which then of course results in different
diffs. Is that the case?
Anyway, if I run the following two commands:
$ git config diff.natvis.xfuncname "^[\t ]*<Type[\t ]+Name=\"([^\"]+)\".*$"
$ echo '*.natvis diff=natvis' >.gitattributes
... then I get this, both on Linux (git version 2.11.1) and on Windows
(git version 2.11.1.windows.1):
@@ -19,7 +19,7 @@ test <!-- Non-blank line -->- <Item Name="added var">added_var</Item>+ <Item Name="added var">added_vars</Item> <Item Name="var2">var2</Item>
quoted
Just to be sure, I tested your regex and again it didn't work.
At this point I'm out of ideas, sorry. :( The only way I was able to
break it was due to mistyping the extension as "netvis" several times
for some reason.
René