@@ -78,12 +78,20 @@ public Branch Checkout(string shaOrReferenceName)
78
78
/// </summary>
79
79
/// <param name = "name">The name of the branch.</param>
80
80
/// <param name = "shaOrReferenceName">The target which can be sha or a canonical reference name.</param>
81
+ /// <param name = "allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param>
81
82
/// <returns></returns>
82
- public Branch Create ( string name , string shaOrReferenceName )
83
+ public Branch Create ( string name , string shaOrReferenceName , bool allowOverwrite = false )
83
84
{
85
+ Ensure . ArgumentNotNullOrEmptyString ( name , "name" ) ;
86
+
84
87
ObjectId commitId = repo . LookupCommit ( shaOrReferenceName ) . Id ;
85
88
86
- repo . Refs . Create ( NormalizeToCanonicalName ( name ) , commitId . Sha ) ;
89
+ using ( var osw = new ObjectSafeWrapper ( commitId , repo ) )
90
+ {
91
+ GitOid oid ;
92
+ Ensure . Success ( NativeMethods . git_branch_create ( out oid , repo . Handle , name , osw . ObjectPtr , allowOverwrite ) ) ;
93
+ }
94
+
87
95
return this [ name ] ;
88
96
}
89
97
@@ -107,21 +115,20 @@ public void Delete(string name)
107
115
}
108
116
109
117
///<summary>
110
- /// Rename an existing branch with a new name.
118
+ /// Rename an existing local branch with a new name.
111
119
///</summary>
112
120
///<param name = "currentName">The current branch name.</param>
113
121
///<param name = "newName">The new name of the existing branch should bear.</param>
114
122
///<param name = "allowOverwrite">True to allow silent overwriting a potentially existing branch, false otherwise.</param>
115
123
///<returns></returns>
116
124
public Branch Move ( string currentName , string newName , bool allowOverwrite = false )
117
125
{
118
- Ensure . ArgumentNotNullOrEmptyString ( currentName , "name " ) ;
126
+ Ensure . ArgumentNotNullOrEmptyString ( currentName , "currentName " ) ;
119
127
Ensure . ArgumentNotNullOrEmptyString ( newName , "name" ) ;
120
128
121
- Reference reference = repo . Refs . Move ( NormalizeToCanonicalName ( currentName ) , NormalizeToCanonicalName ( newName ) ,
122
- allowOverwrite ) ;
129
+ Ensure . Success ( NativeMethods . git_branch_move ( repo . Handle , currentName , newName , allowOverwrite ) ) ;
123
130
124
- return this [ reference . CanonicalName ] ;
131
+ return this [ newName ] ;
125
132
}
126
133
127
134
private static bool LooksLikeABranchName ( string referenceName )
0 commit comments