From: Jeff Hostetler Date: Mon, 01 Mar 2021 19:21:04 GMT Subject: Re: Argument list too long when fetching many missing objects from partial clone Message-ID: In-Reply-To: On 3/1/21 8:18 AM, Bagas Sanjaya wrote: > Thank you for filling out a Git bug report! > Please answer the following questions to help us understand your issue. > > What did you do before the bug happened? (Steps to reproduce your issue) > > I'm poking around with partial clone. On my local server on my computer > I have full clone of Git (git.git) repo. > > I do partial clone from that server as remote (which is actually on the > same > computer): > >    git clone https://my-local-server.git/myself/git.git --filter=blob:none > > Inside the partial clone, I tried to convert it to full clone. First, I > gather > list of missing objects: > >    git rev-list --objects --all --missing=print | grep -oP '^\?\K\w+' > > .git/missing.list > > Then I fetched those: > >    git fetch origin $(cat .git/missing.list) > That command will build a very very long command line and cause the shell to complain. Instead, try passing the list of objects via stdin. $ cat .git/missing.list | git fetch --stdin origin > What did you expect to happen? (Expected behavior) > > All missing objects fetched successfully > > What happened instead? (Actual behavior) > > Git returned: > >     -bash: /opt/git/bin/git: Argument list too long > > What's different between what you expected and what actually happened? > > (nothing) > > Anything else you want to add: > > I think the problem lies on how to feed list of 110K+ objects to `git > fetch`. > > Note: Both the local server and the computer use Git 2.30.1 > > Please review the rest of the bug report below. > You can delete any lines you don't wish to share. > > [System Info] > git version: > git version 2.30.1 > cpu: x86_64 > built from commit: 773e25afc41b1b6533fa9ae2cd825d0b4a697fad > sizeof-long: 8 > sizeof-size_t: 8 > shell-path: /bin/sh > uname: Linux 5.10.11-kernelorg-upstream-generic #1 SMP Fri Jan 29 > 12:56:19 WIB 2021 x86_64 > compiler info: gnuc: 9.3 > libc info: glibc: 2.31 > $SHELL (typically, interactive shell): /bin/bash > > [Enabled Hooks] > (none) >