Skip to content

Allow building and running on Linux #671

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Oct 9, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
.builds
*.dotCover
*.orig
*~

## If you have NuGet Package Restore enabled, uncomment this
packages/
Expand Down Expand Up @@ -93,3 +94,4 @@ NuGetExeBuild/
NuGetRefBuild/
Packages/
NuGetTaskBuild/
site/
3 changes: 2 additions & 1 deletion src/GitVersionCore/GitVersionCore.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,8 @@
<!-- NugetRefBuild -->
<MakeDir Directories="$(SolutionDir)NuGetRefBuild" />
<Copy SourceFiles="$(OutputPath)GitVersionCore.dll" DestinationFolder="$(BuildDir)NuGetRefBuild\lib\Net45" />
<Copy SourceFiles="$(OutputPath)GitVersionCore.pdb" DestinationFolder="$(BuildDir)NuGetRefBuild\lib\Net45" />
<Copy SourceFiles="$(OutputPath)GitVersionCore.pdb" DestinationFolder="$(BuildDir)NuGetRefBuild\lib\Net45" Condition="Exists('$(OutputPath)GitVersionCore.pdb')" />
<Copy SourceFiles="$(OutputPath)GitVersionCore.dll.mdb" DestinationFolder="$(BuildDir)NuGetRefBuild\lib\Net45" Condition="Exists('$(OutputPath)GitVersionCore.dll.mdb')" />
<Copy SourceFiles="$(OutputPath)GitVersionCore.xml" DestinationFolder="$(BuildDir)NuGetRefBuild\lib\Net45" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersion.nuspec" DestinationFolder="$(BuildDir)NuGetRefBuild" />
<PepitaPackage.CreatePackageTask NuGetBuildDirectory="$(BuildDir)NuGetRefBuild" MetadataAssembly="$(OutputPath)GitVersionCore.dll" Version="$(GitVersion_NuGetVersion)" />
Expand Down
6 changes: 4 additions & 2 deletions src/GitVersionExe/ArgumentParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ namespace GitVersion
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

Expand Down Expand Up @@ -42,7 +43,8 @@ public static Arguments ParseArguments(List<string> commandLineArguments)
};
}

if (commandLineArguments.Count == 1 && !(commandLineArguments[0].StartsWith("-") || commandLineArguments[0].StartsWith("/")))
if (commandLineArguments.Count == 1 && !(commandLineArguments[0].StartsWith("-") ||
(commandLineArguments[0].StartsWith("/") && Path.DirectorySeparatorChar != '/')))
{
return new Arguments
{
Expand All @@ -52,7 +54,7 @@ public static Arguments ParseArguments(List<string> commandLineArguments)

List<string> namedArguments;
var arguments = new Arguments();
if (firstArgument.StartsWith("-") || firstArgument.StartsWith("/"))
if (firstArgument.StartsWith("-") || (firstArgument.StartsWith("/") && Path.DirectorySeparatorChar != '/'))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI we are probably going to redo the command line args in 4.0.0, which should help cross plat out as we will probably drop / arguments

{
arguments.TargetPath = Environment.CurrentDirectory;
namedArguments = commandLineArguments;
Expand Down
44 changes: 23 additions & 21 deletions src/GitVersionExe/GitVersionExe.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\LibGit2Sharp.NativeBinaries.1.0.72\build\LibGit2Sharp.NativeBinaries.props" Condition="Exists('..\packages\LibGit2Sharp.NativeBinaries.1.0.72\build\LibGit2Sharp.NativeBinaries.props')" />
<PropertyGroup>
Expand Down Expand Up @@ -132,48 +132,50 @@
</UsingTask>
<Target Name="AfterBuild" DependsOnTargets="Clean" Condition="$(NCrunch)==''">
<MakeDir Directories="$(TargetDir)ILMergeTemp\" />
<Exec Command="&quot;$(SolutionDir)tools\ilmerge.exe&quot; /allowDup /keyfile:&quot;$(SolutionDir)key.snk&quot; /out:&quot;$(TargetDir)ILMergeTemp\$(TargetFileName)&quot; &quot;$(TargetPath)&quot; &quot;$(TargetDir)GitVersionCore.dll&quot; &quot;$(TargetDir)GitTools.Core.dll&quot; &quot;$(TargetDir)LibGit2Sharp.dll&quot; &quot;$(TargetDir)YamlDotNet.dll&quot; /target:exe /targetplatform:&quot;v4,$(FrameworkPathOverride)&quot; /ndebug /internalize " />
<PropertyGroup>
<Runtime Condition="'$(OS)'=='Unix'">mono</Runtime>
</PropertyGroup>
<!-- Copy target file so that our temporary file gets the correct permissions -->
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(TargetDir)ILMergeTemp\"/>
<Exec Command="$(Runtime) &quot;$(SolutionDir)/packages/ILRepack.2.0.7/tools/ILRepack.exe&quot; /allowDup /keyfile:&quot;$(SolutionDir)key.snk&quot; /out:&quot;$(TargetDir)ILMergeTemp\$(TargetFileName)&quot; &quot;$(TargetPath)&quot; &quot;$(TargetDir)GitVersionCore.dll&quot; &quot;$(TargetDir)GitTools.Core.dll&quot; &quot;$(TargetDir)LibGit2Sharp.dll&quot; &quot;$(TargetDir)YamlDotNet.dll&quot; /target:exe /targetplatform:&quot;v4,$(FrameworkPathOverride)&quot; /ndebug /internalize " />
<ItemGroup>
<TempFiles Include="$(TargetDir)ILMergeTemp\*.*" />
<NativeBinaries Include="$(TargetDir)NativeBinaries\**\*.*"/>
<WindowsBinaries Include="$(TargetDir)NativeBinaries\**\*.dll"/>
</ItemGroup>
<CreateItem Include="$(TargetDir)NativeBinaries\amd64\*.dll">
<Output TaskParameter="Include" ItemName="amd64" />
</CreateItem>
<CreateItem Include="$(TargetDir)NativeBinaries\x86\*.dll">
<Output TaskParameter="Include" ItemName="x86" />
</CreateItem>
<!-- NugetExeBuild -->
<MakeDir Directories="$(BuildDir)NuGetExeBuild" />
<Copy SourceFiles="@(amd64)" DestinationFolder="$(BuildDir)NuGetExeBuild\tools\NativeBinaries\amd64" />
<Copy SourceFiles="@(x86)" DestinationFolder="$(BuildDir)NuGetExeBuild\tools\NativeBinaries\x86" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)NuGetExeBuild\tools" />
<Copy SourceFiles="@(NativeBinaries)" DestinationFiles="@(NativeBinaries->'$(BuildDir)NuGetExeBuild\tools\NativeBinaries\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)NuGetExeBuild\tools" Condition="Exists('$(OutputPath)GitVersion.pdb')"/>
<Copy SourceFiles="$(OutputPath)GitVersion.exe.mdb" DestinationFolder="$(BuildDir)NuGetExeBuild\tools" Condition="Exists('$(OutputPath)GitVersion.exe.mdb')"/>
<Copy SourceFiles="$(OutputPath)ILMergeTemp\GitVersion.exe" DestinationFolder="$(BuildDir)NuGetExeBuild\tools" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\chocolateyInstall.ps1" DestinationFolder="$(BuildDir)NuGetExeBuild\tools" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\chocolateyUninstall.ps1" DestinationFolder="$(BuildDir)NuGetExeBuild\tools" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersion.Portable.nuspec" DestinationFolder="$(BuildDir)NuGetExeBuild" />
<PepitaPackage.CreatePackageTask NuGetBuildDirectory="$(BuildDir)NuGetExeBuild" MetadataAssembly="$(OutputPath)ILMergeTemp\GitVersion.exe" Version="$(GitVersion_NuGetVersion)" />
<!-- NugetCommandLineBuild -->
<MakeDir Directories="$(BuildDir)NuGetCommandLineBuild" />
<Copy SourceFiles="@(amd64)" DestinationFolder="$(BuildDir)NuGetCommandLineBuild\tools\NativeBinaries\amd64" />
<Copy SourceFiles="@(x86)" DestinationFolder="$(BuildDir)NuGetCommandLineBuild\tools\NativeBinaries\x86" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)NuGetCommandLineBuild\tools" />
<Copy SourceFiles="@(NativeBinaries)" DestinationFiles="@(NativeBinaries->'$(BuildDir)NuGetCommandLineBuild\tools\NativeBinaries\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)NuGetCommandLineBuild\tools" Condition="Exists('$(OutputPath)GitVersion.pdb')"/>
<Copy SourceFiles="$(OutputPath)GitVersion.exe.mdb" DestinationFolder="$(BuildDir)NuGetCommandLineBuild\tools" Condition="Exists('$(OutputPath)GitVersion.exe.mdb')"/>
<Copy SourceFiles="$(OutputPath)ILMergeTemp\GitVersion.exe" DestinationFolder="$(BuildDir)NuGetCommandLineBuild\tools" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersion.CommandLine.nuspec" DestinationFolder="$(BuildDir)NuGetCommandLineBuild" />
<PepitaPackage.CreatePackageTask NuGetBuildDirectory="$(BuildDir)NuGetCommandLineBuild" MetadataAssembly="$(OutputPath)ILMergeTemp\GitVersion.exe" Version="$(GitVersion_NuGetVersion)" />
<!-- VsoBuildTask -->
<MakeDir Directories="$(BuildDir)GitVersionVsoTaskBuild" />
<Copy SourceFiles="@(amd64)" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild\NativeBinaries\amd64" />
<Copy SourceFiles="@(x86)" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild\NativeBinaries\x86" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild" />
<Copy SourceFiles="@(NativeBinaries)" DestinationFiles="@(NativeBinaries->'$(BuildDir)GitVersionVsoTaskBuild\NativeBinaries\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild" Condition="Exists('$(OutputPath)GitVersion.pdb')" />
<Copy SourceFiles="$(OutputPath)GitVersion.exe.mdb" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild" Condition="Exists('$(OutputPath)GitVersion.exe.mdb')" />
<Copy SourceFiles="$(OutputPath)ILMergeTemp\GitVersion.exe" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild" />
<Copy SourceFiles="$(SolutionDir)GitVersionVsoTask\icon.png" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild" />
<Copy SourceFiles="$(SolutionDir)GitVersionVsoTask\task.json" DestinationFolder="$(BuildDir)GitVersionVsoTaskBuild" />
<Exec Command="powershell -ExecutionPolicy RemoteSigned -NoProfile &quot;$(BuildDir)\Update-GitVersionVsoTaskVersion.ps1 $(BuildDir)GitVersionVsoTaskBuild\task.json $(GitVersion_Major) $(GitVersion_Minor) $(GitVersion_Patch)&quot;" WorkingDirectory="$(BuildDir)" Condition="'$(GitVersion_SemVer)' != ''" />
<!-- Gem -->
<MakeDir Directories="$(BuildDir)GemBuild" />
<Copy SourceFiles="@(amd64)" DestinationFolder="$(BuildDir)GemBuild\bin\NativeBinaries\amd64" />
<Copy SourceFiles="@(x86)" DestinationFolder="$(BuildDir)GemBuild\bin\NativeBinaries\x86" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)GemBuild\bin" />
<!-- Gem can only treat files it knows about, so it throws an error for .so and .dylib files when building on Windows -->
<Copy SourceFiles="@(WindowsBinaries)" DestinationFiles="@(WindowsBinaries->'$(BuildDir)GemBuild\bin\NativeBinaries\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="$(OutputPath)GitVersion.pdb" DestinationFolder="$(BuildDir)GemBuild\bin" Condition="Exists('$(OutputPath)GitVersion.pdb')" />
<Copy SourceFiles="$(OutputPath)GitVersion.exe.mdb" DestinationFolder="$(BuildDir)GemBuild\bin" Condition="Exists('$(OutputPath)GitVersion.exe.mdb')" />
<Copy SourceFiles="$(OutputPath)ILMergeTemp\GitVersion.exe" DestinationFolder="$(BuildDir)GemBuild\bin" />
<ItemGroup>
<GemFiles Include="$(ProjectDir)GemAssets\bin*\**\*.*" />
Expand Down Expand Up @@ -204,4 +206,4 @@
</Target>
<Import Project="..\packages\PepitaPackage.1.21.4\build\PepitaPackage.targets" Condition="Exists('..\packages\PepitaPackage.1.21.4\build\PepitaPackage.targets')" />
<Import Project="..\packages\Fody.1.29.3\build\portable-net+sl+win+wpa+wp\Fody.targets" Condition="Exists('..\packages\Fody.1.29.3\build\portable-net+sl+win+wpa+wp\Fody.targets')" />
</Project>
</Project>
5 changes: 3 additions & 2 deletions src/GitVersionExe/packages.config
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Caseless.Fody" version="1.3.7" targetFramework="net4" developmentDependency="true" />
<package id="Fody" version="1.29.3" targetFramework="net4" developmentDependency="true" />
<package id="ILRepack" version="2.0.7" targetFramework="net40" />
<package id="GitTools.Core" version="0.4.0-beta0001" targetFramework="net4" />
<package id="JetBrainsAnnotations.Fody" version="1.0.4.0" targetFramework="net4" developmentDependency="true" />
<package id="LibGit2Sharp" version="0.22.0-pre20150716071016" targetFramework="net4" />
<package id="LibGit2Sharp.NativeBinaries" version="1.0.72" targetFramework="net4" />
<package id="PepitaPackage" version="1.21.4" targetFramework="net4" developmentDependency="true" />
<package id="Visualize.Fody" version="0.4.4.0" targetFramework="net4" developmentDependency="true" />
</packages>
</packages>
22 changes: 14 additions & 8 deletions src/GitVersionTask/GitVersionTask.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\LibGit2Sharp.NativeBinaries.1.0.72\build\LibGit2Sharp.NativeBinaries.props" Condition="Exists('..\packages\LibGit2Sharp.NativeBinaries.1.0.72\build\LibGit2Sharp.NativeBinaries.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
Expand Down Expand Up @@ -105,14 +105,19 @@
</Target>
<Target Name="AfterBuild" DependsOnTargets="Clean" Condition="$(NCrunch)==''">
<MakeDir Directories="$(TargetDir)ILMergeTemp\" />
<Exec Command="&quot;$(SolutionDir)tools\ilmerge.exe&quot; /allowDup /keyfile:&quot;$(SolutionDir)key.snk&quot; /out:&quot;$(TargetDir)ILMergeTemp\$(TargetFileName)&quot; &quot;$(TargetPath)&quot; &quot;$(TargetDir)GitVersionCore.dll&quot; &quot;$(TargetDir)LibGit2Sharp.dll&quot; &quot;$(TargetDir)YamlDotNet.dll&quot; /target:library /targetplatform:&quot;v4,$(FrameworkPathOverride)&quot; /ndebug /internalize " />
<PropertyGroup>
<Runtime Condition="'$(OS)'=='Unix'">mono</Runtime>
</PropertyGroup>
<!-- Copy target file so that our temporary file gets the correct permissions -->
<Copy SourceFiles="$(TargetPath)" DestinationFolder="$(TargetDir)ILMergeTemp\"/>
<Exec Command="$(Runtime) &quot;$(SolutionDir)/packages/ILRepack.2.0.7/tools/ILRepack.exe&quot; /allowDup /keyfile:&quot;$(SolutionDir)key.snk&quot; /out:&quot;$(TargetDir)ILMergeTemp\$(TargetFileName)&quot; &quot;$(TargetPath)&quot; &quot;$(TargetDir)GitVersionCore.dll&quot; &quot;$(TargetDir)GitTools.Core.dll&quot; &quot;$(TargetDir)LibGit2Sharp.dll&quot; &quot;$(TargetDir)YamlDotNet.dll&quot; /target:library /targetplatform:&quot;v4,$(FrameworkPathOverride)&quot; /ndebug /internalize " />
<ItemGroup>
<TempFiles Include="$(TargetDir)ILMergeTemp\*.*" />
</ItemGroup>
<MakeDir Directories="$(BuildDir)NuGetTaskBuild" />
<CreateItem Include="$(TargetDir)NativeBinaries\**\*.dll">
<Output TaskParameter="Include" ItemName="NativeBinaries" />
</CreateItem>
<ItemGroup>
<NativeBinaries Include="$(TargetDir)NativeBinaries\**\*.*"/>
</ItemGroup>
<Copy SourceFiles="@(NativeBinaries)" DestinationFiles="@(NativeBinaries->'$(BuildDir)NuGetTaskBuild\NativeBinaries\%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- Workaround for issue with DllMap. Mono will currently always prepend lib to start of target dll name. -->
<CreateItem Include="$(TargetDir)NativeBinaries\**\*.so;$(TargetDir)NativeBinaries\**\*.dylib">
Expand All @@ -121,8 +126,9 @@
<Copy SourceFiles="@(libNativeBinaries)" DestinationFiles="@(libNativeBinaries->'$(BuildDir)NuGetTaskBuild\libNativeBinaries\%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- The LibGit2Sharp.dll.config file contains dll maps for the osx and linux libgit2 native binaries -->
<Copy SourceFiles="$(TargetDir)LibGit2Sharp.dll.config" DestinationFiles="$(BuildDir)NuGetTaskBuild\GitVersionTask.dll.config" />
<Copy SourceFiles="$(TargetDir)ILMergeTemp\GitVersionTask.dll" DestinationFolder="$(BuildDir)NuGetTaskBuild" />
<Copy SourceFiles="$(TargetDir)GitVersionTask.pdb" DestinationFolder="$(BuildDir)NuGetTaskBuild" />
<Copy SourceFiles="$(TargetDir)ILMergeTemp\GitVersionTask.dll" DestinationFolder="$(BuildDir)NuGetTaskBuild" Condition="Exists('$(TargetDir)ILMergeTemp\GitVersionTask.dll')" />
<Copy SourceFiles="$(TargetDir)GitVersionTask.pdb" DestinationFolder="$(BuildDir)NuGetTaskBuild" Condition="Exists('$(TargetDir)GitVersionTask.pdb')" />
<Copy SourceFiles="$(TargetDir)GitVersionTask.dll.mdb" DestinationFolder="$(BuildDir)NuGetTaskBuild" Condition="Exists('$(TargetDir)GitVersionTask.dll.mdb')" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersionTask.targets" DestinationFolder="$(BuildDir)NuGetTaskBuild\Build\portable-net+sl+win+wpa+wp" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersionTask.targets" DestinationFolder="$(BuildDir)NuGetTaskBuild\Build\dotnet" />
<Copy SourceFiles="$(ProjectDir)NugetAssets\GitVersionTask.nuspec" DestinationFolder="$(BuildDir)NuGetTaskBuild" />
Expand All @@ -146,4 +152,4 @@
</Target>
<Import Project="..\packages\PepitaPackage.1.21.4\build\PepitaPackage.targets" Condition="Exists('..\packages\PepitaPackage.1.21.4\build\PepitaPackage.targets')" />
<Import Project="..\packages\Fody.1.29.3\build\portable-net+sl+win+wpa+wp\Fody.targets" Condition="Exists('..\packages\Fody.1.29.3\build\portable-net+sl+win+wpa+wp\Fody.targets')" />
</Project>
</Project>
5 changes: 3 additions & 2 deletions src/GitVersionTask/packages.config
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Caseless.Fody" version="1.3.7" targetFramework="net4" developmentDependency="true" />
<package id="Fody" version="1.29.3" targetFramework="net4" developmentDependency="true" />
<package id="ILRepack" version="2.0.7" targetFramework="net40" />
<package id="GitTools.Core" version="0.4.0-beta0001" targetFramework="net4" />
<package id="LibGit2Sharp" version="0.22.0-pre20150716071016" targetFramework="net4" />
<package id="LibGit2Sharp.NativeBinaries" version="1.0.72" targetFramework="net4" />
<package id="PepitaPackage" version="1.21.4" targetFramework="net4" developmentDependency="true" />
<package id="YamlDotNet" version="3.6.1" targetFramework="net4" />
</packages>
</packages>
Binary file removed src/tools/ILMerge.doc
Binary file not shown.
Binary file removed src/tools/ILMerge.exe
Binary file not shown.