/// <summary>Create local branch.</summary> /// <param name="name">Branch name.</param> /// <param name="startingRevision">Starting revision.</param> /// <param name="tracking">Tracking mode.</param> /// <param name="checkout">Set to <c>true</c> to checkout branch after creation.</param> /// <param name="createRefLog">Create branch's reflog.</param> /// <returns>Created branch.</returns> /// <exception cref="T:System.ArgumentNullException"><paramref name="name"/> == null or <paramref name="startingRevision"/> == <c>null</c>.</exception> /// <exception cref="T:System.ArgumentException"> /// <paramref name="startingRevision"/> is not handled by this repository or deleted. /// <paramref name="name"/> is not a valid reference name. /// Branch '<paramref name="name"/>' already exists. /// </exception> /// <exception cref="T:gitter.Git.GitException">Failed to dereference <paramref name="startingRevision"/> or create a branch.</exception> public Branch Create(string name, IRevisionPointer startingRevision, BranchTrackingMode tracking, bool checkout, bool createRefLog) { Verify.Argument.IsValidReferenceName(name, ReferenceType.Branch, "name"); Verify.Argument.IsValidRevisionPointer(startingRevision, Repository, "startingRevision"); Verify.Argument.IsFalse(ContainsObjectName(name), "name", Resources.ExcObjectWithThisNameAlreadyExists.UseAsFormat("Branch")); return(CreateBranchCore(name, startingRevision, tracking, createRefLog, checkout, false)); }
/// <summary>Create <see cref="CreateBranchParameters"/>.</summary> /// <param name="branchName">Branch's name</param> /// <param name="startingRevision">Starting revision.</param> /// <param name="tracking">Tracking mode.</param> /// <param name="checkout">Set to true to checkout branch after creation.</param> /// <param name="createRefLog">Create branch's reflog.</param> public CreateBranchParameters(string branchName, string startingRevision, bool checkout, bool orphan, bool createReflog, BranchTrackingMode trackingMode) { BranchName = branchName; StartingRevision = startingRevision; Checkout = checkout; Orphan = orphan; CreateReflog = createReflog; TrackingMode = trackingMode; }
/// <summary>Create branch.</summary> /// <param name="name">Branch name.</param> /// <param name="startingRevision">Starting revision.</param> /// <param name="tracking">Tracking mode.</param> /// <param name="createRefLog">Create branch's reflog.</param> /// <param name="checkout">Set to <c>true</c> to checkout branch after creation.</param> /// <param name="orphan">Set to <c>true</c> to create orphan branch.</param> /// <returns>Created branch.</returns> /// <exception cref="T:gitter.Git.GitException">Failed to dereference <paramref name="startingRevision"/> or create a branch.</exception> private Branch CreateBranchCore(string name, IRevisionPointer startingRevision, BranchTrackingMode tracking, bool createRefLog, bool checkout, bool orphan) { var rev = startingRevision.Dereference(); var notifications = checkout ? new[] { RepositoryNotifications.Checkout, RepositoryNotifications.BranchChanged } : new[] { RepositoryNotifications.BranchChanged }; using (Repository.Monitor.BlockNotifications(notifications)) { Repository.Accessor.CreateBranch.Invoke(new CreateBranchParameters( name, startingRevision.Pointer, checkout, orphan, createRefLog, tracking)); } var branch = new Branch(Repository, name, rev); AddObject(branch); if (checkout) { Repository.Head.Pointer = branch; } return(branch); }
/// <summary>Create local branch.</summary> /// <param name="name">Branch name.</param> /// <param name="startingRevision">Starting revision.</param> /// <param name="tracking">Tracking mode.</param> /// <returns>Created branch.</returns> /// <exception cref="T:System.ArgumentNullException"><paramref name="name"/> == null or <paramref name="startingRevision"/> == <c>null</c>.</exception> /// <exception cref="T:System.ArgumentException"> /// <paramref name="startingRevision"/> is not handled by this repository or deleted. /// <paramref name="name"/> is not a valid reference name. /// Branch '<paramref name="name"/>' already exists. /// </exception> /// <exception cref="T:gitter.Git.GitException">Failed to dereference <paramref name="startingRevision"/> or create a branch.</exception> public Branch Create(string name, IRevisionPointer startingRevision, BranchTrackingMode tracking) { return(Create(name, startingRevision, tracking, false, false)); }
/// <summary>Create <see cref="Branch"/>, starting at this revision.</summary> /// <param name="revision">Revision to start branch from.</param> /// <param name="name">Branch name.</param> /// <param name="tracking">Branch tracking mode.</param> /// <param name="checkout">Checkout branch after creation.</param> /// <returns>Created <see cref="Branch"/>.</returns> public static Branch CreateBranch(this IRevisionPointer revision, string name, BranchTrackingMode tracking, bool checkout) { Verify.Argument.IsValidRevisionPointer(revision, "revision"); var repository = revision.Repository; return(repository.Refs.Heads.Create(name, revision, tracking, checkout)); }
/// <summary>Create <see cref="Branch"/>, starting at this revision.</summary> /// <param name="revision">Revision to start branch from.</param> /// <param name="name">Branch name.</param> /// <param name="tracking">Branch tracking mode.</param> /// <param name="checkout">Checkout branch after creation.</param> /// <returns>Created <see cref="Branch"/>.</returns> public static Branch CreateBranch(this IRevisionPointer revision, string name, BranchTrackingMode tracking, bool checkout) { Verify.Argument.IsValidRevisionPointer(revision, "revision"); var repository = revision.Repository; return repository.Refs.Heads.Create(name, revision, tracking, checkout); }