From 66df0a03916e6e934450e9070e8b13891ec7c66c Mon Sep 17 00:00:00 2001 From: Nev Wylie <54870357+MSNev@users.noreply.github.com> Date: Fri, 30 Jun 2023 13:13:59 -0700 Subject: [PATCH] fix: Fixup repo merging with a submodule (./protos) --- .../src/git/resolveConflictsToTheirs.ts | 17 +++++++++++++---- .../merge-repos/src/support/mergeFixup.ts | 19 +++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/sandbox-tools/merge-repos/src/git/resolveConflictsToTheirs.ts b/sandbox-tools/merge-repos/src/git/resolveConflictsToTheirs.ts index 0b15d86e0..46554d551 100644 --- a/sandbox-tools/merge-repos/src/git/resolveConflictsToTheirs.ts +++ b/sandbox-tools/merge-repos/src/git/resolveConflictsToTheirs.ts @@ -131,10 +131,19 @@ function getFileStatus(status: StatusResult, name: string): FileStatusResult { conflicted ]); - await git.raw([ - "add", - "-f", - conflicted]); + try { + await git.raw([ + "add", + "-f", + conflicted]); + } catch (e) { + if (!conflicted.endsWith("/protos")) { + throw e; + } else { + log(` - !! Ignoring git add for known submodule folder - ${conflicted}`); + await git.rm(conflicted); + } + } } else { commitMessage = logAppendMessage(gitRoot, commitMessage, fileStatus, `Removed from ${fileStatus.working_dir === "D" ? "both" : "theirs"}`); await git.rm(conflicted); diff --git a/sandbox-tools/merge-repos/src/support/mergeFixup.ts b/sandbox-tools/merge-repos/src/support/mergeFixup.ts index 372ba0d3c..1b14ed60e 100644 --- a/sandbox-tools/merge-repos/src/support/mergeFixup.ts +++ b/sandbox-tools/merge-repos/src/support/mergeFixup.ts @@ -127,14 +127,17 @@ export async function checkFixBadMerges( let destStats = fs.statSync(destFolder + "/" + destFile); if (destStats.isDirectory()) { commitDetails.message = logAppendMessage(mergeGitRoot, commitDetails.message, { index: "*", working_dir: "F", path: destFolder + "/" + destFile } , `Removing extra folder ${destFile}`); - await git.raw([ - "rm", - "-f", - "-r", - destFolder + "/" + destFile]); - // fs.rmdirSync(destFolder + "/" + destFile, { - // recursive: true - // }); + try { + await git.raw([ + "rm", + "-f", + "-r", + destFolder + "/" + destFile]); + } catch (e) { + fs.rmdirSync(destFolder + "/" + destFile, { + recursive: true + }); + } } else { commitDetails.message = logAppendMessage(mergeGitRoot, commitDetails.message, { index: "*", working_dir: "E", path: destFolder + "/" + destFile } , "Removing extra file"); await git.rm(destFolder + "/" + destFile);