Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Comments on Git command formatting characters in msbuild are interpreted incorrectly
Post
Git command formatting characters in msbuild are interpreted incorrectly
I wish to add a property with the date of the current Git commit to the assembly info.
From my .csproj:
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:%ad"
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
Build output interpretation: git -C "<project directory>\." log -1 --pretty=format:-
Output: -
Using raw format:
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:%aD"
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
Build output interpretation: git -C "<project directory>\." log -1 --pretty=format:-
Output: -
Doubling %
characters to escape them:
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:%%aD"
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
Build output interpretation: git -C "<project directory>\." log -1 --pretty=format:%-
Output: -
This attempt worked, but it gets different details from those I want:
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:"%%H %%cI""
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
Build output interpretation: git -C "<project directory>\." log -1 --pretty=format:"%%H %%cI"
Output: 2594b984b59b061dd714ed6a88fbee2907b30a05 2024-02-14T12:33:49-06:00
So I tried adding quotes to my original attempt:
<Exec Command="git -C "$(ProjectDir)." log -1 --pretty=format:"%%aD""
ConsoleToMSBuild="true"
Condition="'$(GitCommitDate)' == ''">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitDate" />
</Exec>
Build output interpretation: git -C "<project directory>\ManagementConsole\." log -1 --pretty=format:"%"
Output: -
What am I doing wrong?
What details am I missing that would help solve the question?
(I know that git show
would be easier, but it failed the build with an exit code 128, which I figured would be more difficult to solve without further details.)
The -
characters in the output and at the end of "build output interpretation" is added manually because I could not copy and paste it from my build output. I do not know why, but I thought that might be a clue.
1 comment thread