Skip to content

Commit 3ce8888

Browse files
jamesl-dmgitster
authored andcommitted
subtree: fix argument handling in check_parents
315a84f (subtree: use commits before rejoins for splits, 2018-09-28) changed the signature of check_parents from 'check_parents [REV...]' to 'check_parents PARENTS_EXPR INDENT'. In other words the variable list of parent revisions became a list embedded in a string. However it neglected to unpack the list again before sending it to cache_miss, leading to incorrect calls whenever more than one parent was present. This is the case whenever a merge commit is processed, with the end result being a loss of performance from unecessary rechecks. The indent parameter was subsequently removed in e9525a8 (subtree: have $indent actually affect indentation, 2021-04-27), but the argument handling bug remained. For consistency, take multiple arguments in check_parents, and pass all of them to cache_miss separately. Signed-off-by: James Limbouris <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e9d7761 commit 3ce8888

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

contrib/subtree/git-subtree.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,10 +296,9 @@ cache_miss () {
296296
done
297297
}
298298

299-
# Usage: check_parents PARENTS_EXPR
299+
# Usage: check_parents [REVS...]
300300
check_parents () {
301-
assert test $# = 1
302-
missed=$(cache_miss "$1") || exit $?
301+
missed=$(cache_miss "$@") || exit $?
303302
local indent=$(($indent + 1))
304303
for miss in $missed
305304
do
@@ -753,7 +752,7 @@ process_split_commit () {
753752
fi
754753
createcount=$(($createcount + 1))
755754
debug "parents: $parents"
756-
check_parents "$parents"
755+
check_parents $parents
757756
newparents=$(cache_get $parents) || exit $?
758757
debug "newparents: $newparents"
759758

0 commit comments

Comments
 (0)