From fa651b91d52b70b6b438d079d39b410e1402ddd3 Mon Sep 17 00:00:00 2001 From: traxys Date: Thu, 1 Feb 2024 17:15:57 +0100 Subject: [PATCH] thinkpad-nixos: Allow to generate interdiff --- hostconfig/thinkpad-nixos/gpt | 38 ++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/hostconfig/thinkpad-nixos/gpt b/hostconfig/thinkpad-nixos/gpt index edf6576..ba4fe25 100755 --- a/hostconfig/thinkpad-nixos/gpt +++ b/hostconfig/thinkpad-nixos/gpt @@ -28,13 +28,16 @@ Options: -s/--send Send the patches directly + + -d/--diff + Perform the interdiff with the supplied version EOF } ARGS=$( getopt \ - --options 'hb:c:C:v:s' \ - --longoptions 'help,branch:,ci:,component:,no-ci,version,force,send' \ + --options 'hb:c:C:v:sd:' \ + --longoptions 'help,branch:,ci:,component:,no-ci,version,force,send,diff:' \ -- "${@}" ) || { printf "\nUsage: " @@ -46,6 +49,7 @@ eval "set -- ${ARGS}" unset branch unset component unset version +unset interdiff warn_ci=1 force=0 send=0 @@ -86,6 +90,10 @@ while true; do send=1 shift ;; + -d | --diff) + interdiff="$2" + shift 2 + ;; --) shift break @@ -139,7 +147,31 @@ if [[ -n $version ]]; then version_args+=(-v "$version") fi -git format-patch -o "$version_dir" "${version_args[@]}" --subject-prefix="PATCH $component" --cover-letter "$@" +if [[ -n $interdiff ]]; then + tmp_dir=$(mktemp -d) + git worktree add --detach "$tmp_dir" origin/master + + git -C "$tmp_dir" switch -c __patch_old + git -C "$tmp_dir" am "$branch_dir/$interdiff"/*.patch --empty=drop + + git format-patch \ + -o "$version_dir" \ + "${version_args[@]}" \ + --subject-prefix="PATCH $component" \ + --cover-letter \ + --interdiff=__patch_old \ + "$@" + + git worktree remove "$tmp_dir" + git branch -D __patch_old +else + git format-patch \ + -o "$version_dir" \ + "${version_args[@]}" \ + --subject-prefix="PATCH $component" \ + --cover-letter \ + "$@" +fi sed -i "s|\*\*\* BLURB HERE \*\*\*|Branch: $branch\nCI: $ci_link\n\*\*\* BLURB HERE\*\*\*|" "$version_dir"/*cover-letter.patch