[PATCH v2 0/3] contrib/subtree: reduce recursion during split
- From
- Colin Stagner <ask+git@howdoi.land>
- Date
- Mar 5, 2026, 23:55 UTC
- Message-ID
- <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>
- In-Reply-To
- <20260215201748.889866-1-ask+git@howdoi.land>
* cs/subtree-split-recursion: when processing large history graphs on Debian or Ubuntu, "git subtree" can die with a "recursion depth reached" error. Reduce recursion.
On Debian's POSIX sh, shell recursion is artificially limited to 1000 calls. You can check if your sh has limited recursion with:
#!/bin/sh
recurse() {
r=$(( r + 1 ))
test "$r" -le 1000 || { echo OK; exit; }
recurse
} && r=0 && recurseDepending on the history graph, subtree split can recurse deeply enough to encounter this limit. Rewrite the rejoin-deepening algorithm to reduce recursive calls.
--- Changes in v2: - Rebase on master
---
Colin Stagner (3):
contrib/subtree: reduce function side-effects
contrib/subtree: functionalize split traversal
contrib/subtree: reduce recursion during splitcontrib/subtree/git-subtree.sh | 95 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 88 insertions(+), 7 deletions(-) --- base-commit: 628a66ccf68d141d57d06e100c3514a54b31d6b7 change-id: 20260304-cs-subtree-split-recursion-6a7083cf9163
Best regards, -- Colin Stagner <ask+git@howdoi.land>