-
-
Notifications
You must be signed in to change notification settings - Fork 311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
josh _(just one simple history)_ #427
Comments
Also partially done with experimentation using `git rev-parse`.
Benefit of this is that the basic structure of the parser is setup early.
This will be useful for all methods/functions that want to take a single spec only. Whenever a range is set, even if no other actual revision is provided, it indicates the input has different intentions than what we require.
Also partially done with experimentation using `git rev-parse`.
Benefit of this is that the basic structure of the parser is setup early.
This will be useful for all methods/functions that want to take a single spec only. Whenever a range is set, even if no other actual revision is provided, it indicates the input has different intentions than what we require.
This is something for git-repository anyway, but it seems like a lot of work for a rarely used feature and a big dependency which might not ever be faithfully implemented as the regex engines will probably differ.
Now only the lazy-load portion will double-check for a race to avoid loading the resource multiple times if threads are very racy or the resource loading takes time. In other cases, which should occour more rarely, we assume what we saw is still the case now.
What's nice is that it keeps track of the reference as well, which is a benefit. It will also do its best to not fail if the branch doesn't exist anymore but instead resorts to the id available in the reflog.
Hello @Byron, I'm one of contributors of josh-project/josh, and I wanted to comment a bit on the list of features you posted above. Currently Josh uses two git implementations underneath - git and libgit2. Git is responsible for:
libgit2 is used to:
While it would certainly be an improvement to use gitoxide as a drop-in git replacement and git-repository as a library, it would be much better if we could drop the whole concept of running a git subprocess completely, and only use git-repository as a library. So current design choices are not as much a result of choosing the best architecture, but are rather dictated by the available software libraries. In a long-term perspective, here are some of the things we would need to implement in Josh to overcome existing git limitations:
So overall, we want to move away from running git CLI. Btw -- if you're interested in more details on how Josh works internally, I dropped you a keybase message, the authors of the project will be more than happy to discuss it with you. |
Thanks for chiming in. It will probably be a while until About abstracting away the actual object storage, that should be possible as I replied to the keybase message so we can have a chat about that. |
git
CLI, that's finehttps://github.com/esrlabs/josh
Related PRs
The text was updated successfully, but these errors were encountered: