severity 851679 wishlist
tags 851679 + upstream
clone 901897 -1
retitle -1 dgit fails autopkgtest: true/false are no valid 
working-tree-encodings
reassign -1 dgit 5.0
retitle 901897 git needs Breaks against dgit versions without 
working-tree-encoding support
block 901897 by -1
quit

Hi Ian,

Ian Jackson wrote:

> Subject: git introduces new hazardous working-tree-encoding attribute

This title doesn't describe a bug.  On first reading, I thought you
were saying that some working-tree-encoding related feature was
behaving incorrectly, but it doesn't appear to be so.  (I was trying
to understand so that I could forward this report upstream.)

By the way, is there a way to trigger these autopkgtests automatically
with git from experimental as well?  That way, I'd get earlier notice
about these issues.

> So, on to the actual problem:
>
> Looking at the manpage for gitattributes(7) it mentions a new
> attribute
>    working-tree-encoding
> which affects the way files are checked in and out.
>
> dgit and similar workflows need to disable this attribute, because
> they require that git trees and source packages correspond, which
> cannot be achieved if working trees made from source packages are not
> identical to git trees once committed.

I think you're saying that attributes like "text" are forbidden in
dgit packages because dgit wants to compare the content of the working
directory to the tracked content without using Git for that.  Am I
understanding correctly?

Git has a notion of "smudge" and "clean" attributes.  The idea is that
to get the content for the worktree, you use "smudge".  To get the
checked-in content, you use "clean".  Would dgit be able to
interoperate with that?

In the dgit(7) manpage, you write:

        These transformations are context-sensitive and not, in
        general, reversible

Strictly speaking, since users can configure filters that run
arbitrary commands (see "filter" in gitattributes(5)), that's true,
but the transformations are meant to produce a canonical "smudged"
form in the worktree and a canonical "clean" form in the repository.

Sorry I missed bug#851679 before.  We can discuss this more there.
Perhaps some command like "git archive" would work better than "git
checkout" for this use.

> In #851679 I requested a way to disable all checkout-affecting
> gitattributes.  This has not yet been done AFAICT.
>
> In lieu of that, dgit's test suite has a specific test to spot when
> new attributes are introduced.  It tries enabling them and seeing if
> things go wrong.  And indeed, that test has now tripped.  (It failed,
> in fact, simply because some of the values it attempted to set the
> unknown working-tree-encoding attribute to were invalid, but IMO the
> test has done its job.)
>
> I think at the very least I will need to update dgit to disable
> working-tree-encoding as well.  I think the new git should probably
> have a Breaks against the older dgit.

Happy to add a Breaks.  Do you know what version of dgit will have the
fix?

Thanks,
Jonathan

Reply via email to