aboutsummaryrefslogtreecommitdiffstats
diff options
authorCarlos Maiolino <cem@kernel.org>2023-11-20 15:39:30 +0100
committerCarlos Maiolino <cem@kernel.org>2024-09-10 16:17:25 +0200
commit8722b157a14016addf6e455cc7ff58ef42119a72 (patch)
tree3a42aa0879e3895f91d579b4cbf8c371701bd4f8
parenta48445cb16d64d1d3e4403d1a511796ff41a120a (diff)
downloadxfsprogs-dev-for-next.tar.gz
libxfs-apply: Add option to only import patches into guilt stackfor-next
The script automatically detects the existence of a guilt stack, but only conflict resolution mechanisms so far are either skip the patch or fail the process. It's easier to fix conflicts if all the patches are stacked in guilt, so add an option to stack all the patches into guilt, without applying them, for post-processing and conflict resolution in case automatic import fails. stgit doesn't seem to have a way to import patches into its stack, so, there is no similar patch aiming stgit. The order of commits added to $commit_list also needs to be reversed when only importing patches to the guilt stack. Signed-off-by: Carlos Maiolino <cem@kernel.org>
-rwxr-xr-xtools/libxfs-apply22
1 files changed, 20 insertions, 2 deletions
diff --git a/tools/libxfs-apply b/tools/libxfs-apply
index aa2530f4d3..2b65684ec2 100755
--- a/tools/libxfs-apply
+++ b/tools/libxfs-apply
@@ -9,7 +9,7 @@ usage()
echo $*
echo
echo "Usage:"
- echo " libxfs-apply [--verbose] --sob <name/email> --source <repodir> --commit <commit_id>"
+ echo " libxfs-apply [--import-only] [--verbose] --sob <name/email> --source <repodir> --commit <commit_id>"
echo " libxfs-apply --patch <patchfile>"
echo
echo "libxfs-apply should be run in the destination git repository."
@@ -67,6 +67,7 @@ REPO=
PATCH=
COMMIT_ID=
VERBOSE=
+IMPORT_ONLY=
GUILT=0
STGIT=0
@@ -76,6 +77,7 @@ while [ $# -gt 0 ]; do
--patch) PATCH=$2; shift ;;
--commit) COMMIT_ID=$2 ; shift ;;
--sob) SIGNED_OFF_BY=$2 ; shift ;;
+ --import-only) IMPORT_ONLY=true ;;
--verbose) VERBOSE=true ;;
*) usage ;;
esac
@@ -99,6 +101,10 @@ if [ $? -eq 0 ]; then
GUILT=1
fi
+if [ -n $IMPORT_ONLY -a $GUILT -ne 1 ]; then
+ usage "--import_only can only be used with a guilt stack"
+fi
+
# Are we using stgit? This works even if no patch is applied.
stg top &> /dev/null
if [ $? -eq 0 ]; then
@@ -359,6 +365,11 @@ apply_patch()
fi
guilt import -P $_patch_name $_new_patch.2
+
+ if [ -n "$IMPORT_ONLY" ]; then
+ return;
+ fi
+
guilt push
if [ $? -eq 0 ]; then
guilt refresh
@@ -443,10 +454,17 @@ else
hashr="$hashr -- libxfs"
fi
+# When using --import-only, the commit list should be in reverse order.
+if [ "$GUILT" -eq 1 -a -n "$IMPORT_ONLY" ]; then
+ commit_list=`git rev-list --no-merges $hashr`
+else
+ commit_list=`git rev-list --no-merges $hashr | tac`
+fi
+
# grab and echo the list of commits for confirmation
echo "Commits to apply:"
-commit_list=`git rev-list --no-merges $hashr | tac`
git log --oneline --no-merges $hashr |tac
+
read -r -p "Proceed [y|N]? " response
if [ -z "$response" -o "$response" != "y" ]; then
fail "Aborted!"