Изменить регистр папки с помощью libgit2sharp - PullRequest
0 голосов
/ 17 января 2020

Как я могу переименовать каталог в libgit2sharp (в Windows, который не учитывает регистр), когда это просто изменение регистра?

Этот код отлично работает для перемещения файлов между различными каталоги:

    File.Move(@"C:\repo\folder1\file.txt", @"C:\repo\folder2\file.txt");
    repo.Index.Remove("folder1/file.txt");
    repo.Index.Add("folder2/file.txt");
    repo.Index.Write();
    var commitResult = repo.Commit(logMessage, author, author);

Однако, если я просто переименую регистр папки, он не будет работать:

    Directory.Move(@"C:\repo\folder1\", @"C:\repo\Folder1\");
    repo.Index.Remove("folder1/file.txt");
    repo.Index.Add("Folder1/file.txt");
    repo.Index.Write();
    var commitResult = repo.Commit(logMessage, author, author); // nothing gets written - I get LibGit2Sharp.EmptyCommitException

Я также попытался сделать 2 переименования (и сделать коммит один раз в конец) как предложено этим ответом

Я что-то делаю не так или это ограничение git? Есть ли обходной путь, кроме промежуточной фиксации?

PS: я попытался изменить репо на ignorecase = false (по умолчанию в Windows установлено значение true), но оно тоже не сработало.

1 Ответ

0 голосов
/ 17 января 2020

Оказывается, что было достаточно установить ignorecase=false в git .config - но я должен был использовать это с самого начала (до первого коммита).

Я пытался изменить эту настройку только в тот момент, когда я действительно удаляю старый случай и добавляю новый, похоже, этого было недостаточно - git не обнаруживает изменения.

...