使用 libgit2sharp 更改文件夹大小写
Change case of folder using libgit2sharp
如何重命名 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
我还尝试按照 this answer
的建议进行 2 次重命名(并在最后提交一次)
我是做错了什么还是这是 git 的限制?
除了中间提交之外还有什么解决方法吗?
PS:我尝试将 repo 更改为 ignorecase=false(Windows 中的默认设置为 true),但也没有用。
事实证明,在 git.config 中设置 ignorecase=false
就足够了——但我必须从一开始就使用它(在第一次提交之前)。
我只是在真正删除旧案例并添加新案例时才尝试更改该设置,看起来这还不够 - git 未检测到更改。
如何重命名 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
我还尝试按照 this answer
的建议进行 2 次重命名(并在最后提交一次)我是做错了什么还是这是 git 的限制? 除了中间提交之外还有什么解决方法吗?
PS:我尝试将 repo 更改为 ignorecase=false(Windows 中的默认设置为 true),但也没有用。
事实证明,在 git.config 中设置 ignorecase=false
就足够了——但我必须从一开始就使用它(在第一次提交之前)。
我只是在真正删除旧案例并添加新案例时才尝试更改该设置,看起来这还不够 - git 未检测到更改。