On Thu, Jun 24, 2010 at 01:21:49PM -0700, Junio C Hamano wrote: > > > > If .gitattributes is different on the different sides, or if you > > enable autocrlf, the current repo contents may change after > > git-to-worktree and worktree-to-git again. > > IOW, g2w-then-w2g may not be an identity function. Absolutely, pretty much by definition this cannot be the case (and is not the case for any of the built-in filters like eol, autocrlf, ident), since you have no control of what you have in the repository before you enable the filter. What we assume though is that g2w(g2w(x)) == g2w(x). I think it is very hard to come up with a reasonable case for a filter where that is not the case. > If we were to encourage use of this codepath to wider audiences, we may > need to have a document for people who write smudge/clean filters. In > order for the result to be stable, applying g2w-then-w2g once again on top > of the result of running g2w-then-w2g on anything should be no-op, no? This _has_ to work, otherwise you would get dirty contents after a checkout, and that would be horrible. So, the follolwing should be true: g2w(x) == g2w(g2w(x)) A -> g2w() -> B -> g2w() -> B ... w2g(g2w(x)) == w2g(g2w(w2g(g2w(x)))) X -> g2w() -> w2g() -> Y -> g2w() -> w2g() -> Y ... Running w2g() twice should also be the same as running it once. I thought nothing in git required it as such, but in the case of a missing smudge filter git will call w2g() on something that is already cleaned. I think the clean/smudge guidelines should be: "Both clean and smudge filters should be idempotent; running them multiple times should not alter the contents further." - Finn Arne -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html