Я пытаюсь использовать libgit2sharp для перехода к моему репозиторию на битбакете. Я пытаюсь сделать это:
repo.Network.Push(repo.Branches[branchName], pushOptions);
Кажется, все в порядке, исключения не выдаются, и я не получаю ошибок в обратном вызове, но когда я проверяю битбакет, ни одной из моих коммитов нет. Другие методы работают нормально (например, я могу создать новую ветку на битбакете, а затем использовать libgit2sharp для извлечения и увидеть, что теперь у меня есть эта ветка локально). Есть ли что-то, что я мог бы пропустить здесь?
редактировать:
Попытался просто сделать небольшой пример программы, чтобы посмотреть, смогу ли я заставить ее работать без проблем. Я не знаю, поможет ли мой код, но вот он:
class Program
{
static void Main(string[] args)
{
PushOptions options = new PushOptions();
Credentials creds = new Credentials();
creds.Username = "username";
creds.Password = "password";
options.Credentials = creds;
options.OnPackBuilderProgress = Program.packBuilderProgressHandler;
options.OnPushTransferProgress = Program.pushTransferProgressHandler;
options.OnPushStatusError = Program.pushStatusErrorHandler;
Repository repo = new Repository("E:/Ohad/Work/libgitTest");
repo.Network.Push(repo.Branches["origin/master"], options);
Console.WriteLine("Press enter to close...");
Console.ReadLine();
}
public static bool packBuilderProgressHandler(PackBuilderStage stage, int current, int total)
{
Console.Out.WriteLine("packBuilder => " + current + " / " + total);
return true;
}
public static bool pushTransferProgressHandler(int current, int total, long bytes)
{
Console.Out.WriteLine("pushTransfer => " + current + " / " + total + " , " + bytes);
return true;
}
public static void pushStatusErrorHandler(PushStatusError error)
{
Console.Out.WriteLine("error => " + error.Message);
}
}
Просто создайте новый репозиторий на битбакете и добавьте приведенный выше код (изменив жестко запрограммированный материал), и он должен быть воспроизводимым. Я просто сделал случайное изменение, добавил и зафиксировал его, а затем использовал программу, чтобы попытаться отправить его в битбакет. Вывод, который я получаю из вышеизложенного:
pushTransfer => 0 / 0 , 12
pushTransfer => 0 / 0 , 32
Press enter to close...
0/0 выглядит подозрительно для меня, но я не знаю, что я делаю неправильно =/. Спасибо за любую помощь!!
редактировать 2: я только что добавил это:
repo.Branches.Update(repo.Head, delegate(BranchUpdater updater)
{
updater.Remote = "origin";
updater.UpstreamBranch= repo.Head.CanonicalName;
})
до того, как я нажму, и это устранило проблему. Не знаю точно, почему, но я возьму его =).