Sergiu
Sergiu

Reputation: 297

libgit2sharp remove remote branch

I want to delete a branch locally and remote. My code:

using (var repository = new Repository(path))
{
    var remote = repository.Network.Remotes["origin"];
    var options = new PushOptions();
    var credentials = options.CredentialsProvider = GetUserCredentialsProvider();
    options.CredentialsProvider = credentials;
    string pushRefSpec = @"refs/heads/:{0}".FormatWith(branch);
    repository.Network.Push(remote, pushRefSpec);
    repository.Branches.Remove(repository.Branches[branch]);
}

But I get the 401 error ("Unauthorized"). And it's because of the presence of the ":" in the name of the branch.

But I read that they are necessary, because of they are like "--delete" in native git.

Thanks for any helps!

Upvotes: 6

Views: 2039

Answers (2)

JSVS
JSVS

Reputation: 162

I just figured out the solution from the libgit2 sourcecode.

repository.Network.Push(origin, "+:/refs/heads/to-remove-branch")

The part +:/refs/heads/to-remove-branch of the refspec specifies that the remove command is forced, else just use :/refs/heads/to-remove-branch

Source: https://github.com/libgit2/libgit2/blob/master/tests/online/push.c

Upvotes: 2

user2509848
user2509848

Reputation:

This is failing with a 401 Unauthorized error because it is unauthorized. To fix this error, you just need to pass the options containing your credentials to the Push() method:

repository.Network.Push(remote, pushRefSpec, options)

That fixed this problem for me.

Upvotes: 3

Related Questions