On Fri, Oct 21 2022, Philippe Blain via GitGitGadget wrote: > From: Philippe Blain <levraiphilippeblain@xxxxxxxxx> > > The previous commit fixed a failure in 'git subtree merge --squash' when > the previous squash-merge merged an annotated tag of the subtree > repository which is missing locally. > > The same failure happens in 'git subtree split', either directly or when > called by 'git subtree push', under the same circumstances: 'cmd_split' > invokes 'find_existing_splits', which loops through previous commits and > invokes 'git rev-parse' (via 'process_subtree_split_trailer') on the > value of any 'git subtree-split' trailer it finds. This fails if this > value is the hash of an annotated tag which is missing locally. > > Add a new optional argument 'repository' to 'cmd_split' and > 'find_existing_splits', and invoke 'cmd_split' with that argument from > 'cmd_push'. This allows 'process_subtree_split_trailer' to try to fetch > the missing tag from the 'repository' if it's not available locally, > mirroring the new behaviour of 'git subtree pull' and 'git subtree > merge'. > > Signed-off-by: Philippe Blain <levraiphilippeblain@xxxxxxxxx> > --- > contrib/subtree/git-subtree.sh | 26 ++++++++++++++++++-------- > contrib/subtree/git-subtree.txt | 7 ++++++- > contrib/subtree/t/t7900-subtree.sh | 12 ++++++++++++ > 3 files changed, 36 insertions(+), 9 deletions(-) > > diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh > index 2c67989fe8a..10c9c87839a 100755 > --- a/contrib/subtree/git-subtree.sh > +++ b/contrib/subtree/git-subtree.sh > @@ -453,14 +453,19 @@ find_latest_squash () { > done || exit $? > } > > -# Usage: find_existing_splits DIR REV > +# Usage: find_existing_splits DIR REV [REPOSITORY] > find_existing_splits () { > - assert test $# = 2 > + assert test $# = 2 -o $# = 3 This "test" syntax is considered unportable, I'm too lazy to dig up the reference, but we've removed it in the past. Maybe it's OK with git-subtree.sh", but anyway, it's esay enough to change... ...but looking at "master" I see one instance of it in git-subtree.sh already, so maybe nobody cares...