-
-
Notifications
You must be signed in to change notification settings - Fork 312
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
gix
towards 1.0
#470
Labels
C-tracking-issue
An issue to track to track the progress of multiple PRs or issues
Comments
Byron
added
the
C-tracking-issue
An issue to track to track the progress of multiple PRs or issues
label
Jul 26, 2022
This was referenced Aug 3, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
…#470) Even though the empty-tree object can be found when searched via `Repository::find_object()`, previously it was not locatable when used during rev-spec parsing.
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
…e. (#470) This is a first and maybe the last step towards providing diffing functionality, and it seems like the right choice to keep this in similar and contribute there as needed. All algorithms are well described and thus shouldn't be git-specific per-se, and `similar` is the best the community has to offer.
Byron
added a commit
that referenced
this issue
Sep 19, 2022
Byron
added a commit
that referenced
this issue
Sep 19, 2022
…mmit ancestor iteration. (#470) This is useful to avoid additional lookups of the same object for reading additional data from it. Currently one needs an object cache to avoid duplciate object extraction work, with such a cache being slower than accessing the same buffer again.
Byron
added a commit
that referenced
this issue
Sep 19, 2022
…ut consumption. (#470) This is useful if these provide additional out-of-band information.
Byron
added a commit
that referenced
this issue
Sep 19, 2022
…thor. (#470) Note that these are expensive and unconditionally use threads to speed up these computations.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
This allows path conversions there to be just as efficient as on unix. This was adopted from [a PR in the hexlix-editor](https://github.com/helix-editor/helix/pull/3890/files#diff-504515b66023120e75a921cd56a932aed76c0ff62593fbb69d92e0ef65089501R47).
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
The disadvantage of doing that is that we copy the name, which allocates, instead of just returning it by reference.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
It's very common to try to work with trees, so let's make that easier.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
But for some reason, the counter stays at 0 despite sharing the counter stat.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Finally, issues due to bugs in prodash.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Even though failing is cheap, it's not free and can be done a million times.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
…line-stats`. (#470) That way more information is generated at increasingly high costs.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
…). (#470) We assume unguessable ones are a plain text file, like one without extension.
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
Byron
added a commit
that referenced
this issue
Sep 20, 2022
3 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
A probably incomplete collection of features we still want to see in
git-repository
before it can possibly see a first stable release.initialization
starship
andhelix-editor
.Diff
Submodules
active
handling)submodule.recurse
config flag)git-sec
integration to avoid having to turn offfile
protocol support if applicable.Lock
Pathspecs
GIT_GLOB_PATHSPECS
)Protocol
fetch
implementation, as well asDelegates
as much as possible.Remotes
An abstractions to list them and learn about which branches interact.
git
for all the detailsfetch.unpackLimit
- important as it helps keeping repos usable, probably good along with a way to build bigger packs from X loose objects.consecutive
fetch negotiation algorithm (the default in git)FETCHHEAD
updatesfetch
round, or maybe rather not implement it or just fetch all tags? V1 doesn't haveinclude-tag
I think so one will have to fetch the refs and when commits are there, we traverse the commits received to match them with tags we know. Then we fetch these tag objects if they are annotated tags, and create tags in any way.--tags
and--prune
, so probably this is more than just a boolean to make desired effects explicit.repo
is provided.fetch.unpackLimit
). Having this is really important to avoid running out of ODB slots for packs in long-running applications that fetch a lot during their runtime.extra.headers
--ref
(ref_name_to_checkout) is given, implement priority system ingix_refspec::MatchGroup
just like Git to avoid ambiguityQuestions
What about auto-tags? Maybe if enabled, we will automatically add a ref-prefix to receive tag information, and then auto-create annotated tags according to the typical refspec?
Should we generally only provide options for values that are not in the
git-config
? Probably… It's easy enough to useconfig_snapshot_mut()
and can be a general directive that leverages git configuration docs.However, it must be possible to set these settings in bulk in case of anonymous remotes, but separated by transport config and remote config.
Outscoped
Decide what's needed of these, if any, and keep track of them.
branch.<name>.merge
support, as we don't yet merge anything and fetching still fetches the entire refspec of as configured in the remote.rev-walk
git-revision
describe()
withCloning
git clone --branch <name>
directory
to clone into is specified so that it can be adjusted based on the final (potentially redirected) url if this is what git does (to be validated). In any case, implement it correctly and so that everybody can use it (probably the logic should go into a re-usable function or method) or use anenum
for the directory instead.--mirror
option (see this comment for initial analysis)Out of scope
rev-parse
main@{push}
handling, which depends on properly resolvingpush.default
main@{upstream}
which needs fiddling with ref-specs for remotesgix-date
towards 1.0 #471 .@:
empty - paths should yield the tree, and not an error that says "" could not be foundConfig
config()
which assures the returned snapshot is up-to-date. Metadata allows to remove outdated files and replace them with their updated counterparts. Includes can be detected and re-resolved (but that needs configuration), and the cache needs to be updated afterwards too. There is definitely some details to consider, but it's possible.config_mut()
to take a lock file at the repository local configuration, collecting changes in memory and writing only those back to disk on drop, or whencommit()
is called similar toSnapshotMut
. Sister-methodconfig_mut_at()
to chose a particular file for writing given a path. Assume thatconfig()
will pick it up when called again, and it has to be as_mut()
need a mutableRepository
to use Rust semantics to protect against surprises.gix progress
environment variables and implement as many as feasible.open::Option
parameter to allow parsing theGIT_CONFIG_PARAMETERS
environment variable which is a way of storing-c
flags in git. Useful when implementing remote-helpers and probably hooks as well (or any program thatgit
runs. Consider reviewing thegit-command
as it could reasonably pass API and CLI overrides that way as well.Build
tokei
tests)The text was updated successfully, but these errors were encountered: