从msbuild创建git日志

时间:2014-09-18 08:56:32

标签: msbuild

我对msbuild和git有一个奇怪的问题,我在msbuild中有一个目标,我在其中创建一个包含git提交的文件,但是当msbuild运行时目标无效... 我从任务中拿出一个片段来展示我在做什么:

<GitLogFormat>%25H:%25an:%25cd:%25B</GitLogFormat>
<GitLogPath>gitlog.xml</GitLogPath>

<Exec
  Command='&quot;$(GitRunner)&quot; log --full-history --pretty=format:&quot;$(GitLogFormat)&quot; > $(GitLogPath)'
  WorkingDirectory="$(GlobalRootPath)"      
</Exec>

这将输出命令:

"C:\Program Files (x86)\Git\bin\git.exe" log --full-history --pretty=format:"%H:%an:%cd:%B" > gitlog.xml

如果我从命令行(而不是msbuild)执行此操作,那么gitlog文件的输出将如下所示:

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

但如果我从msbuild执行此操作,gitlog文件的输出将为:

an:B
an:B
an:B

当我使用msbuild时,如何获得相同的输出?

1 个答案:

答案 0 :(得分:3)

%字符需要转义两次。有一次同样的问题,我不记得为什么它需要两次;它可能与Exec或底层cmd有关,将%视为用于环境变量的字符。

无论如何,这应该这样做:

<PropertyGroup>
  <GitLogFormat>%25%25H:%25%25an:%25%25cd:%25%25B</GitLogFormat>
</PropertyGroup>