diff --git a/src/GitVersionCore/Configuration/GitVersionConfigurationException.cs b/src/GitVersionCore/Configuration/GitVersionConfigurationException.cs index 76cfb026e8..6b4387a9fd 100644 --- a/src/GitVersionCore/Configuration/GitVersionConfigurationException.cs +++ b/src/GitVersionCore/Configuration/GitVersionConfigurationException.cs @@ -2,9 +2,11 @@ namespace GitVersion { using System; - public class GitVersionConfigurationException : Exception + [Serializable] + public class GitVersionConfigurationException : GitVersionException { - public GitVersionConfigurationException(string msg) : base(msg) + public GitVersionConfigurationException(string msg) + : base(msg) { } } diff --git a/src/GitVersionCore/Configuration/OldConfigurationException.cs b/src/GitVersionCore/Configuration/OldConfigurationException.cs index 08603b4daf..58a8ef2625 100644 --- a/src/GitVersionCore/Configuration/OldConfigurationException.cs +++ b/src/GitVersionCore/Configuration/OldConfigurationException.cs @@ -1,18 +1,12 @@ namespace GitVersion { using System; - using System.Runtime.Serialization; [Serializable] - public class OldConfigurationException : Exception + public class OldConfigurationException : GitVersionException { - public OldConfigurationException(string message) : base(message) - { - } - - protected OldConfigurationException( - SerializationInfo info, - StreamingContext context) : base(info, context) + public OldConfigurationException(string message) + : base(message) { } } diff --git a/src/GitVersionCore/GitVersionCore.csproj b/src/GitVersionCore/GitVersionCore.csproj index 8131080017..0fd85a6b3f 100644 --- a/src/GitVersionCore/GitVersionCore.csproj +++ b/src/GitVersionCore/GitVersionCore.csproj @@ -118,6 +118,7 @@ + diff --git a/src/GitVersionCore/GitVersionException.cs b/src/GitVersionCore/GitVersionException.cs new file mode 100644 index 0000000000..b6afb92952 --- /dev/null +++ b/src/GitVersionCore/GitVersionException.cs @@ -0,0 +1,21 @@ +namespace GitVersion +{ + using System; + + using GitTools; + + [Serializable] + public class GitVersionException : GitToolsException + { + public GitVersionException(string message) + : base(message) + { + } + + + public GitVersionException(string message, Exception innerException) + : base(message, innerException) + { + } + } +} \ No newline at end of file diff --git a/src/GitVersionCore/VersionCalculation/FallbackBaseVersionStrategy.cs b/src/GitVersionCore/VersionCalculation/FallbackBaseVersionStrategy.cs index 85a2c966f1..a7087923d4 100644 --- a/src/GitVersionCore/VersionCalculation/FallbackBaseVersionStrategy.cs +++ b/src/GitVersionCore/VersionCalculation/FallbackBaseVersionStrategy.cs @@ -14,11 +14,22 @@ public class FallbackBaseVersionStrategy : BaseVersionStrategy { public override IEnumerable GetVersions(GitVersionContext context) { - var baseVersionSource = context.Repository.Commits.QueryBy(new CommitFilter + Commit baseVersionSource; + var currentBranchTip = context.CurrentBranch.Tip; + + try + { + baseVersionSource = context.Repository.Commits.QueryBy(new CommitFilter + { + IncludeReachableFrom = currentBranchTip + }).First(c => !c.Parents.Any()); + } + catch (NotFoundException exception) { - IncludeReachableFrom = context.CurrentBranch.Tip - }).First(c => !c.Parents.Any()); - yield return new BaseVersion(context, "Fallback base version", false, new SemanticVersion(minor: 1), baseVersionSource, null); + throw new GitVersionException($"Can't find commit {currentBranchTip.Sha}. Please ensure that the repository is an unshallow clone with `git fetch --unshallow`.", exception); + } + + yield return new BaseVersion(context, "Fallback base version", false, new SemanticVersion(minor : 1), baseVersionSource, null); } } } \ No newline at end of file