示例#1
0
        /// <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));
        }
示例#2
0
 /// <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;
 }
示例#3
0
 /// <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;
 }
示例#4
0
        /// <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);
        }
示例#5
0
 /// <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));
 }
示例#6
0
        /// <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));
        }
示例#7
0
        /// <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);
        }