threads / discuss / 51614

"git log" does not display refs info when executed via C# Process class on Windows

Subject: "git log" does not display refs info when executed via C# Process class on Windows

## tl;dr

6 messages between Aug 9, 2019 and Aug 9, 2019.

replies: 5people: 3as markdown or json

Cliff Schomburg· Aug 9, 2019, 19:36 UTC · lore
Hello,

I have an open Git for Windows issue here: https://github.com/git-for-windows/git/issues/2285

"git log" works as expected from the command prompt.  But when I execute it via C# Process class and read from Standard Output, the refs are missing.
Is anyone familiar with this issue?  Any idea why the output to CMD and STDOUT would be different?

Thanks, Cliff

SZEDER Gábor· Aug 9, 2019, 19:50 UTC · re: Cliff Schomburg · lore

Re: "git log" does not display refs info when executed via C# Process class on Windows

On Fri, Aug 09, 2019 at 07:36:19PM +0000, Cliff Schomburg wrote:
Show 6 quoted lines
> I have an open Git for Windows issue here:
> https://github.com/git-for-windows/git/issues/2285
> 
> "git log" works as expected from the command prompt.  But when I execute it via C# Process class and read from Standard Output, the refs are missing.
> 
> Is anyone familiar with this issue?  Any idea why the output to CMD and STDOUT would be different?

Decorations, like color and refs pointing to a commit, are for humans, and humans read the terminal. If the command's output doesn't go to a terminal, then no such decorations are shown by default.

Try invoking 'git log --decorate'; or, better yet, use your custom '--format=', especially if you intend to parse the output,

Cliff Schomburg· Aug 9, 2019, 20:11 UTC · re: SZEDER Gábor · lore

RE: "git log" does not display refs info when executed via C# Process class on Windows

Adding --decorate gave me the desired result.
Thanks for your help!
-----Original Message-----
From: SZEDER Gábor <szeder.dev@gmail.com> 
Sent: Friday, August 9, 2019 3:51 PM
To: Cliff Schomburg <clisc@microsoft.com>
Cc: git@vger.kernel.org
Subject: Re: "git log" does not display refs info when executed via C# Process class on Windows
On Fri, Aug 09, 2019 at 07:36:19PM +0000, Cliff Schomburg wrote:
Show 10 quoted lines
> I have an open Git for Windows issue here:
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
> ub.com%2Fgit-for-windows%2Fgit%2Fissues%2F2285&amp;data=02%7C01%7Cclis
> c%40microsoft.com%7C17689ee8d32d48528c3208d71d02d8d5%7C72f988bf86f141a
> f91ab2d7cd011db47%7C1%7C0%7C637009771013658738&amp;sdata=PKPdRI0mC65Lx
> 2J5etYnp0fyzsk%2BXSGzGBWa12BLKEE%3D&amp;reserved=0
> 
> "git log" works as expected from the command prompt.  But when I execute it via C# Process class and read from Standard Output, the refs are missing.
> 
> Is anyone familiar with this issue?  Any idea why the output to CMD and STDOUT would be different?
Decorations, like color and refs pointing to a commit, are for humans, and humans read the terminal.  If the command's output doesn't go to a terminal, then no such decorations are shown by default.
Try invoking 'git log --decorate'; or, better yet, use your custom '--format=', especially if you intend to parse the output, 
Cliff Schomburg· Aug 9, 2019, 21:34 UTC · re: SZEDER Gábor · lore

RE: "git log" does not display refs info when executed via C# Process class on Windows

Strangely, when I run this command:
Git log origin/master --pretty=oneline --decorate -1
I get the format I want from STDOUT.  However, when I try to filter it to show only the tag refs:
Git log origin/master --pretty=oneline --decorate --decorate-refs=^tag* -1
No refs are returned to standard output again.  Only on the command line.
Does --decorate-refs not return to STDOUT?

Thanks, Cliff

-----Original Message-----
From: SZEDER Gábor <szeder.dev@gmail.com> 
Sent: Friday, August 9, 2019 3:51 PM
To: Cliff Schomburg <clisc@microsoft.com>
Cc: git@vger.kernel.org
Subject: Re: "git log" does not display refs info when executed via C# Process class on Windows
On Fri, Aug 09, 2019 at 07:36:19PM +0000, Cliff Schomburg wrote:
Show 10 quoted lines
> I have an open Git for Windows issue here:
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
> ub.com%2Fgit-for-windows%2Fgit%2Fissues%2F2285&amp;data=02%7C01%7Cclis
> c%40microsoft.com%7C17689ee8d32d48528c3208d71d02d8d5%7C72f988bf86f141a
> f91ab2d7cd011db47%7C1%7C0%7C637009771013658738&amp;sdata=PKPdRI0mC65Lx
> 2J5etYnp0fyzsk%2BXSGzGBWa12BLKEE%3D&amp;reserved=0
> 
> "git log" works as expected from the command prompt.  But when I execute it via C# Process class and read from Standard Output, the refs are missing.
> 
> Is anyone familiar with this issue?  Any idea why the output to CMD and STDOUT would be different?
Decorations, like color and refs pointing to a commit, are for humans, and humans read the terminal.  If the command's output doesn't go to a terminal, then no such decorations are shown by default.
Try invoking 'git log --decorate'; or, better yet, use your custom '--format=', especially if you intend to parse the output, 
Junio C Hamano· Aug 9, 2019, 21:49 UTC · re: Cliff Schomburg · lore

Re: "git log" does not display refs info when executed via C# Process class on Windows

Cliff Schomburg <clisc@microsoft.com> writes:
Show 11 quoted lines
> Strangely, when I run this command:
>
> Git log origin/master --pretty=oneline --decorate -1
>
> I get the format I want from STDOUT.  However, when I try to filter it to show only the tag refs:
>
> Git log origin/master --pretty=oneline --decorate --decorate-refs=^tag* -1
>
> No refs are returned to standard output again.  Only on the command line.
>
> Does --decorate-refs not return to STDOUT?

If you are asking for tags, which does not begin with a caret "^", perhaps drop "^" from the pattern?

The pattern is supposed to be wildmatch pattern, so it is already left anchored, e.g. --decorate-refs=ag* won't find any tag.

Cliff Schomburg· Aug 9, 2019, 22:16 UTC · re: Junio C Hamano · lore

RE: "git log" does not display refs info when executed via C# Process class on Windows

Thanks, I will try that as well.  Strange it works on command line but not STDOUT though.
-----Original Message-----
From: Junio C Hamano <gitster@pobox.com> 
Sent: Friday, August 9, 2019 5:50 PM
To: Cliff Schomburg <clisc@microsoft.com>
Cc: SZEDER Gábor <szeder.dev@gmail.com>; git@vger.kernel.org
Subject: Re: "git log" does not display refs info when executed via C# Process class on Windows
Cliff Schomburg <clisc@microsoft.com> writes:
Show 12 quoted lines
> Strangely, when I run this command:
>
> Git log origin/master --pretty=oneline --decorate -1
>
> I get the format I want from STDOUT.  However, when I try to filter it to show only the tag refs:
>
> Git log origin/master --pretty=oneline --decorate 
> --decorate-refs=^tag* -1
>
> No refs are returned to standard output again.  Only on the command line.
>
> Does --decorate-refs not return to STDOUT?
If you are asking for tags, which does not begin with a caret "^", perhaps drop "^" from the pattern?
The pattern is supposed to be wildmatch pattern, so it is already left anchored, e.g. --decorate-refs=ag* won't find any tag.

← back to recent threads