Re: renormalize histroy with smudge/clean-filter
- From
- Josef Wolf <jw@raven.inka.de>
- Date
- Feb 5, 2025, 23:59 UTC
- Message-ID
- <20250205235931.GB30202@raven.inka.de>
- In-Reply-To
- <Z6PsXGnxM3UBR3nM@tapette.crustytoothpaste.net>
Thanks for your help, Brian!
On Wed, Feb 05, 2025 at 10:55:24PM +0000, brian m. carlson wrote:
Show 9 quoted lines
> On 2025-02-05 at 21:47:26, Josef Wolf wrote: > > > > Huh? I never entered a command "merge-renormalize" > > When you use command like `--strategy foo` with a custom strategy, Git > calls a binary called `git merge-foo` to implement that strategy. So > while you didn't explicitly invoke that, when you used the nonstandard > strategy `renormalize` (which, by the way, does not exist), Git invoked > it when you rebased, since rebases by default use merges under the hood.
Uh, You're right: renormalize is not a merge-strategy on its own but an option to the ort strategy.
$ git rebase --root --strategy ort -X renormalize
Updating files: 100% (372/372), done.
error: Your local changes to the following files would be overwritten by merge:
gt8/P-0113/G
gt8/P-0113/P-0113-0_A-2
gt8/P-0113/U
Please commit your changes or stash them before you merge.
Aborting
Those are (some) of the files which are subject to the filtering. I can go
further with:$ git add --renormalize . && git commit --amend --no-edit && git rebase --continue
So this approach works. Although it needs some manual intervention.
> > BTW: It does not make any difference whether I add "-c merge.renormalze=true" > > That option also does not exist.
Well, this is described in git(1) manpage:
[ ... ]
SYNOPSIS
git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
[ ... ] ^^^^^^^^^^^^^^^^^^^> git rebase --root -x 'git add --renormalize . && git commit --amend --no-edit'
Unfortunately, this runs the command on every commit and gives a warning when a cmmit don't touch a filtered file:
$ git rebase --root -x 'git add --renormalize . && git commit --amend --no-edit' [ ... ] No changes You asked to amend the most recent commit, but doing so would make it empty. You can repeat your command with --allow-empty, or you can remove the commit entirely with "git reset HEAD^".
Is there a way to run the command only when rebase halts?
-- Josef Wolf jw@raven.inka.de