Create a git log from msbuild
I have a weird problem with msbuild and git, I have a target in msbuild where I create a file that contains commits on git, but the target doesn't work when msbuild runs it ... I want to take a snapshot of the task to show that I am doing:
<GitLogFormat>%25H:%25an:%25cd:%25B</GitLogFormat>
<GitLogPath>gitlog.xml</GitLogPath>
<Exec
Command='"$(GitRunner)" log --full-history --pretty=format:"$(GitLogFormat)" > $(GitLogPath)'
WorkingDirectory="$(GlobalRootPath)"
</Exec>
This will output the command:
"C:\Program Files (x86)\Git\bin\git.exe" log --full-history --pretty=format:"%H:%an:%cd:%B" > gitlog.xml
If I execute this from the command line (not msbuild), then the output of the gitlog file looks like this:
35b833f0133cee6bd749be6cc4dbb40c15ab1ff2:rewso:Sun Sep 14 12:16:51 2014 +0200:Main release_ContractManagement was commited local v: 0.17.2
0ca16d0c60768879cb876c1da8e9fb2e76ef6074:rewso:Sun Sep 14 11:29:16 2014 +0200:Main release_ContractManagement was commited local v: 0.16.2
fe14af5547f458dab069aa862c304e03136f0a94:rewso:Sun Sep 14 01:08:15 2014 +0200:Main release_ContractManagement was commited local v: 0.15.2
But if I do it from msbuild the gitlog file output is:
an:B
an:B
an:B
How can I get the same output when I use msbuild ??
+3
source to share
1 answer
The% character must be escaped twice. The same problem happened once, and I don't remember why exactly this is needed twice; it may have something to do with Exec or the underlying cmd process% as a symbol used for environment variables.
Anyway, this should do it:
<PropertyGroup>
<GitLogFormat>%25%25H:%25%25an:%25%25cd:%25%25B</GitLogFormat>
</PropertyGroup>
+3
source to share