mirror of
https://chromium.googlesource.com/chromium/tools/depot_tools.git
synced 2026-01-11 10:41:31 +00:00
Reland: add a --no-squash argument to git rebase-update
See crbug.com/40264739 for many more details. But a prior attempt to land this patch resulted in [1] which simply removed all squashing behavior from `git rebase-update`. That broke several people's workflows. So this patch attempts, again, to simply add an opt-in to *not* squashing, for the folks (like me) who do not want that behavior. [1] https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/6104282 Fixed: 40264739 Change-Id: I4a6aa8e53e854a7e601a0fb83f4f9fcb638d36ed Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/6254099 Reviewed-by: Mason Freed <masonf@chromium.org> Commit-Queue: Mason Freed <masonf@chromium.org> Reviewed-by: Josip Sokcevic <sokcevic@chromium.org> Auto-Submit: Mason Freed <masonf@chromium.org>
This commit is contained in:
@@ -140,7 +140,7 @@ def remove_empty_branches(branch_tree):
|
||||
print(git.run('branch', '-d', branch))
|
||||
|
||||
|
||||
def rebase_branch(branch, parent, start_hash):
|
||||
def rebase_branch(branch, parent, start_hash, no_squash):
|
||||
logging.debug('considering %s(%s) -> %s(%s) : %s', branch,
|
||||
git.hash_one(branch), parent, git.hash_one(parent),
|
||||
start_hash)
|
||||
@@ -161,7 +161,8 @@ def rebase_branch(branch, parent, start_hash):
|
||||
if git.hash_one(parent) != start_hash:
|
||||
# Try a plain rebase first
|
||||
print('Rebasing:', branch)
|
||||
consider_squashing = git.get_num_commits(branch) != 1
|
||||
consider_squashing = git.get_num_commits(branch) != 1 and not (
|
||||
no_squash)
|
||||
rebase_ret = git.rebase(parent,
|
||||
start_hash,
|
||||
branch,
|
||||
@@ -275,6 +276,11 @@ def main(args=None):
|
||||
'-e',
|
||||
action='store_true',
|
||||
help='Do not automatically delete empty branches.')
|
||||
parser.add_argument(
|
||||
'--no-squash',
|
||||
action='store_true',
|
||||
help='Will not try to squash branches if rebasing fails.')
|
||||
|
||||
opts = parser.parse_args(args)
|
||||
|
||||
if opts.verbose: # pragma: no cover
|
||||
@@ -341,7 +347,8 @@ def main(args=None):
|
||||
if git.is_dormant(branch):
|
||||
print('Skipping dormant branch', branch)
|
||||
else:
|
||||
ret = rebase_branch(branch, parent, merge_base[branch])
|
||||
ret = rebase_branch(branch, parent, merge_base[branch],
|
||||
opts.no_squash)
|
||||
if not ret:
|
||||
retcode = 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user