Skip to content

Commit 935453d

Browse files
committed
Add strongly typed NonFastForward exception
1 parent 4e43723 commit 935453d

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

LibGit2Sharp/Core/Ensure.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ private static void HandleError(int result)
6767
case (int)GitErrorCode.UnmergedEntries:
6868
throw new UnmergedIndexEntriesException(errorMessage, (GitErrorCode)result, error.Category);
6969

70+
case (int)GitErrorCode.NonFastForward:
71+
throw new NonFastForwardException(errorMessage, (GitErrorCode)result, error.Category);
72+
7073
case (int)GitErrorCode.MergeConflict:
7174
throw new MergeConflictException(errorMessage, (GitErrorCode)result, error.Category);
7275

LibGit2Sharp/LibGit2Sharp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
<Compile Include="MergeHead.cs" />
100100
<Compile Include="NameConflictException.cs" />
101101
<Compile Include="NetworkExtensions.cs" />
102+
<Compile Include="NonFastForwardException.cs" />
102103
<Compile Include="PushResult.cs" />
103104
<Compile Include="PushStatusError.cs" />
104105
<Compile Include="ReferenceCollectionExtensions.cs" />
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
using System;
2+
using System.Runtime.Serialization;
3+
using LibGit2Sharp.Core;
4+
5+
namespace LibGit2Sharp
6+
{
7+
/// <summary>
8+
/// The exception that is thrown when push cannot be performed
9+
/// against the remote without losing commits.
10+
/// </summary>
11+
[Serializable]
12+
public class NonFastForwardException : LibGit2SharpException
13+
{
14+
/// <summary>
15+
/// Initializes a new instance of the <see cref = "LibGit2Sharp.NonFastForwardException" /> class.
16+
/// </summary>
17+
public NonFastForwardException()
18+
{
19+
}
20+
21+
/// <summary>
22+
/// Initializes a new instance of the <see cref = "LibGit2Sharp.NonFastForwardException" /> class with a specified error message.
23+
/// </summary>
24+
/// <param name = "message">A message that describes the error. </param>
25+
public NonFastForwardException(string message)
26+
: base(message)
27+
{
28+
}
29+
30+
/// <summary>
31+
/// Initializes a new instance of the <see cref = "LibGit2Sharp.NonFastForwardException" /> class with a specified error message and a reference to the inner exception that is the cause of this exception.
32+
/// </summary>
33+
/// <param name = "message">The error message that explains the reason for the exception. </param>
34+
/// <param name = "innerException">The exception that is the cause of the current exception. If the <paramref name = "innerException" /> parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception.</param>
35+
public NonFastForwardException(string message, Exception innerException)
36+
: base(message, innerException)
37+
{
38+
}
39+
40+
/// <summary>
41+
/// Initializes a new instance of the <see cref = "LibGit2Sharp.NonFastForwardException" /> class with a serialized data.
42+
/// </summary>
43+
/// <param name = "info">The <see cref="SerializationInfo "/> that holds the serialized object data about the exception being thrown.</param>
44+
/// <param name = "context">The <see cref="StreamingContext"/> that contains contextual information about the source or destination.</param>
45+
protected NonFastForwardException(SerializationInfo info, StreamingContext context)
46+
: base(info, context)
47+
{
48+
}
49+
50+
internal NonFastForwardException(string message, GitErrorCode code, GitErrorCategory category)
51+
: base(message, code, category)
52+
{
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)