git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael J Gruber <git@drmicha.warpmail.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Johannes Sixt <j.sixt@viscovery.net>, "Mestnik\,
	Michael J - Eagan\,
	MN - Contractor"  <Michael.J.Mestnik@usps.gov>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: Using Format/export-subst Howto.
Date: Mon, 17 Sep 2012 15:17:17 +0200	[thread overview]
Message-ID: <505722DD.3000806@drmicha.warpmail.net> (raw)
In-Reply-To: <7v7grw2qcu.fsf@alter.siamese.dyndns.org>

Junio C Hamano venit, vidit, dixit 14.09.2012 23:23:
> Michael J Gruber <git@drmicha.warpmail.net> writes:
> 
>> you need to "rm file && git checkout file"). If the user has to
>> update $Id$ to match the current sha1 (by remembering to do a more
>> forceful checkout than checkout -f) then one half of that feature
>> is useless.
> 
> As if there is any value in "$Id$" _feature_.  It's a checkbox item, 
> nothing more ;-).

It's your favorite feature^Wcheckbox item, I know ;)

I wouldn't mind dropping it or making it export-only, but the current
state of that item is quite confusing. I seem to remember this has been
brought up before.

Junio C Hamano venit, vidit, dixit 15.09.2012 00:26:
> Junio C Hamano <gitster@pobox.com> writes:
> 
>> Michael J Gruber <git@drmicha.warpmail.net> writes:
>> 
>>> you need to "rm file && git checkout file"). If the user has to
>>> update $Id$ to match the current sha1 (by remembering to do a
>>> more forceful checkout than checkout -f) then one half of that
>>> feature is useless.
>> 
>> As if there is any value in "$Id$" _feature_.  It's a checkbox
>> item, nothing more ;-).
> 
> Having said that, I think you could do something along this line (I 
> am thinking aloud, so there may be leaps in the logic below).
> 
> * Introduce a new on-disk flag in the index.  Call it X.  After 
> entry.c:write_entry() writes it out to the working tree, this flag is
> cleared.  And this codepath is the only place that clears this flag.
> 
> * When applying a clean filter (from here on, everything that breaks
> byte-for-byte identity between the copy on the working tree and the
> contents that is hashed and stored in the object store are considered
> "clean filter", including CRLF->LF and ident), internally apply the
> corresponding smudge filter to the cleaned result and compare it with
> the original input we obtained from the working tree.  If they
> differ, flip the X bit on for the path in the index.
> 
> * When "checkout" and any potential callers of write_entry() decide 
> whether it is worth calling write_entry() [*1*], consider any path
> with the X bit on as "dirty" and call write_entry().
> 
> You have to be very careful when designing the third point, though. 
> There will now be two kinds of "the working tree file is different 
> from the version registerd in the index" once you do the above. 
> Different only because of "clean->smudge" roundtrip comparison, and 
> different because it does have a real local modification.  The former
> must be considered "no local modification" for the purpose of merges
> and branch switching (otherwise you will get "cannot merge, you have
> local modifications" error).
> 
> 
> [Footnote]
> 
> *1* This currently is done primarily with ie_match_stat(), that 
> essentially is "Does the result of applying 'clean' to the working 
> tree contents match what is registered to the index?  Do not bother 
> doing this check over and over again once you checked this until the
> file in the working tree is modified again".
> 

You've convinced me not to try this in-core...

Maybe a post-commit hook is enough for Id. It's just that we also have
no in-core way of doing a forceful enough checkout on those files. But I
wouldn't mind making Id export-only (export-subst). Really, most people
who look at Id really want something like VERSION_GEN (without having to
use a build script/make/...).

Michael

  reply	other threads:[~2012-09-17 13:26 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-14 12:20 Using Format/export-subst Howto Mestnik, Michael J - Eagan, MN - Contractor
2012-09-14 13:03 ` Michael J Gruber
2012-09-14 15:06   ` Johannes Sixt
2012-09-14 15:27     ` Mestnik, Michael J - Eagan, MN - Contractor
2012-09-14 15:39       ` Johannes Sixt
2012-09-14 16:05         ` Mestnik, Michael J - Eagan, MN - Contractor
2012-09-14 21:09         ` Michael J Gruber
2012-09-14 21:23           ` Junio C Hamano
2012-09-14 22:26             ` Junio C Hamano
2012-09-17 13:17               ` Michael J Gruber [this message]
2012-09-17 13:26                 ` Mestnik, Michael J - Eagan, MN - Contractor
2012-09-17 20:21                 ` Junio C Hamano
2012-09-18  8:24                   ` Michael J Gruber
2012-09-17 12:12             ` Mestnik, Michael J - Eagan, MN - Contractor
2012-09-17 13:45               ` Michael J Gruber
2012-09-17 14:08                 ` Mestnik, Michael J - Eagan, MN - Contractor
2012-09-17 14:21                   ` Michael J Gruber
2012-09-17 15:52                     ` Mestnik, Michael J - Eagan, MN - Contractor

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=505722DD.3000806@drmicha.warpmail.net \
    --to=git@drmicha.warpmail.net \
    --cc=Michael.J.Mestnik@usps.gov \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j.sixt@viscovery.net \
    /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).