/
Git.targets
72 lines (66 loc) · 3.04 KB
/
Git.targets
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?xml version="1.0" encoding="utf-8"?>
<!--
Deployment Framework for BizTalk 5.0
Copyright (C) 2008-2010 Thomas F. Abraham and Scott Colestock
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Deploy">
<Target Name="ReadSHA">
<PropertyGroup Condition="'$(SHAFile)' == ''">
<SHAFile>$(IgnoreFolder)sha_tmp.txt</SHAFile>
</PropertyGroup>
<Exec Command="git rev-parse HEAD > "$(SHAFile)"" />
<ReadLinesFromFile File="$(SHAFile)">
<Output TaskParameter="Lines" ItemName="SHAFileLines"/>
</ReadLinesFromFile>
<PropertyGroup>
<SHA>@(SHAFileLines->'%(Identity)', '%0a%0d')</SHA>
</PropertyGroup>
<Message Text="Git SHA: $(SHA)" Importance="high" />
</Target>
<Target Name="Tag">
<Message Text="IgnoreFolder: $(IgnoreFolder)" Importance="high" />
<PropertyGroup Condition="'$(TagFile)' == ''">
<TagFile>$(IgnoreFolder)tag_tmp.txt</TagFile>
</PropertyGroup>
<Exec Command="git tag -a "$(FileVersion)" -m "Automated Release" > "$(TagFile)"" />
<ReadLinesFromFile File="$(TagFile)">
<Output TaskParameter="Lines" ItemName="TagFileLines"/>
</ReadLinesFromFile>
<PropertyGroup>
<Tag>@(TagFileLines->'%(Identity)', '%0a%0d')</Tag>
</PropertyGroup>
<Message Text="Git Tag: $(Tag)" />
</Target>
<Target Name="PushTags">
<Exec Command="git push --tag "$(Remote)"" Condition=" '$(Remote)' != '' " />
<Exec Command="git push --tag " Condition=" '$(Remote)' == '' " />
</Target>
<Target Name="StopWhenDirty">
<PropertyGroup Condition="'$(GitStatusFile)' == ''">
<GitStatusFile>$(IgnoreFolder)status_tmp.txt</GitStatusFile>
</PropertyGroup>
<Exec Command="git diff-files --quiet" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec>
<Error Text="You have unstaged changes in the working folder" Condition="'$(ErrorCode)' > '0'" />
<Exec Command="git diff-index --quiet --cached HEAD" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec>
<Error Text="You have staged but uncommitted files" Condition="'$(ErrorCode)' > '0'" />
<Exec Command="git status --porcelain > "$(GitStatusFile)"" />
<Message Text="Git status: $(GitStatus)" />
<ReadLinesFromFile File="$(GitStatusFile)">
<Output TaskParameter="Lines" ItemName="GitStatusFileLines"/>
</ReadLinesFromFile>
<PropertyGroup>
<GitStatus>@(GitStatusFileLines->'%(Identity)', '%0a%0d')</GitStatus>
</PropertyGroup>
<Error Text="You have untracked files" Condition="'$(GitStatus)' != '' " />
</Target>
<Target Name="Sync">
<Exec Command="git diff-index --quiet --cached $(origin)/HEAD" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec>
<Error Text="Your branch is ahead/behind the remote" Condition="'$(ErrorCode)' > '0'" />
</Target>
</Project>