Git development
 help / color / mirror / Atom feed
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
>>>
>>>
>>
> 


      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