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