[ resending bug report from git-users since there weren't any responses ]
So I'm trying to split out a directory from postgres source code
(which has 52k commits). I was able to split a directory into a
separate subtree (with 1685 commits). All good so far.
Now I do a pull from upstream and want to push the directory to my
subtree. The command fails with:
$ git subtree push --prefix=src/interfaces/libpq libpq master
/usr/lib/git-core/git-subtree: 647: Maximum function recursion depth
(1000) reached
As far as I can see, it seems to be a mutual recursion between
process_split_commit() and check_parents()
If this diagnosis is correct, are there any known workarounds? I've
tried increasing ulimit -s and FUNCNEST=10000, but it didn't fix the
problem.
Can this flow be coded without using recursion? Are there
implementations of git-subtree in another language which doesn't have
this problem?
-Arun
From: brian m. carlson <hidden> Date: 2021-03-13 17:04:01
On 2021-03-13 at 16:06:18, Arun Sharma wrote:
[ resending bug report from git-users since there weren't any responses ]
So I'm trying to split out a directory from postgres source code
(which has 52k commits). I was able to split a directory into a
separate subtree (with 1685 commits). All good so far.
Now I do a pull from upstream and want to push the directory to my
subtree. The command fails with:
$ git subtree push --prefix=src/interfaces/libpq libpq master
/usr/lib/git-core/git-subtree: 647: Maximum function recursion depth
(1000) reached
As far as I can see, it seems to be a mutual recursion between
process_split_commit() and check_parents()
If this diagnosis is correct, are there any known workarounds? I've
tried increasing ulimit -s and FUNCNEST=10000, but it didn't fix the
problem.
Can this flow be coded without using recursion? Are there
implementations of git-subtree in another language which doesn't have
this problem?
I don't use git-subtree, but there's some additional information which
would probably be helpful here to someone who does. What OS are you
using, what version of Git, and what shell is the shell you have as
/bin/sh (or, if you've compiled using a custom shell, the shell you're
using for that)?
--
brian m. carlson (he/him or they/them)
Houston, Texas, US
On Sat, Mar 13, 2021 at 9:03 AM brian m. carlson
[off-list ref] wrote:
I don't use git-subtree, but there's some additional information which
would probably be helpful here to someone who does. What OS are you
using, what version of Git, and what shell is the shell you have as
/bin/sh (or, if you've compiled using a custom shell, the shell you're
using for that)?
Thanks for the hint. I was using ubuntu 20.04.
$ git --version
git version 2.25.1
$ bash --version
GNU bash, version 5.0.16(1)-release (x86_64-pc-linux-gnu)
To repro, you can try to split a week old version of:
https://github.com/postgres/postgres (subtree: src/interfaces/libpq)
It could take several minutes because of the size of the repo.
And then try to pull the latest version and push the merged result
into the smaller subproject.
-Arun
From: Johannes Schindelin <hidden> Date: 2021-03-15 14:20:06
Hi,
On Sun, 14 Mar 2021, Arun Sharma wrote:
On Sat, Mar 13, 2021 at 9:03 AM brian m. carlson
[off-list ref] wrote:
quoted
I don't use git-subtree, but there's some additional information which
would probably be helpful here to someone who does. What OS are you
using, what version of Git, and what shell is the shell you have as
/bin/sh (or, if you've compiled using a custom shell, the shell you're
using for that)?
Thanks for the hint. I was using ubuntu 20.04.
$ git --version
git version 2.25.1
$ bash --version
GNU bash, version 5.0.16(1)-release (x86_64-pc-linux-gnu)
To repro, you can try to split a week old version of:
https://github.com/postgres/postgres (subtree: src/interfaces/libpq)
It could take several minutes because of the size of the repo.
And then try to pull the latest version and push the merged result
into the smaller subproject.
From: Colin Stagner <hidden> Date: 2026-03-14 21:36:59
Arun,
I found your git-subtree bug report from several years ago.
On 3/13/21 10:06, Arun Sharma wrote:
So I'm trying to split out a directory from postgres source code
(which has 52k commits).
$ git subtree push --prefix=src/interfaces/libpq libpq master
/usr/lib/git-core/git-subtree: 647: Maximum function recursion depth
(1000) reached
On 3/14/21 12:31, Arun Sharma wrote:
I was using ubuntu 20.04.
$ git --version
git version 2.25.1
$ bash --version
GNU bash, version 5.0.16(1)-release (x86_64-pc-linux-gnu)
To repro, you can try to split a week old version of:
https://github.com/postgres/postgres (subtree: src/interfaces/libpq)