From: Phillip Wood <phillip.wood123@gmail.com>
To: "Anselm Schüler" <mail@anselmschueler.com>, git@vger.kernel.org
Cc: Derrick Stolee <stolee@gmail.com>
Subject: Re: Git maintenance fails without meaningful error message if any remote is no longer available
Date: Wed, 6 May 2026 15:06:30 +0100 [thread overview]
Message-ID: <40361c53-36f6-4769-a721-88de5fcf3910@gmail.com> (raw)
In-Reply-To: <0076773f-85c5-475b-96c7-bd85c9e5699a@anselmschueler.com>
Hi Anselm
On 05/05/2026 11:05, Anselm Schüler wrote:
> [ This is a duplicate message because I forgot to hit Reply All the last
> time ]
>
> Hi Phillip,
>
> I think there may be a misunderstanding. My current systemd timers do
> use --keep-going. The issue is that on the individual repo, git-
> maintenance won’t fetch other remotes if one remote fails. --keep-going
> will ensure that the other repos get processed, but the repo with the
> failing remote won’t fetch any remotes after the failing one.
>
> At least, that’s what appears to be happening from the output of the
> command.
Oh sorry I'd misunderstood what was happening. I think that error comes
from "git fetch --all" which dying in connect.c:die_initial_contact().
If there is one remote that is causing problems you could set
remote.<name>.skipFetchAll so that git maintenance does not try and
fetch from it. I've Cc'd Stolee to see if he has any better ideas for
fixing this.
Thanks
Phillip
> On 05/05/2026 11:59, Phillip Wood wrote:
>> Hi Anselm
>>
>> On 30/04/2026 00:13, Anselm Schüler wrote:
>>> I have a repo with multiple remotes, one of which no longer exists.
>>> When git-maintenance runs on it, it fails during the prefetch stage
>>> because that remote doesn’t exist anymore, and gives a mostly
>>> unhelpful error message:
>>>
>>> $ git maintenance run --schedule=daily
>>> ERROR: Repository not found.
>>> fatal: Could not read from remote repository.
>>>
>>> Please make sure you have the correct access rights
>>> and the repository exists.
>>> error: failed to prefetch remotes
>>> error: task 'prefetch' failed
>>>
>>> I think that
>>> 1. git-maintenance should report which remote it’s encountering an
>>> error on
>>> 2. git-maintenance should continue fetching other remotes even if one
>>> fails
>>
>> Since c75662bfc9 (maintenance: running maintenance should not stop on
>> errors, 2024-04-24) which is in git 2.45.3 the systemd timer files
>> installed by "git maintenance start" use "git for-each-repo --keep-
>> going --config=..." to avoid this problem. Unfortunately we don't have
>> a way to automatically upgrade the timer files for users who ran "git
>> maintenance start" before that. I think if you run
>>
>> git maintenance stop
>> git maintenance start
>>
>> It will delete the old timer files and install the new ones. If that
>> does not work you'll need to manually edit the files and add "--keep-
>> going" to "git for-each-repo".
>>
>> Thanks
>>
>> Phillip
>>
>>> Now, on my system, the systemd timers for git-maintenance use git-
>>> for- each-repo. Not sure if that’s upstream behaviour or something
>>> Nix/home- manager does. But if it is upstream behaviour, it would
>>> also be great to report the repo the error comes from, since I
>>> basically had to guess right now which repo was erroring. Luckily I
>>> have only three repos under maintenance so that was fine.
>>>
>>> Let me know if you agree that this should be done. I would be open to
>>> writing a patch (no promises though)
>>>
>>> Anselm
>>>
>>>
>>
>
prev parent reply other threads:[~2026-05-06 14:06 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-29 23:13 Git maintenance fails without meaningful error message if any remote is no longer available Anselm Schüler
2026-05-05 9:59 ` Phillip Wood
2026-05-05 10:05 ` Anselm Schüler
2026-05-06 14:06 ` Phillip Wood [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40361c53-36f6-4769-a721-88de5fcf3910@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=git@vger.kernel.org \
--cc=mail@anselmschueler.com \
--cc=phillip.wood@dunelm.org.uk \
--cc=stolee@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox