On Tue, May 12, 2015 at 5:14 PM, Fredrik Medley <fredrik.medley@xxxxxxxxx> wrote: > With uploadpack.allowReachableSHA1InWant configuration option set on the > server side, "git fetch" can make a request with a "want" line that names > an object that has not been advertised (likely to have been obtained out > of band or from a submodule pointer). Only objects reachable from the > branch tips, i.e. the union of advertised branches and branches hidden by > transfer.hideRefs, will be processed. Note that there is an associated > cost of having to walk back the hstory to check the reachability. Mentioned previously[1]: s/hstory/history/ > This feature can be used when obtaining the content of a certain commit, > for which the sha1 is known, without the need of cloning the whole > repository, especially if a shallow fetch is used. Useful cases are e.g. > repositories containing large files in the history, fetching only the > needed data for a submodule checkout, when sharing a sha1 without telling > which exact branch it belongs to and in Gerrit, if you think in terms of > commits instead of change numbers. (The Gerrit case has already been > solved through allowTipSHA1InWant as every Gerrit change has a ref.) > > Signed-off-by: Fredrik Medley <fredrik.medley@xxxxxxxxx> > --- > diff --git a/Documentation/config.txt b/Documentation/config.txt > index 2b86fe6..ffc4cf4 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -2538,6 +2538,12 @@ uploadpack.allowTipSHA1InWant:: > of a hidden ref (by default, such a request is rejected). > see also `uploadpack.hideRefs`. > > +uploadpack.allowReachableSHA1InWant:: > + Allow `upload-pack` to accept a fetch request that asks for an > + object that is reachable from any ref tip. However, note that > + calculating object reachability is computationally expensive. Mentioned previously[1]: s/\s+/ / > + Defaults to `false`. > + > diff --git a/fetch-pack.c b/fetch-pack.c > index 77174f9..6c63d8e 100644 > --- a/fetch-pack.c > +++ b/fetch-pack.c > @@ -545,7 +547,7 @@ static void filter_refs(struct fetch_pack_args *args, > } > > /* Append unmatched requests to the list */ > - if (allow_request_with_bare_object_name & ALLOW_TIP) { > + if (allow_request_with_bare_object_name & (ALLOW_TIP | ALLOW_REACHABLE)) { Wrap this in extra parentheses to avoid compilation warnings: if ((foo & (bar | baz))) { > for (i = 0; i < nr_sought; i++) { > unsigned char sha1[20]; > [1]: http://article.gmane.org/gmane.comp.version-control.git/268428 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html