From e5e245f12295c10ecf81719101f3423e1ba559b1 Mon Sep 17 00:00:00 2001 From: Chris Reynolds Date: Tue, 6 Aug 2024 14:31:27 -0600 Subject: [PATCH] apply merge conflict handling to decoupled workflow (#154) this can/should probably be abstracted out with a common file and the differences passed via parameters --- devops/scripts/deploy-decoupled-upstream.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/devops/scripts/deploy-decoupled-upstream.sh b/devops/scripts/deploy-decoupled-upstream.sh index a543611b..f2abc2f2 100755 --- a/devops/scripts/deploy-decoupled-upstream.sh +++ b/devops/scripts/deploy-decoupled-upstream.sh @@ -94,11 +94,25 @@ for commit in "${commits[@]}"; do fi echo "Adding $commit:" git --no-pager log --format=%B -n 1 "$commit" - git cherry-pick -rn -X theirs "$commit" 2>&1 + if ! git cherry-pick -rn -X theirs -m 1 "$commit"; then + echo "Conflict detected in $commit. Checking for deleted files." + conflicted_files=$(git diff --name-only --diff-filter=U) + for file in $conflicted_files; do + if ! git ls-tree -r "$commit" --name-only | grep -q "^$file$"; then + echo "File $file was deleted in the cherry-picked commit. Resolving by keeping the deletion." + git rm "$file" + else + echo "Conflict required manual resolution for $file." + fi + done + + # Stage the changes and continue the cherry-pick + git add -u + git commit --no-edit || echo "No changes to commit. Continuing." + fi # Product request - single commit per release # The commit message from the last commit will be used. git log --format=%B -n 1 "$commit" > /tmp/commit_message - # git commit --amend --no-edit --author='Pantheon Automation ' done echo "Executing decoupledpatch.sh"