コード例 #1
0
ファイル: RemoteBranch.cs プロジェクト: Kuzq/gitter
        /// <summary>Delete branch from remote and local repository.</summary>
        public Task DeleteFromRemoteAsync(CancellationToken cancellationToken)
        {
            Verify.State.IsNotDeleted(this);

            var remote = Remote;
            if(remote == null)
            {
                throw new GitException(string.Format(CultureInfo.InvariantCulture, "Unable to find remote for branch '{0}'", Name));
            }
            string branchName = Name.Substring(remote.Name.Length + 1);
            string remoteRefName = GitConstants.LocalBranchPrefix + branchName;

            var notificationsBlock = Repository.Monitor.BlockNotifications(
                RepositoryNotifications.BranchChanged);
            var parameters = new AccessLayer.RemoveRemoteReferencesParameters(
                remote.Name, remoteRefName);

            return
                Repository.Accessor.RemoveRemoteReferences.InvokeAsync(parameters, null, cancellationToken)
                .ContinueWith(t =>
                    {
                        notificationsBlock.Dispose();
                        TaskUtility.PropagateFaultedStates(t);
                        Refresh();
                    });
        }