On 9/8/16, Jakub Narębski <jna...@gmail.com> wrote:
> W dniu 06.09.2016 o 23:01, john smith pisze:
>> I'd prefer smudge/clean filters instead of `make' scripts etc. to
>> convert template dotfiles into something usable and back because
>> 1. could be run automatically
>> 2. do not modify files as shown by `git show HEAD:<file>' and
>> therefore no files are reported as modified by git status and also
>> there are not conflicts when merging master into work/home branch.
>> I have problems because with point 1 because apparently smudge filter
>> is not run automatically every time when branch is changed if files
>> listed in .gitattributes do not change. As the last resort I could
>> force smudge/clean filter to run just to keep advantage specified in
>> point 2.
> Couldn't you use post-checkout hook plus clean filter instead of
> clean/smudge filter pair, if the smudge part depends on the branch?
> Or make post-checkout hook invoke smudge filter... though
> `git cat-file --filters` is not in any released version, I think...
I moved smudge-filter functionality to post-checkout hook and only
left clean filter. Now post-checkout hooks is called every time when
changing branches but it's not working together with clean filter when
changing branches. For example, when I have this on master in
After moving to `work' it becomes this thanks to post-checkout hook
which replaces @EMAIL@ with correct definition:
But when I move to `home' branch from `work' I still get this:
post-checkout didn't work here because it can't see @EMAIL@ part in
bash/.bashrc because clean filter has not been run. I need to run this
single command to force `clean' filter to run to replace
w...@address.com with @EMAIL@ and let post-checkout replace it with
git checkout .
And now I get the correct definition:
So it seems that clean filter is only run when checking out paths but
not when checking out branches. Is my thinking correct?