Re: Ambigious messages
Hello Elijah,
Sunday, August 1, 2021, 3:27:07 AM, you wrote:
> Hi Eugen,
> On Sat, Jul 31, 2021 at 2:56 AM Eugen Konkov <kes-kes@yandex.ru> wrote:
Show 5 quoted lines
>> $ git checkout 51c7d41b82b5b
>> error: Your local changes to the following files would be overwritten by checkout:
>> lib/Mojo/IOLoop/Stream.pm
>> Please commit your changes or stash them before you switch branches.
>> Aborting
> The error seems quite reasonable to me...but can I ask how you got
> into this state?
> There's two ways I know of:
> 1) Setting a sparse-checkout to only have certain paths, and then
> recreating a file outside the sparsity paths anyway.
> 2) Trying to adjust your sparse-checkout to have a different set of
> paths, then hit Ctrl-C while it is in the middle of running.
> Did you do one of these? If not, what'd you do? If so, which one?
Show 8 quoted lines
> I've only had confused users come to me when they did the latter; they
> apparently assumed Ctrl-C would abort the operation and return to the
> previous state, but it does not -- whatever was successfully checked
> out before they hit Ctrl-C remains written to the working copy, but
> the .git/info/sparse-checkout file is updated last so the system
> continues assuming the old checkout. I wonder if we need to add some
> special Ctrl-C handling inside sparse-checkout adjustments or
> something.
>> $ git checkout lib/Mojo/IOLoop/Stream.pm
>> error: pathspec 'lib/Mojo/IOLoop/Stream.pm' did not match any file(s) known to git
Show 5 quoted lines
> This error message is clearly suboptimal and should be improved.
> Alternatively, though, we could perhaps change the behavior so that
> when in a sparse-checkout and the file(s) that match are SKIP_WORKTREE
> but present anyway, we could just remove the file from the working
> copy (i.e. make it match the index).
Show 6 quoted lines
>> $ git add lib/Mojo/IOLoop/Stream.pm
>> The following pathspecs didn't match any eligible path, but they do match index
>> entries outside the current sparse checkout:
>> lib/Mojo/IOLoop/Stream.pm
>> hint: Disable or modify the sparsity rules if you intend to update such entries.
>> hint: Disable this message with "git config advice.updateSparsePath false"
> The error message is correct, but this is the case Stolee was talking
> about recently where it'd be good to add an override to "git add" to
> allow adding it anyway and add information about using that option to
> this error message.
>> $ git --version
>> git version 2.32.0
>> Here I do not understand how to checkout to different commit
>> or how to commit the subject file
> I'll give you three different ways you should be able to do it:
> 1. Since you wanted to just restore the file to the version in the
> index (as per your `git checkout lib/Mojo/IOLoop/Stream.pm` command),
> you can simply delete the file (`rm lib/Mojo/IOLoop/Stream.pm`) and
> everything would be fine.
Show 6 quoted lines
> 2. You could change your sparsity paths to include this file so it
> doesn't think it should be excluded from the working tree, e.g. `git
> sparse-checkout add lib/Mojo/IOLoop` or even `git sparse-checkout add
> lib/Mojo/IOLoop/Stream.pm`. That'd be most useful if you made
> important edits to the file or want to continue editing the file and
> committing changes in it.
Show 6 quoted lines
> 3. You could just disable the sparse-checkout entirely (`git
> sparse-checkout disable`). That'd make it so you don't have to worry
> about this path or any other being simultaneously excluded and present
> in the working tree. You should be able to fix things up normally.
> And, if you want, when you're done fixing things up, then set up a
> sparse-checkout again.
>> It would be nice to show hint about how to exlude this file from unindex
> Yes, we need to improve some error messages here (and perhaps tweak
> some behavior as well). Thanks for the report.
>>Thanks for the report.
Thank you for the support!
> Did you do one of these? If not, what'd you do? If so, which one?
None of these. I even do not remember sharp command how I fall into this. This were two or three months ago... I just remember that I have added this file to "ignore" it from tracking:
git update-index --assume-unchanged lib/Mojo/IOLoop/Stream.pm
This feature is like: hide file from output. Git do something with this file so it is tracked in some way but just is not displayed when `git status` command is done.
So it would be nice if I can do:
git hide lib/Mojo/IOLoop/Stream.pm
and this file is hidden from output. But `git status --verbose` will show it anyway. Compare:
git status
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
1 modified: cpanfile.snapshot
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
2 modified: ext/Auth/Mojolicious/Plugin/Auth.pm
3 modified: front/readme.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
4 .prove
git status --verbose
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
1 modified: cpanfile.snapshot
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
2 modified: ext/Auth/Mojolicious/Plugin/Auth.pm
3 modified: front/readme.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
4 .prove
Files hidden from output:
(use "git unhide <file>...." to unhide these files)
5 lib/Mojo/IOLoop/Stream.pmI am not expert, this is just my user point of view. Probably there alredy some exisisting interface. I just outline how it would be handy from my point.
Also this topic seems hot: https://stackoverflow.com/questions/936249/how-to-stop-tracking-and-ignore-changes-to-a-file-in-git
--
Best regards,
Eugen Konkov