Open Byron opened 8 months ago
Hey Sebastian,
Thanks for this! I was planning on doing this discovery later this week, because I'm off due to Carnival. I actually opened a discussion in the repo.
Thanks for kicking this off and for pointing to the original discussion! It helped me to understand what's going on as I was a little confused - now I see that a migration is happening to the -git
crate and all makes sense.
I was pretty quick in creating this issue and I welcome you to double-check, or ask for clarification where you see fit or need. This can only make it better.
Thank you @Byron for this! It was such a treat meeting you, and I am so excited about oxidising GitButler :) I fully agree about the general principles that you outlined, it's very much how we like to approach problems too.
add ODB alternates
While this is something Gitoxide should of course support, we're actually moving away from needing this long-term.
on Windows, there is no native ssh transport yet which might be worse than git2 right now.
Check out https://docs.rs/russh - they've been great maintainers and I used to use this crate for testing SSH stuff locally. Might work as a native transport. It's a maintained, spruced up version of Pijul's thrussh.
Thanks for the suggestions! I have just linked the gitoxide
native #1246 issue, and believe that also lists russh
as very strong candidate.
Used Git2 Features
The list is probably not completely exhaustive, omitting smaller features intentionally as they are covered, and focussing on the bigger picture.
status
diffy
, use native hunks maybe?)codecommit
orrad
.git add .
- with proper worktree filtering (add currently unsupported, but worktree filter could help already)git status
(primitives exist, WIP)git status
equivalent (primitives exist)Wanted
What follows is prominent issues from the GitButler tracker.
ssh
is used, which is exactly whatgit
does.ssh
transport yet which might be worse thangit2
right now. See #1246 for more.git add
, aren't possible yet, but when they are they will call worktree filtersgit log --all
might be possible with namespaces. Maybe worth a try.gitoxide
is used everywhere - each repository instance created needs to have the GitButler namespace set then, at least those that read or write GitButler references.Here is the repo: https://github.com/gitbutlerapp/gitbutler
Shortcomings that might be a problem
1524
Guiding Principles
After our in-person meet, I kept mentioning a few driving principles that I find valuable to keep in mind when planning the next steps.
gitoxide
should be step-wise.gitoxide
is an implementation detail, but ultimately it will drive down the implementation complexity of the application while improving its performance and compatibility.Notes on issues
From time to time, one can look into issues that are waiting for feedback.
Try to fix this when converting to
gitoxide
Check the `gitoxide label for more.
Big Problems
Architecturally, there might be issues in resolving these:
Requested features
Roughly in order of effort-for-value
gitbutler .
(see this comment)Authentication
Use this label to list them all.
Profile Picutures
Pre-commit hooks