Alfred M. Szmidt wrote:
> Would it make sense to somehow split git clone from "logged in user"
> when doing git clone, and have two servers ... the idea would be to
> reduce load on git.gnu.org.

That is an excellent idea.  And as it turns out we have been working
on just such a thing.  I have been hesitant to mention it because
things are still in that experimental stage and perhaps not fully
stable.  But things seem to be making progress so I guess I will
mention it and let you try it out.

[Aside: Where is git.gnu.org documented?  I recall this being
reported as not working a few years ago and we just made it point to
git.savannah.gnu.org because we didn't know what else it would point
to but also not having seen it documented anywhere.  I have always
assumed this was something list in the sands of time.]

> That is,
>
> If you clone from these two:
>
>   git://git.savannah.gnu.org/mygroup.git

This is the anonymous git:// protocol.

>   ssh://git.savannah.gnu.org/srv/git/mygroup.git

This will always be authenticated ssh.  So far we have had less
trouble with ssh specifically because it is authenticated.

>   https://git.savannah.gnu.org/git/mygroup.git
>   http://git.savannah.gnu.org/git/mygroup.git
>   http://git.savannah.gnu.org/r/mygroup.git
>
> If you clone from these, you clone from a read-only clone copy (that
> will have delayed updated).
>
> Not sure how hard that would be to implement, but maybe it would
> reduce the AI bots, BlubHub, etc pulling infinite mirrors, and make it
> more stable for those working on GNU software?

We have implemented the un-certificated service protocols on a single
non-Boston datacenter node currently with the goal of setting up
multiple distributed Round Robin DNS nodes contributed by volunteers.
RR-DNS works well for un-certificated service protocols.  Does not
work well for certificated service protocols.

For git fetch operations from the read-only node feel free to try
these un-certificated protocol URLs.  I think the naming for these is
fairly stable.  I will list them as examples using grep because the
paths are somewhat different for each of them and I think having a
working example is useful.

    git clone git://git.git.savannah.gnu.org/grep.git
    git clone http://http.git.savannah.gnu.org/git/grep.git

Those two should cover 99.44% (obviously I just swag'd that number
from a bar of soap) of the CI/CD use cases.

The mirrored repository part of the mirror should start an rsync with
the upstream git repo 2 minutes after upstream changes stop changing.
Because people tend to cluster changes (git push, git commit, git
push, repeat) and it only makes sense to wait until they pause.
Additionally there is a full rsync update hourly in case the event
driven notifications are lost.  Lost due to network outage or
whatever.

I am sure everyone will ask about using https for the git-http-backend
smart http protocol.  That would be a certificated service and it will
have all of the same problems.  Something has been set up but it is
LIKELY TO CHANGE NAMING.  I know if I don't mention it that everyone
will nag to ask about it.  I know that if I do mention it that people
will use it and then complain when it must change.  You have been warned.

    git clone https://https.git.savannah.gnu.org/git/grep.git (UNSTABLE NAMING)

It's the https certificates which will likely cause this to change.
Because RR-DNS is incompatible with certificates in the simple case.
But maybe we can make it work.  Stand by while we continue to develop
it.

Additionally and very likely to change URL names there are cgit and
git set up now, implementing https.

    https://cgit.git.savannah.gnu.org//cgit/
    https://gitweb.git.savannah.gnu.org//gitweb/

Those names and paths might need to change but for the moment maybe
having them even temporarily will give some relief?  I would avoid
using them in documentation which will persist because again they are
likely not stable naming yet.  You have been warned.

>   http://git.savannah.gnu.org/r/mygroup.git

I have no plans to propagate the /r raw mode service.  As far as I can
tell it was implemented to give people behind restrictive corporate
networks forced to use an http proxy a way to clone through those.  I
can't see any other use for it.  That was some years ago before the
encrypt-everything movement which obviated those corporate http
proxies.  And personally I have always experienced problems with http
proxies anyway.  It's an additional reason to use https to force
avoiding those data mangling proxies mostly broken.

I have been contemplating removing the /r raw service as it is the
slowest and most inefficient form of git fetch protocol.  Use the /git
smart git-http-backend service instead.  It's the fast and efficient
protocol.

In the above I have used the long canonical form *.savannah.gnu.org
for names but the *.sv.gnu.org and *.sv.nongnu.org names are also
available too.

A personal note from me.  I am currently on travel.  I am actually
sitting on the deck of a sailboat typing this at the moment.  I am
offline much of the day and some days completely.  It depends upon
where we are going with the boat and what needs to be happening while
on it.  I am working through recent tragic events and for those who
know this is a very good activity for me.  I will be on the net as I
can be and will be working on specific targeted things as I can work
on them.  And at the moment I have caught some germ from the airline,
or from before, or something and am rather sick with a respiratory
ailment of some type.  I feel okay mostly.  But if you heard my voice
right now you would definitely believe that I am sick!  I am being
sent to the clinic here in a few minutes because of it.

Bob

Reply via email to