-
-
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
consecutive negotiation #855
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…v0.1.0, safety bump 7 crates SAFETY BUMP: gix-revision v0.14.0, gix-negotiate v0.1.0, gix v0.45.0, gix-refspec v0.11.0, gitoxide-core v0.28.0, cargo-smart-release v0.20.0, gitoxide v0.26.0
Byron
force-pushed
the
consecutive-negotiation
branch
from
May 19, 2023 09:17
72fdb04
to
92832ca
Compare
Byron
force-pushed
the
consecutive-negotiation
branch
from
May 19, 2023 17:16
3b4d29f
to
d614dad
Compare
That way it's more similar to `gix_odb::at()` as there is effectively only one important type.
Byron
force-pushed
the
consecutive-negotiation
branch
2 times, most recently
from
May 20, 2023 20:13
7f90c8d
to
009df44
Compare
Byron
force-pushed
the
consecutive-negotiation
branch
2 times, most recently
from
May 22, 2023 19:20
100beba
to
a219fa0
Compare
* make `CommitterTimestamp` available as type, making the code using it more descriptive. * add `new()` to `PriorityQueue` * add `Graph::try_lookup_and_insert_default()` * add `Debug` impl for `Graph`
This is the default negotiation algorithm.
Byron
force-pushed
the
consecutive-negotiation
branch
from
May 23, 2023 17:06
a219fa0
to
5bdd071
Compare
…istic fetch with --dry-run. This means we will have to reproduce what git does naturally, to fill in common refs and also provide tips. Unfortunately this doesn't work as it's apparently not really dry-running, but modifying the repository underneath. This means it's not idempotent when running it multiple times.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implement the
consecutive
negotiation algorithm to be more compatible to other kinds of servers whichcannot deal with the
naive
negotiation style we currently implement.Tasks for
git-negotiate
gix-negotiate
crate with basic APInoop
.consecutive
skipping
consecutive
✅ andskipping
✅ actually workmake tests work with- wasn't idempotent after all and it only works the first time it's run. There is some state apparently, despite--dry-run
--dry-run
.Tasks for
gix
Research
Naive
is really the first part of the 'common' algorithm which sends most of the refs as specified by the refspec. What's sent next is implemented by the algorithm, which we don't really implement at all.git fetch --negotiate-only
it's possible to setup baseline expectations as we see the common commits produced by an algorithm, given a specific input of--negotiation-tips
, which is equivalent to controlling the starting point of the negotiationnoop
truly does nothing and is supposed to be used for refetching certain objects if a filter was used previously. It by itself wouldn't even trigger a full pack to be fetched as it also won't put anywant
line.mark_complete_and_common_ref
,mark_tips
andfor_each_cached_alternate
(add tips of alternates) is the same sequence both in V1 and V2, then it senseHAVE
lines as produced by the negotiator, feedACK
lines to it.--negotiate-only
does its very own negotiation and thus isn't comparable - probably for V1 compatibility, we want to packet line tracing. However,negotiate_using_fetch
provides a clean overview of what negotiation should be.HAVE
lines starts at 16, and is then increased with each round according to the rules innext_flush
.