jorgebucaran / fisher

A plugin manager for Fish
https://git.io/fisher
MIT License
7.53k stars 257 forks source link

Feature request: only pull new changes on fisher update #777

Closed joshmedeski closed 9 months ago

joshmedeski commented 9 months ago

I've noticed when calling fisher update it always pulls HEAD and redownloads everything.

It would be helpful if it could detect the current state of the files and only pull when there are new commits from the remote server.

tpm and lazy.nvim are two tools that I use daily that do a good job at this.

I realize the main issue here will be since fisher copies files to functions, conf.d, completions, etc... it's not as straitforward as the other solutions I mentioned, which have all plugin code in a single directory that can be controlled and tracked using git.

My initial thoughts are we have a ~/.config/fish/plugins directory that clones the project to each folder, then symbolically link each plugins functions, conf.d, completions files into the appropriate place.

Let me know your thoughts @jorgebucaran, thanks for making this plugin manager!

jorgebucaran commented 9 months ago

Switching to git instead of direct file downloads could mitigate this, but it typically results in a slightly slower Fisher. There isn't a pressing need to adopt git at this point since there are no existing issues and everything is running smoothly with Fisher. While I see no immediate need to focus on this, I'm not opposed to considering it in the future.

Somewhat related https://github.com/jorgebucaran/fisher/issues/752

joshmedeski commented 9 months ago

Thanks for your thoughts. If I decide to play around with this idea of transparency over performance I'll respond here with my findings.

jorgebucaran commented 9 months ago

This discussion is compelling, although I may not be the best at conveying my point. Fisher has used git before, but in practical terms, across varied use cases over several years, it was less efficient compared to directly fetching tarballs from GitHub. I understand the apparent logic in using git, but practically, it results in a slower Fisher. While it would address the issue of partial updates, it's usually not worthwhile as plugins don't change significantly, and the minimal changes don't justify the overhead. Thoughts?

I'm more than willing to discuss this, I just closed it here because there's nothing actionable—I won't be focusing on this in the near future. But I'm not dismissing the idea outright. 😄

joshmedeski commented 9 months ago

I was gonna open a discussion for this, but saw you had that feature disabled 😄

I've really enjoyed being able to see commit history for plugin updates from lazy.nvim.

208301737-68fb279c-ba70-43ef-a369-8c3e8367d6b1

plugins don't change significantly

This is a totally valid point. Perhaps the overhead of rewriting how fisher works isn't worth it if most fish-related plugins don't change much. But after using lazy.nvim I wanted to bring it up here and see if that kind of user experience is worthwhile in this setting (fish plugins)