LibGit2Sharp Pull() не тянет удаленные файлы

Я создал программу для извлечения из общедоступного репозитория, размещенного на моем github. Клонирование проекта работает очень хорошо (как я это делаю в любом случае), но я пытался заставить его работать, чтобы вытащить все, и как только вы удалите файл он больше не тянет этот файл. В моем случае я удалил.gitignore из вытащенного репозитория (в основном клонированный) и теперь repo.Network.Pull() не хочет перезагружать его из репо. То же самое касается любого другого файла, который я удаляю.

        private void PullButton_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(BrowseText.Text))
                if (Directory.Exists(BrowseText.Text))
                {
                    AddToDebugBox("Starting Pull request to \"" + BrowseText.Text + "\"...");

                    if (!Repository.IsValid(BrowseText.Text))
                    {
                        AddToDebugBox("No Git init found at: \"" + BrowseText.Text + "\"...");
                        Repository.Clone("https://github.com/sxbrentxs/FPS-GLU.git", BrowseText.Text);
                        AddToDebugBox("Created new git init at: \"" + BrowseText.Text + "\".");
                    }
                    else
                    {
                        AddToDebugBox("Found git init at: \"" + BrowseText.Text + "\".");

                        using (Repository repo = new Repository(BrowseText.Text))
                        {
                            AddToDebugBox("Starting pull request...");
                            PullOptions options = new PullOptions();
                            options.FetchOptions = new FetchOptions();

                            repo.Network.Pull(new Signature("Updater", "Updater@RoZoShoGitUpdater.nl", new DateTimeOffset(DateTime.Now)), options);

                            AddToDebugBox("Completed pull request.");
                            AddToDebugBox("Calculating differences...");

                            TreeChanges changes = repo.Diff.Compare<TreeChanges>();

                            AddToDebugBox(string.Format("{0} files changed.", changes.Count()));

                            foreach (TreeEntryChanges c in changes)
                                AddToDebugBox(string.Format("Path: {0} | Change made: {1}", c.Path, c.Status));
                        }

                        AddToDebugBox("Operations completed.");
                        cleanready = !cleanready;
                    }
                }
                else
                    AddToDebugBox("Cannot pull to non-existing path: \"" + BrowseText.Text + "\"...");
            else
                AddToDebugBox("Cannot pull to nothing: \"" + BrowseText.Text + "\"...");
        }

Это журнал, который у меня есть в конце нажатия моей кнопки:

23:41:55 > Folder: "E:\Projects\Test" selected.
23:41:58 > Starting Pull request to "E:\Projects\Test"...
23:41:58 > Found git init at: "E:\Projects\Test".
23:41:58 > Starting pull request...
23:41:59 > Completed pull request.
23:41:59 > Calculating differences...
23:41:59 > 1 files changed.
23:41:59 > Path: .gitignore | Change made: Deleted
23:41:59 > Operations completed.

Что я забыл или делаю не так?

1 ответ

Решение

Вам просто нужно сделать принудительную проверку так же, как и в командной строке с git:

Пример принудительного оформления заказа руководителю филиала "master":

head = repo.Branches.Single (branch => branch.FriendlyName == "master");
var checkoutOptions = new CheckoutOptions ();
checkoutOptions.CheckoutModifiers = CheckoutModifiers.Force;
repo.Checkout (head, checkoutOptions);
Другие вопросы по тегам