Closed
Description
Testing with Cake 0.38.0 alpha and GitVersion 5.3.3, the error handling interaction is greatly improved, but there's still room for improvement.
Building before git init
is now obvious without needing diagnostic verbosity:
Executing: "D:/Devel/Repos/TestService/tools/dotnet-gitversion.exe" -output json -verbosity Debug
ERROR [05/21/20 11:44:03:01] An unexpected error occurred:
System.IO.DirectoryNotFoundException: Can't find the .git directory in
ERROR: fatal: not a git repository (or any of the parent directories): .git
Error: One or more errors occurred. (GitVersion: Process returned an error (exit code 1).)
GitVersion: Process returned an error (exit code 1).
Building after git init
but before committing is not so obvious though:
Executing: "D:/Devel/Repos/TestService/tools/dotnet-gitversion.exe" -output json
ERROR [05/21/20 12:26:13:03] An unexpected error occurred:
System.ArgumentNullException: Value cannot be null. (Parameter 'filter.IncludeReachableFrom')
Error: One or more errors occurred. (GitVersion: Process returned an error (exit code 1).)
GitVersion: Process returned an error (exit code 1).
Again, but with diagnostic verbosity:
Executing: "D:/Devel/Repos/TestService/tools/dotnet-gitversion.exe" -output json -verbosity Debug
INFO [05/21/20 12:19:04:35] Working directory: D:\Devel\Repos\TestService
INFO [05/21/20 12:19:04:38] Project root is: D:\Devel\Repos\TestService\
INFO [05/21/20 12:19:04:38] DotGit directory is: D:\Devel\Repos\TestService\.git
INFO [05/21/20 12:19:04:39] Begin: Loading version variables from disk cache
INFO [05/21/20 12:19:04:39] Cache file D:\Devel\Repos\TestService\.git\gitversion_cache\1E3FC911AB60D65A62911E879D944D9D49C3C1BA.yml not found.
INFO [05/21/20 12:19:04:39] End: Loading version variables from disk cache (Took: 0.69ms)
INFO [05/21/20 12:19:04:45] Using latest commit on specified branch
INFO [05/21/20 12:19:04:46] Running against branch: master (-)
INFO [05/21/20 12:19:04:46] Begin: Calculating base versions
INFO [05/21/20 12:19:04:46] End: Calculating base versions (Took: 3.11ms)
ERROR [05/21/20 12:19:04:47] An unexpected error occurred:
System.ArgumentNullException: Value cannot be null. (Parameter 'filter.IncludeReachableFrom')
at LibGit2Sharp.Core.Ensure.ArgumentNotNull(Object argumentValue, String argumentName)
at LibGit2Sharp.CommitLog.QueryBy(CommitFilter filter)
at GitVersion.RepositoryMetadataProvider.GetBaseVersionSource(Commit currentBranchTip) in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\RepositoryMetadataProvider.cs:line 133
at GitVersion.VersionCalculation.FallbackVersionStrategy.GetVersions()+MoveNext() in D:\a\GitVersion\GitVersion\src\GitVersionCore\VersionCalculation\BaseVersionCalculators\FallbackVersionStrategy.cs:line 28
at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.ToList()
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at GitVersion.VersionCalculation.BaseVersionCalculator.GetBaseVersion() in D:\a\GitVersion\GitVersion\src\GitVersionCore\VersionCalculation\BaseVersionCalculator.cs:line 30
at GitVersion.VersionCalculation.NextVersionCalculator.FindVersion() in D:\a\GitVersion\GitVersion\src\GitVersionCore\VersionCalculation\NextVersionCalculator.cs:line 55
at GitVersion.GitVersionTool.CalculateVersionVariables() in D:\a\GitVersion\GitVersion\src\GitVersionCore\Core\GitVersionTool.cs:line 66
at GitVersion.GitVersionExecutor.RunGitVersionTool(GitVersionOptions gitVersionOptions) in D:\a\GitVersion\GitVersion\src\GitVersionExe\GitVersionExecutor.cs:line 59
INFO [05/21/20 12:19:04:47] Attempting to show the current git graph (please include in issue):
INFO [05/21/20 12:19:04:47] Showing max of 100 commits
INFO [05/21/20 12:19:04:53]
Error: System.AggregateException: One or more errors occurred. (GitVersion: Process returned an error (exit code 1).)
---> Cake.Core.CakeException: GitVersion: Process returned an error (exit code 1).
at Cake.Core.Tooling.Tool`1.ProcessExitCode(Int32 exitCode) in D:\a\1\s\src\Cake.Core\Tooling\Tool.cs:line 136
at Cake.Core.Tooling.Tool`1.Run(TSettings settings, ProcessArgumentBuilder arguments, ProcessSettings processSettings, Action`1 postAction) in D:\a\1\s\src\Cake.Core\Tooling\Tool.cs:line 121
at Cake.Common.Tools.GitVersion.GitVersionRunner.Run(GitVersionSettings settings) in D:\a\1\s\src\Cake.Common\Tools\GitVersion\GitVersionRunner.cs:line 73
at Cake.Common.Tools.GitVersion.GitVersionAliases.GitVersion(ICakeContext context, GitVersionSettings settings) in D:\a\1\s\src\Cake.Common\Tools\GitVersion\GitVersionAliases.cs:line 121
at Submission#0.Version..ctor(BuildSystem buildSystem, ICakeContext context) in D:\Devel\Repos\TestService\tools\Pharos.Build.Cake.14.3.3\scripts\version.cake:line 10
at Submission#0.Builder.SetVersion() in D:\Devel\Repos\TestService\tools\Pharos.Build.Cake.14.3.3\scripts\builder.cake:line 299
at Submission#0.Builder..ctor(BuildSystem buildSystem, ICakeContext context, Action`1 runTarget) in D:\Devel\Repos\TestService\tools\Pharos.Build.Cake.14.3.3\scripts\builder.cake:line 9
at Submission#0.<<Initialize>>d__0.MoveNext() in D:\Devel\Repos\TestService\tools\Pharos.Build.Cake.14.3.3\scripts\bootstrap.cake:line 20
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.RunSubmissionsAsync[TResult](ImmutableArray`1 precedingExecutors, Func`2 currentExecutor, StrongBox`1 exceptionHolderOpt, Func`2 catchExceptionOpt, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Scripting.Script`1.RunSubmissionsAsync(ScriptExecutionState executionState, ImmutableArray`1 precedingExecutors, Func`2 currentExecutor, Func`2 catchExceptionOpt, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Cake.Scripting.Roslyn.RoslynScriptSession.Execute(Script script) in D:\a\1\s\src\Cake\Scripting\Roslyn\RoslynScriptSession.cs:line 136
at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath, IDictionary`2 arguments) in D:\a\1\s\src\Cake.Core\Scripting\ScriptRunner.cs:line 219
at Cake.Commands.BuildCommand.Execute(CakeOptions options) in D:\a\1\s\src\Cake\Commands\BuildCommand.cs:line 41
at Cake.CakeApplication.Run(CakeOptions options) in D:\a\1\s\src\Cake\CakeApplication.cs:line 45
at Cake.Program.Main() in D:\a\1\s\src\Cake\Program.cs:line 81
Tracing back, we know that currentBranchTip is null
after assignment, so this could be checked immediately and a more appropriate exception thrown.