From: Josef Wolf <jw@raven.inka.de>
To: git@vger.kernel.org
Subject: Re: renormalize histroy with smudge/clean-filter, again
Date: Fri, 14 Feb 2025 21:03:13 +0100 [thread overview]
Message-ID: <20250214200313.GT30202@raven.inka.de> (raw)
In-Reply-To: <20250211235707.GQ30202@raven.inka.de>
Since none of the methods using plain git worked, my next try was to reach out
to git-filter-repo:
Again, using my renormalize-helper script:
$ cat renormalize-helper
#! /bin/sh -e
git add --renormalize .
git diff --quiet --cached || \
git commit --amend --no-edit
So I go with git-filter-repo:
$ git clone ssh://gitrepos@my.server/repo fresh-clone
$ cd fresh-clone
$ git-filter-repo \
--prune-empty always \
--invert-paths --use-base-name \
--path-regex '\.ets5hash$'
$ for branch in branch-1 branch-2 branch-3 ; do
git checkout -b $branch-renormalized $branch
git add --renormalize .
git diff --quiet --cached || \
git commit -m"Renormalize HEAD"
git rebase \
--root -X renormalize \
-x $renormalize_helper
done
This went without problem and contents looked fine, so I really thought I got
it finally.
But then I tried to move .gitattributes to the very beginnig of history:
$ git rebase -i --root
AGAIN conflicts due to line ending errors. Adding
'--attr-source=$(git rev-parse HEAD)' and '-x renormalize-helper' did not
help beside moving the conflicts to another location.
Thus, although the renormalization process finished successfully, there are
_still_ commits with unclean content in the repository.
I REALLY REALLY REALLY think there should be an option
--always-apply-clean-filter-to-all-content-before-feeding-to-merge-or-diff
or something!
On Wed, Feb 12, 2025 at 12:57:07AM +0100, Josef Wolf wrote:
> Still struggling with my filter problem.
>
> Here is what I do:
>
> - Set up a clean filter which enforces CRLF (yes, for this specific use
> case I want CRLF even on linux)
>
> - Smudge filter does not modify the file at all
>
> - Set up git to fail when filter fails, so I can double-check that the
> filter is actually runnning:
>
> $ grep -A3 filter..etsfile ~/.gitconfig
> [filter "etsfile"]
> required = true
> clean = ets-utils -c
> smudge = ets-utils -s %f
>
> - Specify file as non-text and install the filter:
>
> $ grep etsfile .gitattributes
> */P -text filter=etsfile
> $ git commit .gitattributes
>
> - Check that git gets attributes as I want them:
>
> $ git --attr-source=$(git rev-parse HEAD) check-attr -a P-0113/P
> P-0113/P: text: unset
> P-0113/P: filter: etsfile
> $ git ls-files --eol P-0113/P
> i/lf w/ attr/-text P-0113/P
>
> - Create helper for renormalization
>
> $ cat renormalization-helper
> #! /bin/sh -e
> git add --renormalize .
> git diff --quiet --cached || \
> git commit --amend --no-edit
>
> - Run the renormalization for the linear history:
>
> $ git --attr-source=$(git rev-parse HEAD) \
> rebase --root -X renormalize \
> -x $(dirname $0)/renormalize-helper
>
> So at this point, I'd expect the falie to have CRLF line endings. But it
> doesn't, so I do:
>
> $ rm -rf P-0113
> git checkout --attr-source=$(git rev-parse HEAD) P-0113
>
> Still no CRLF, so I look at what is stored by git:
>
> $ git --attr-source=$(git rev-parse HEAD) show 873a9b:P-0113/P |less -U
>
> Again, no CRLF.
>
> So I check all revisions in the history. Resut: no revision has CRLF.
>
> So the renormalization process does not work for me at all.
>
> Any ideas?
>
> --
> Josef Wolf
> jw@raven.inka.de
>
>
--
Josef Wolf
jw@raven.inka.de
next prev parent reply other threads:[~2025-02-14 20:04 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-05 21:47 renormalize histroy with smudge/clean-filter Josef Wolf
2025-02-05 22:55 ` brian m. carlson
2025-02-05 23:59 ` Josef Wolf
2025-02-06 0:29 ` brian m. carlson
2025-02-06 8:07 ` Elijah Newren
2025-02-06 13:40 ` Josef Wolf
2025-02-06 20:04 ` Josef Wolf
2025-02-07 6:10 ` Chris Torek
2025-02-07 10:45 ` Josef Wolf
2025-02-07 11:06 ` Torsten Bögershausen
2025-02-07 11:12 ` Chris Torek
2025-02-07 11:17 ` Chris Torek
2025-02-07 14:01 ` Elijah Newren
2025-02-07 20:32 ` Josef Wolf
2025-02-08 0:23 ` Elijah Newren
2025-02-08 11:14 ` Phillip Wood
2025-02-08 21:08 ` Josef Wolf
2025-02-08 21:43 ` Elijah Newren
2025-02-08 23:26 ` Josef Wolf
2025-02-09 2:33 ` D. Ben Knoble
2025-02-09 8:53 ` Josef Wolf
2025-02-09 7:21 ` Elijah Newren
2025-02-09 8:57 ` Josef Wolf
2025-02-10 17:51 ` D. Ben Knoble
2025-02-08 20:57 ` Josef Wolf
2025-02-08 21:56 ` Elijah Newren
2025-02-09 9:25 ` Josef Wolf
2025-02-09 11:14 ` Torsten Bögershausen
2025-02-09 15:09 ` Josef Wolf
2025-02-09 17:54 ` Josef Wolf
2025-02-09 18:01 ` Josef Wolf
2025-02-07 20:21 ` Josef Wolf
2025-02-07 15:39 ` Junio C Hamano
2025-02-06 10:13 ` Phillip Wood
2025-02-06 7:55 ` Elijah Newren
2025-02-06 19:00 ` Junio C Hamano
2025-02-11 23:57 ` renormalize histroy with smudge/clean-filter, again Josef Wolf
2025-02-12 6:12 ` Torsten Bögershausen
2025-02-12 8:18 ` Josef Wolf
2025-02-13 11:36 ` Collisions while cloning (was: Re: renormalize histroy with smudge/clean-filter, again) Josef Wolf
2025-02-13 16:40 ` Torsten Bögershausen
2025-02-14 20:03 ` Josef Wolf [this message]
2025-02-14 20:21 ` renormalize histroy with smudge/clean-filter, again brian m. carlson
2025-02-14 20:55 ` Josef Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250214200313.GT30202@raven.inka.de \
--to=jw@raven.inka.de \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).