2014-04-10 20 views
6

Chcę utworzyć i usunąć oddział na git za pomocą libgit2sharp. Wpadłem z tego kodu, ale generuje błąd w repo.Network.Push(localBranch, pushOptions);Jak używać biblioteki libgit2sharp do tworzenia nowej gałęzi od lokalnej do zdalnej?

using (var repo = new Repository(GIT_PATH)) 
{ 
    var branch = repo.CreateBranch(branchName); 

    var localBranch = repo.Branches[branchName]; 

    //repo.Index.Stage(GIT_PATH); 
    repo.Checkout(localBranch); 
    repo.Commit("Commiting at " + DateTime.Now); 

    var pushOptions = new PushOptions() { Credentials = credentials }; 

    repo.Network.Push(localBranch, pushOptions); // error 

    branch = repo.Branches["origin/master"]; 
    repo.Network.Push(branch, pushOptions); 
} 

komunikat o błędzie jest The branch 'buggy-3' ("refs/heads/buggy-3") that you are trying to push does not track an upstream branch.

Próbowałem szukając tego błędu w internecie ale nie znalazłem rozwiązania, które mogłyby rozwiązać problem. Czy można to zrobić za pomocą libgit2sharp?

Odpowiedz

14

Musisz powiązać oddział lokalny z pilotem, na który chcesz naciskać.

Na przykład, biorąc pod uwagę już istniejące "origin" pilota:

Remote remote = repo.Network.Remotes["origin"]; 

// The local branch "buggy-3" will track a branch also named "buggy-3" 
// in the repository pointed at by "origin" 

repo.Branches.Update(localBranch, 
    b => b.Remote = remote.Name, 
    b => b.UpstreamBranch = localBranch.CanonicalName); 

// Thus Push will know where to push this branch (eg. the remote) 
// and which branch it should target in the target repository 

repo.Network.Push(localBranch, pushOptions); 

// Do some stuff 
.... 

// One can call Push() again without having to configure the branch 
// as everything has already been persisted in the repository config file 
repo.Network.Push(localBranch, pushOptions); 

Uwaga ::Push() naraża inne overloads które pozwalają dynamicznie dostarczyć takich informacji bez zapisywania go w config.

+0

Zobacz także ** [Odpowiedź na to pytanie] (http://stackoverflow.com/a/22617675/335418) **, która powinna dostarczyć dalszych informacji dotyczących konfiguracji gałęzi – nulltoken

+0

Gdzie jest różnica między 'localRepo' a 'repo'? – BendEg

+0

@ BendEg To był błąd. Dobry połów! Naprawiony. – nulltoken