libgit2 / libgit2sharp

Git + .NET = ❤
http://libgit2.github.com
MIT License
3.17k stars 886 forks source link

Libgit2sharp CheckoutPaths() doesn't undo changes on file with status "NewInIndex, ModifiedInWorkdir". #1984

Open moworkplacela opened 2 years ago

moworkplacela commented 2 years ago

You are opening a bug report against the LibGit2Sharp project: we use GitHub Issues for tracking bug reports and feature requests. If you have a question about an API or usage, please ask on StackOverflow: http://stackoverflow.com/questions/tagged/libgit2sharp.

Otherwise, to report a bug, please fill out the reproduction steps (below) and delete these introductory paragraphs. Thanks!

Reproduction steps

I have a file inside many folders (for ex : docs/jsons/myfile.json ) in my repository

I staged the file , so it now has the status "NewInIndex".

After that i made changes on that file.

It has now the status "NewInIndex, ModifiedInWorkdir".

My code is the following :

using ( var repo = new Repository("my repo path")
{
CheckoutOptions options = new CheckoutOptions { CheckoutModifiers = CheckoutModifiers.Force };

repo.CheckoutPaths(repo.Head.FriendlyName, new string[] {"docs/jsons/myfile.json"} , options );
}

I also tried to replace " repo.Head.FriendlyName" by "repo.Head.CannonicalName" and by "repo.Head.Tip.Id.Sha"

Expected behavior

I expect the file to get back to its previous content, and to have the status "NewInIndex" again.

Actual behavior

The file's content doesnt change and its status is still : "NewInIndex, ModifiedInWorkdir".

Version of LibGit2Sharp (release number or SHA1)

LibGit2Sharp version 0.26.2

Operating system(s) tested; .NET runtime tested

Window 10 Enterprise

.NET 6.0