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
next prev parent 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 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.