1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-06-10 02:56:17 +02:00

subtree: process 'git-subtree-split' trailer in separate function

Both functions 'find_latest_squash' (called by 'git subtree merge
--squash' and 'git subtree split --rejoin') and 'find_existing_splits'
(called by git 'subtree split') loop through commits that have a
'git-subtree-dir' trailer, and then process the 'git-subtree-mainline'
and 'git-subtree-split' trailers for those commits.

The processing done for the 'git-subtree-split' trailer is simple: we
check if the object exists with 'rev-parse' and set the variable
'sub' to the object name, or we die if the object does not exist.

In a future commit we will add more steps to the processing of this
trailer in order to make the code more robust.

To reduce code duplication, move the processing of the
'git-subtree-split' trailer to a dedicated function,
'process_subtree_split_trailer'.

Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Philippe Blain 2022-10-21 15:13:37 +00:00 committed by Junio C Hamano
parent 7990142eb1
commit f10d31cf2d

View File

@ -371,6 +371,15 @@ try_remove_previous () {
fi
}
# Usage: process_subtree_split_trailer SPLIT_HASH MAIN_HASH
process_subtree_split_trailer () {
assert test $# = 2
b="$1"
sq="$2"
sub="$(git rev-parse --verify --quiet "$b^{commit}")" ||
die "fatal: could not rev-parse split hash $b from commit $sq"
}
# Usage: find_latest_squash DIR
find_latest_squash () {
assert test $# = 1
@ -395,8 +404,7 @@ find_latest_squash () {
main="$b"
;;
git-subtree-split:)
sub="$(git rev-parse --verify --quiet "$b^{commit}")" ||
die "fatal: could not rev-parse split hash $b from commit $sq"
process_subtree_split_trailer "$b" "$sq"
;;
END)
if test -n "$sub"
@ -447,8 +455,7 @@ find_existing_splits () {
main="$b"
;;
git-subtree-split:)
sub="$(git rev-parse --verify --quiet "$b^{commit}")" ||
die "fatal: could not rev-parse split hash $b from commit $sq"
process_subtree_split_trailer "$b" "$sq"
;;
END)
debug "Main is: '$main'"