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 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).