From: Colin Stagner Date: Thu, 05 Mar 2026 23:55:46 GMT Subject: [PATCH v2 0/3] contrib/subtree: reduce recursion during split 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 && recurse Depending 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 split contrib/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