All of lore.kernel.org
 help / color / mirror / Atom feed
From: Finn Arne Gangstad <finnag@pvv.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com>, git@vger.kernel.org
Subject: Re: What's cooking in git.git (Jun 2010, #04; Wed, 23)
Date: Fri, 25 Jun 2010 09:46:23 +0200	[thread overview]
Message-ID: <20100625074623.GA4734@pvv.org> (raw)
In-Reply-To: <7veifwchb6.fsf@alter.siamese.dyndns.org>

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

  parent reply	other threads:[~2010-06-25  7:46 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-23 22:09 What's cooking in git.git (Jun 2010, #04; Wed, 23) Junio C Hamano
     [not found] ` <7veifxe63j.fsf@alter.siamese.dyndns.org>
2010-06-23 22:54   ` [PATCH] bash completion: Support "divergence from upstream" messages in __git_ps1 Shawn O. Pearce
2010-06-23 23:21 ` What's cooking in git.git (Jun 2010, #04; Wed, 23) Ævar Arnfjörð Bjarmason
2010-06-24  0:44 ` Nazri Ramliy
2010-06-24  3:46 ` Tay Ray Chuan
2010-06-24 11:17 ` Finn Arne Gangstad
2010-06-24 11:42   ` Johannes Sixt
2010-06-24 11:58     ` Finn Arne Gangstad
2010-06-24 12:23     ` Eyvind Bernhardsen
2010-06-24 20:21   ` Junio C Hamano
2010-06-24 20:51     ` Eyvind Bernhardsen
2010-06-24 22:48       ` Junio C Hamano
2010-06-25  8:43         ` Finn Arne Gangstad
2010-06-25 19:43         ` Eyvind Bernhardsen
2010-06-25 21:17           ` Junio C Hamano
2010-06-25  6:02     ` Johannes Sixt
2010-06-25  7:46     ` Finn Arne Gangstad [this message]
2010-06-24 14:48 ` Johannes Sixt
2010-06-24 15:33   ` git log --objects Holger Hellmuth
2010-06-25 10:06     ` Santi Béjar
2010-06-24 15:41   ` What's cooking in git.git (Jun 2010, #04; Wed, 23) Clément Poulain
2010-06-25  2:27 ` Christian Couder
2010-06-25 10:30 ` Ævar Arnfjörð Bjarmason
2010-06-25 13:43 ` Michael J Gruber

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=20100625074623.GA4734@pvv.org \
    --to=finnag@pvv.org \
    --cc=eyvind.bernhardsen@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.