diff --git a/Tools/Scripts/libraries/webkitcorepy/setup.py b/Tools/Scripts/libraries/webkitcorepy/setup.py
index 90d227d..6fdb639 100644
--- a/Tools/Scripts/libraries/webkitcorepy/setup.py
+++ b/Tools/Scripts/libraries/webkitcorepy/setup.py
@@ -30,7 +30,7 @@
 
 setup(
     name='webkitcorepy',
-    version='0.13.9',
+    version='0.13.10',
     description='Library containing various Python support classes and functions.',
     long_description=readme(),
     classifiers=[
diff --git a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py b/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py
index 7d1c611..2ebd95e 100644
--- a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py
+++ b/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py
@@ -44,7 +44,7 @@
 from webkitcorepy.editor import Editor
 from webkitcorepy.file_lock import FileLock
 
-version = Version(0, 13, 9)
+version = Version(0, 13, 10)
 
 from webkitcorepy.autoinstall import Package, AutoInstall
 if sys.version_info > (3, 0):
diff --git a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/arguments.py b/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/arguments.py
index aeca845..63da67d 100644
--- a/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/arguments.py
+++ b/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/arguments.py
@@ -31,7 +31,7 @@
         super(NoAction, self).__init__(option_strings, dest, nargs=0, **kwargs)
 
     def __call__(self, parser, namespace, values, option_string=None):
-        setattr(namespace, self.dest, False if option_string.startswith('--no') else True)
+        setattr(namespace, self.dest, False if option_string.startswith('--no') or option_string.startswith('--un') else True)
 
 
 def CountAction(value=1):
diff --git a/Tools/Scripts/libraries/webkitscmpy/setup.py b/Tools/Scripts/libraries/webkitscmpy/setup.py
index 1c730cd..e7257e4 100644
--- a/Tools/Scripts/libraries/webkitscmpy/setup.py
+++ b/Tools/Scripts/libraries/webkitscmpy/setup.py
@@ -29,7 +29,7 @@
 
 setup(
     name='webkitscmpy',
-    version='5.1.1',
+    version='5.2.0',
     description='Library designed to interact with git and svn repositories.',
     long_description=readme(),
     classifiers=[
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py
index 348e11d..d5db3ff 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py
@@ -46,7 +46,7 @@
         "Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
     )
 
-version = Version(5, 1, 1)
+version = Version(5, 2, 0)
 
 AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
 AutoInstall.register(Package('jinja2', Version(2, 11, 3)))
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/land.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/land.py
index 378ddb5..a64363b 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/land.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/land.py
@@ -57,6 +57,7 @@
 
     @classmethod
     def parser(cls, parser, loggers=None):
+        PullRequest.parser(parser, loggers=loggers)
         parser.add_argument(
             '--no-force-review', '--force-review', '--no-review',
             dest='review', default=True,
@@ -70,8 +71,48 @@
             action=arguments.NoAction,
         )
         parser.add_argument(
-            '--defaults', '--no-defaults', action=arguments.NoAction, default=None,
-            help='Do not prompt the user for defaults, always use (or do not use) them',
+            '--safe', '--unsafe',
+            dest='safe', default=None,
+            help='Land change via safe (or unsafe) merge queue, if available.',
+            action=arguments.NoAction,
+        )
+
+    @classmethod
+    def merge_queue(cls, args, repository, branch_point, merge_labels=None):
+        log.info('Detected merging automation, using that instead of local git tooling')
+        merge_type = {
+            True: 'safe',
+            False: 'unsafe',
+        }.get(args.safe, sorted(merge_labels.keys())[0])
+        merge_label = merge_labels.get(merge_type)
+        if not merge_label:
+            sys.stderr.write("No {} merge-queue available for this repository\n".format(merge_type))
+            return 1
+
+        def callback(pr):
+            pr_issue = pr._metadata.get('issue')
+            if not pr_issue:
+                sys.stderr.write("Cannot set any labels on '{}' because the service doesn't support labels\n".format(pr))
+                return 1
+
+            labels = pr_issue.labels
+            if PullRequest.BLOCKED_LABEL in labels and merge_type == 'unsafe':
+                log.info("Removing '{}' from PR {}...".format(cls.BLOCKED_LABEL, existing_pr.number))
+                labels.remove(PullRequest.BLOCKED_LABEL)
+            log.info("Adding '{}' to '{}'".format(merge_label, pr))
+            labels.append(merge_label)
+            if pr_issue.set_labels(labels):
+                print("Added '{}' to '{}', change is in the queue to be landed".format(merge_label, pr))
+                return 0
+            sys.stderr.write("Failed to add '{}' to '{}', change is not landing\n".format(merge_label, pr))
+            if pr.url:
+                sys.stderr.write("See if you can add the label manually on '{}'".format(pr.url))
+            return 1
+
+        return PullRequest.create_pull_request(
+            repository, args, branch_point,
+            callback=callback,
+            unblock=True if merge_type == 'unsafe' else False,
         )
 
     @classmethod
@@ -92,18 +133,55 @@
             sys.stderr.write("Cannot 'land' on a canonical SVN repository that is not configured as git-svn\n")
             return 1
 
+        if not PullRequest.check_pull_request_args(repository, args):
+            return 1
+
+        modified_files = [] if args.will_add is False else repository.modified()
+        if args.will_add:
+            modified_files = list(set(modified_files).union(set(repository.modified(staged=False))))
+        if not Branch.editable(repository.branch, repository=repository) and not modified_files:
+            sys.stderr.write("Can only 'land' editable branches\n")
+            return 1
+
+        branch_point = PullRequest.pull_request_branch_point(repository, args, **kwargs)
+        if not branch_point:
+            return 1
         source_branch = repository.branch
         if not Branch.editable(source_branch, repository=repository):
             sys.stderr.write("Can only 'land' editable branches\n")
             return 1
-        branch_point = Branch.branch_point(repository)
+
+        result = PullRequest.create_commit(args, repository, **kwargs)
+        if result:
+            return result
+
         commits = list(repository.commits(begin=dict(hash=branch_point.hash), end=dict(branch=source_branch)))
         if not commits:
             sys.stderr.write('Failed to find commits to land\n')
             return 1
 
-        pull_request = None
+        if args.squash or (args.squash is None and len(commits) > 1):
+            result = Squash.squash_commit(args, repository, branch_point, **kwargs)
+            if result:
+                return result
+            commits = list(repository.commits(begin=dict(hash=branch_point.hash), end=dict(branch=source_branch)))
+
         rmt = repository.remote()
+        if rmt and isinstance(rmt, remote.GitHub):
+            merge_labels = dict()
+            for name in rmt.tracker.labels.keys():
+                if name in PullRequest.MERGE_LABELS:
+                    merge_labels['safe'] = name
+                if name in PullRequest.UNSAFE_MERGE_LABELS:
+                    merge_labels['unsafe'] = name
+            if merge_labels:
+                return cls.merge_queue(args, repository, branch_point, merge_labels=merge_labels)
+
+        if args.safe is not None:
+            sys.stderr.write("No merge-queue available for this repository\n")
+            return 1
+
+        pull_request = None
         if rmt and rmt.pull_requests:
             candidates = list(rmt.pull_requests.find(opened=True, head=source_branch))
             if len(candidates) == 1:
@@ -148,7 +226,7 @@
         elif not pull_request:
             sys.stderr.write("Failed to find pull-request associated with '{}'\n".format(source_branch))
 
-        if not args.oops and any([cls.OOPS_RE.search(commit.message) for commit in commits]):
+        if not args.oops and any([cls.OOPS_RE.search(commit.message) for commit in commits if commit.message]):
             sys.stderr.write("Found '(OOPS!)' message in commit messages, please resolve before committing\n")
             return 1
 
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py
index cf04d27..b19bf8b 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pull_request.py
@@ -38,6 +38,8 @@
     aliases = ['pr', 'pfr', 'upload']
     help = 'Push the current checkout state as a pull-request'
     BLOCKED_LABEL = 'merging-blocked'
+    MERGE_LABELS = ['merge-queue']
+    UNSAFE_MERGE_LABELS = ['unsafe-merge-queue']
 
     @classmethod
     def parser(cls, parser, loggers=None):
@@ -56,10 +58,10 @@
             action=arguments.NoAction,
         )
         parser.add_argument(
-            '--squash',
-            dest='squash', default=False,
-            action='store_true',
+            '--squash', '--no-squash',
+            dest='squash', default=None,
             help='Combine all commits on the current development branch into a single commit before pushing',
+            action=arguments.NoAction,
         )
         parser.add_argument(
             '--defaults', '--no-defaults', action=arguments.NoAction, default=None,
@@ -260,7 +262,7 @@
         return 0
 
     @classmethod
-    def create_pull_request(cls, repository, args, branch_point):
+    def create_pull_request(cls, repository, args, branch_point, callback=None, unblock=True):
         # FIXME: We can do better by inferring the remote from the branch point, if it's not specified
         source_remote = args.remote or 'origin'
         if not repository.config().get('remote.{}.url'.format(source_remote)):
@@ -279,8 +281,6 @@
                 return 1
             log.info("Rebased '{}' on '{}!'".format(repository.branch, branch_point.branch))
             branch_point = Branch.branch_point(repository)
-        else:
-            branch_point = Branch.branch_point(repository)
 
         if args.checks is None:
             args.checks = repository.config().get('webkitscmpy.auto-check', 'false') == 'true'
@@ -303,15 +303,19 @@
             ) == 'Yes'):
                 existing_pr = None
 
-        # Remove "merging-blocked" label
+        # Remove any active labels
         if existing_pr and existing_pr._metadata and existing_pr._metadata.get('issue'):
-            log.info("Checking PR labels for '{}'...".format(cls.BLOCKED_LABEL))
+            log.info("Checking PR labels for active labels...")
             pr_issue = existing_pr._metadata['issue']
             labels = pr_issue.labels
-            if cls.BLOCKED_LABEL in labels:
-                log.info("Removing '{}' from PR {}...".format(cls.BLOCKED_LABEL, existing_pr.number))
-                labels.remove(cls.BLOCKED_LABEL)
-                pr_issue.set_labels([])
+            did_remove = False
+            for to_remove in cls.MERGE_LABELS + cls.UNSAFE_MERGE_LABELS + ([cls.BLOCKED_LABEL] if unblock else []):
+                if to_remove in labels:
+                    log.info("Removing '{}' from PR {}...".format(to_remove, existing_pr.number))
+                    labels.remove(to_remove)
+                    did_remove = True
+            if did_remove:
+                pr_issue.set_labels(labels)
 
         if isinstance(remote_repo, remote.GitHub):
             target = 'fork' if source_remote == 'origin' else '{}-fork'.format(source_remote)
@@ -429,6 +433,8 @@
         if pr.url:
             print(pr.url)
 
+        if callback:
+            return callback(pr)
         return 0
 
     @classmethod
@@ -443,10 +449,11 @@
         if not branch_point:
             return 1
 
+        result = cls.create_commit(args, repository, **kwargs)
+        if result:
+            return result
         if args.squash:
             result = Squash.squash_commit(args, repository, branch_point, **kwargs)
-        else:
-            result = cls.create_commit(args, repository, **kwargs)
             if result:
                 return result
 
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/land_unittest.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/land_unittest.py
index f7fe934..444d1cf 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/land_unittest.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/land_unittest.py
@@ -31,9 +31,9 @@
 from webkitscmpy import Contributor, Commit, local, program, mocks
 
 
-def repository(path, has_oops=True, remote=None, git_svn=False, issue_url=None):
+def repository(path, has_oops=True, remote=None, remotes=None, git_svn=False, issue_url=None):
     branch = 'eng/example'
-    result = mocks.local.Git(path, remote=remote, git_svn=git_svn)
+    result = mocks.local.Git(path, remote=remote, remotes=remotes, git_svn=git_svn)
     result.commits[branch] = [
         result.commits[result.default_branch][2],
         Commit(
@@ -101,6 +101,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...'
             ],
         )
         self.assertEqual(
@@ -122,6 +123,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
             ],
@@ -157,6 +159,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
                 '1 commit to be edited...',
@@ -202,6 +205,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
                 '    Verifying mirror processesed change',
@@ -237,6 +241,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
             ],
@@ -286,6 +291,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
                 '1 commit to be edited...',
@@ -332,6 +338,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
                 '    Verifying mirror processesed change',
@@ -347,6 +354,7 @@
             "Delete branch 'eng/example'? ([Yes]/No): \n",
         )
 
+
 class TestLandGitHub(testing.PathTestCase):
     basepath = 'mock/repository'
 
@@ -356,8 +364,8 @@
         os.mkdir(os.path.join(self.path, '.svn'))
 
     @classmethod
-    def webserver(cls, approved=None):
-        result = mocks.remote.GitHub()
+    def webserver(cls, approved=None, labels=None):
+        result = mocks.remote.GitHub(labels=labels)
         result.users.create('Ricky Reviewer', 'rreviewer', ['rreviewer@webkit.org'])
         result.users.create('Tim Contributor', 'tcontributor', ['tcontributor@webkit.org'])
         result.issues = {
@@ -411,6 +419,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
             ],
         )
         self.assertEqual(
@@ -433,6 +442,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
             ],
         )
         self.assertEqual(
@@ -442,7 +452,8 @@
         self.assertEqual(captured.stdout.getvalue(), '')
 
     def test_insert_review(self):
-        with OutputCapture(level=logging.INFO) as captured, MockTerminal.input('y', 'n'), self.webserver(approved=True) as remote, \
+        with OutputCapture(level=logging.INFO) as captured, MockTerminal.input('y', 'n'), self.webserver(
+                approved=True) as remote, \
                 repository(self.path, has_oops=True, remote='https://{}'.format(remote.remote)), mocks.local.Svn():
             self.assertEqual(0, program.main(
                 args=('land', '-v'),
@@ -460,6 +471,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 'Setting Ricky Reviewer as reviewer',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
@@ -474,6 +486,46 @@
             "Delete branch 'eng/example'? ([Yes]/No): \n",
         )
 
+    def test_merge_queue(self):
+        with OutputCapture(level=logging.INFO) as captured, MockTerminal.input('y', 'n'), self.webserver(
+            approved=True, labels={'merge-queue': dict(color='3AE653', description="Send PR to merge-queue")},
+        ) as remote, mocks.local.Svn(), repository(
+            self.path, has_oops=True,
+            remote='https://{}'.format(remote.remote),
+            remotes=dict(fork='https://{}/Contributor/WebKit'.format(remote.hosts[0])),
+        ):
+            self.assertEqual(0, program.main(
+                args=('land', '-v'),
+                path=self.path,
+            ))
+
+        log = captured.root.log.getvalue().splitlines()
+        self.assertEqual(
+            [line for line in log if 'Mock process' not in line], [
+                '    Found 1 commit...',
+                'Using committed changes...',
+                'Detected merging automation, using that instead of local git tooling',
+                "Rebasing 'eng/example' on 'main'...",
+                "Rebased 'eng/example' on 'main!'",
+                '    Found 1 commit...',
+                'Running pre-PR checks...',
+                'No pre-PR checks to run',
+                'Checking PR labels for active labels...',
+                "Pushing 'eng/example' to 'fork'...",
+                "Syncing 'main' to remote 'fork'",
+                "Creating 'eng/example-1' as a reference branch",
+                "Updating pull-request for 'eng/example'...",
+                "Adding 'merge-queue' to 'PR 1 | To Be Committed'",
+            ],
+        )
+        self.assertEqual(captured.stderr.getvalue(), '')
+        self.assertEqual(
+            captured.stdout.getvalue(),
+            "Updated 'PR 1 | To Be Committed'!\n"
+            "https://github.example.com/WebKit/WebKit/pull/1\n"
+            "Added 'merge-queue' to 'PR 1 | To Be Committed', change is in the queue to be landed\n",
+        )
+
 
 class TestLandBitBucket(testing.PathTestCase):
     basepath = 'mock/repository'
@@ -536,6 +588,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
             ],
         )
         self.assertEqual(
@@ -560,6 +613,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
             ],
         )
         self.assertEqual(
@@ -589,6 +643,7 @@
         self.assertEqual(
             [line for line in log if 'Mock process' not in line], [
                 '    Found 1 commit...',
+                'Using committed changes...',
                 'Setting Ricky Reviewer as reviewer',
                 "Rebasing 'eng/example' from 'main' to 'main'...",
                 "Rebased 'eng/example' from 'main' to 'main'!",
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py
index e9cf42cb..3957108 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pull_request_unittest.py
@@ -76,7 +76,6 @@
         self.assertEqual(commits[0].message, '[scoping] Bug to fix\n\nReviewed by Tim Contributor.')
 
     def test_create_body_multiple_linked(self):
-        self.maxDiff = None
         self.assertEqual(
             PullRequest.create_body(None, [Commit(
                 hash='11aa76f9fc380e9fe06157154f32b304e8dc4749',
@@ -460,7 +459,7 @@
                 "    Found 1 commit...",
                 'Running pre-PR checks...',
                 'No pre-PR checks to run',
-                "Checking PR labels for 'merging-blocked'...",
+                'Checking PR labels for active labels...',
                 "Removing 'merging-blocked' from PR 1...",
                 "Pushing 'eng/pr-branch' to 'fork'...",
                 "Syncing 'main' to remote 'fork'",
@@ -504,7 +503,7 @@
                 '    Found 2 commits...',
                 'Running pre-PR checks...',
                 'No pre-PR checks to run',
-                "Checking PR labels for 'merging-blocked'...",
+                'Checking PR labels for active labels...',
                 "Pushing 'eng/pr-branch' to 'fork'...",
                 "Syncing 'main' to remote 'fork'",
                 "Updating pull-request for 'eng/pr-branch'...",
@@ -553,7 +552,7 @@
                 "    Found 1 commit...",
                 'Running pre-PR checks...',
                 'No pre-PR checks to run',
-                "Checking PR labels for 'merging-blocked'...",
+                'Checking PR labels for active labels...',
                 "Pushing 'eng/pr-branch' to 'fork'...",
                 "Syncing 'main' to remote 'fork'",
                 "Updating pull-request for 'eng/pr-branch'...",
@@ -628,7 +627,6 @@
         )
 
     def test_github_branch_bugzilla(self):
-        self.maxDiff = None
         with OutputCapture(level=logging.INFO) as captured, mocks.remote.GitHub(
                 projects=bmocks.PROJECTS) as remote, bmocks.Bugzilla(
                 self.BUGZILLA.split('://')[-1],
@@ -687,7 +685,6 @@
         )
 
     def test_github_branch_bugzilla_redacted(self):
-        self.maxDiff = None
         with OutputCapture(level=logging.INFO) as captured, mocks.remote.GitHub(projects=bmocks.PROJECTS) as remote, bmocks.Bugzilla(
             self.BUGZILLA.split('://')[-1],
             projects=bmocks.PROJECTS, issues=bmocks.ISSUES,
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/revert_unittest.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/revert_unittest.py
index c11ed9c..2a518e6 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/revert_unittest.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/revert_unittest.py
@@ -198,7 +198,7 @@
                 '    Found 1 commit...',
                 'Running pre-PR checks...',
                 'No pre-PR checks to run',
-                "Checking PR labels for 'merging-blocked'...",
+                'Checking PR labels for active labels...',
                 "Pushing 'eng/pr-branch' to 'fork'...",
                 "Syncing 'main' to remote 'fork'",
                 "Updating pull-request for 'eng/pr-branch'..."
diff --git a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/squash_unittest.py b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/squash_unittest.py
index 7538fee..0d639d7 100644
--- a/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/squash_unittest.py
+++ b/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/squash_unittest.py
@@ -73,6 +73,7 @@
                 '    Found 1 commit...',
                 '    Found 2 commits...',
                 '    Found 3 commits...',
+                'Using committed changes...',
                 '    Squashed 3 commits',
                 "Rebasing 'eng/squash-branch' on 'main'...",
                 "Rebased 'eng/squash-branch' on 'main!'",
@@ -119,6 +120,7 @@
                 '    Found 1 commit...',
                 '    Found 2 commits...',
                 '    Found 3 commits...',
+                'Using committed changes...',
                 '    Squashed 3 commits',
                 "Rebasing 'eng/squash-branch' on 'main'...",
                 "Rebased 'eng/squash-branch' on 'main!'",
