git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nicolas Pitre <nico@cam.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rogan Dawes <lists@dawes.za.net>,
	David Lang <david.lang@digitalinsight.com>,
	Andy Parkins <andyparkins@gmail.com>,
	git@vger.kernel.org, Junio C Hamano <junkio@cox.net>
Subject: Re: [PATCH 2/2] Add keyword unexpansion support to convert.c
Date: Wed, 18 Apr 2007 11:34:25 -0400 (EDT)	[thread overview]
Message-ID: <alpine.LFD.0.98.0704181114040.4504@xanadu.home> (raw)
In-Reply-To: <alpine.LFD.0.98.0704180748460.2828@woody.linux-foundation.org>

On Wed, 18 Apr 2007, Linus Torvalds wrote:

> 
> 
> On Wed, 18 Apr 2007, Rogan Dawes wrote:
> > 
> > Or similarly, when checking an "ODF" file in, the attribute would lead to an
> > appropriate script creating the "tree" of individual files.
> > 
> > Does this sound workable?
> 
> I think it sounds very interesting, and I'd much rather do _those_ kinds 
> of rewrites than keyword unexpansion. And yes, some kind of generic 
> support for rewriting might give people effectively the keywords they want 
> (I think the CVS semantics are not likely to be logical, but people can 
> probably do something that works for them), and at that point maybe the 
> keyword discussion goes away too.

Exactly my point.

> However, I don't know if it is "workable".
> 
> The thing is, it's easy enough (although potentially _very_ expensive) to 
> run some per-file script at each commit and at each checkout. But there 
> are some fundamental operations that are even more common:
> 
>  - checking for "file changed", aka the "git status" kind of thing
> 
>    Anything we do would have to follow the same "stat" rules, at a 
>    minimum. You can *not* afford to have to check the file manually.
> 
>    So especially if you combine several pieces into one, or split one file 
>    into several pieces, your index would have to contain the entry 
>    that matches the _filesystem_ (because that's what the index is all 
>    about), but then the *tree* would contain the pieces (or the single 
>    entry that matches several filesystem entries).

For that the external script would need the ability to alter the index 
itself.  That becomes a bit yucky.  Or maybe something could be made 
with a mechanism like dnotify/inotify to "touch" the single placeholder 
entry referenced by the index whenever one of the split component 
changes.

>  - what about diffs (once the stat information says something has 
>    potentially changed)? You'd have to script those too, and it really 
>    sounds like some very basic operations get a _lot_ more expensive and 
>    complex.

Of course an attribute for external diff script is certainly something 
that could be useful independently of this case, as some particular 
binary formats might have a way of their own to display their 
differences.

The whole idea of having the ability to call external tools is exactly 
to delegate complex/bizarre/unusual tasks to separate and independent 
agents.  The whole checkout operation becomes much more expensive but 
everyone using such facility might expect it.  It just cannot be as bad 
as a straight checkout with CVS from a remote server though (OK I know 
it can but you know what I mean).

>    This is also related to the above: one of the most fundamental diffs is 
>    the diff of the index and a tree - so if the index matches the 
>    "filesystem state" and the trees contain some "combined entry" or 
>    "split entry", you'd have to teach some very core diff functionality 
>    about that kind of mapping.

Well, if the split components are represented by a single placeholder in 
the index and the filesystem, and the filesystem placeholder is 
"touched" whenever a split component is modified, then the mapping can 
as well be limited to the external scripts for checkin/checkout/diff 
only without the Git core having the slightest idea about it.

Sure it might be slow and unusual, but at least not impossible.  And 
again, with an attribute providing a facility for external tools it is 
then not our problem anymore.


Nicolas

  reply	other threads:[~2007-04-18 15:34 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-17  9:41 [PATCH 2/2] Add keyword unexpansion support to convert.c Andy Parkins
     [not found] ` <200704171803.58940.an dyparkins@gmail.com>
2007-04-17 10:09 ` Junio C Hamano
2007-04-17 11:35   ` Andy Parkins
2007-04-17 15:53     ` Linus Torvalds
2007-04-17 17:03       ` Andy Parkins
2007-04-17 18:12         ` Linus Torvalds
2007-04-17 19:12           ` Andy Parkins
     [not found]             ` <alpine.LFD. 0.98.0704171530220.4504@xanadu.home>
2007-04-17 19:41             ` Nicolas Pitre
2007-04-17 19:45               ` David Lang
     [not found]                 ` <alpin e.LFD.0.98.0704171624190.4504@xanadu.home>
2007-04-17 20:29                 ` Nicolas Pitre
2007-04-17 20:05                   ` David Lang
2007-04-17 21:16                     ` Nicolas Pitre
     [not found]                       ` <7vy7k qlj5r.fsf@assigned-by-dhcp.cox.net>
2007-04-17 20:53                       ` David Lang
2007-04-17 21:52                         ` Andy Parkins
2007-04-17 22:40                       ` Junio C Hamano
2007-04-18  2:39                         ` Nicolas Pitre
2007-04-18  5:04                           ` Junio C Hamano
2007-04-18 14:56                             ` Nicolas Pitre
2007-04-18 11:14                           ` Johannes Schindelin
2007-04-18 15:10                             ` Nicolas Pitre
2007-04-19  8:19                               ` Johannes Schindelin
2007-04-21  0:42                         ` David Lang
2007-04-21  1:54                           ` Junio C Hamano
2007-04-21  2:06                             ` Nicolas Pitre
2007-04-21 23:31                             ` David Lang
2007-04-18  6:24                       ` Rogan Dawes
2007-04-18 15:02                         ` Linus Torvalds
2007-04-18 15:34                           ` Nicolas Pitre [this message]
2007-04-18 15:38                           ` Rogan Dawes
2007-04-18 15:59                             ` Nicolas Pitre
2007-04-18 16:09                               ` Rogan Dawes
2007-04-18 17:58                               ` Alon Ziv
2007-04-17 19:54             ` Linus Torvalds
2007-04-17 20:46               ` Andy Parkins
2007-04-17 20:52                 ` [PATCH] Add keyword collapse " Andy Parkins
2007-04-17 21:10                 ` [PATCH 2/2] Add keyword unexpansion " Linus Torvalds
2007-04-17 21:13                   ` Linus Torvalds
2007-04-18 11:11                     ` Johannes Schindelin
2007-04-20 11:32                 ` Nikolai Weibull
2007-04-17 21:18             ` Martin Langhoff
2007-04-17 21:24     ` Junio C Hamano
2007-04-20  0:30     ` Jakub Narebski
2007-04-21  0:47       ` David Lang
2007-04-17 15:46   ` Linus Torvalds
2007-04-17 10:41 ` Johannes Sixt
2007-04-17 15:32 ` Linus Torvalds
2007-04-17 17:10   ` Andy Parkins
2007-04-17 17:18   ` Rogan Dawes
2007-04-17 18:23     ` Linus Torvalds
2007-04-17 20:27       ` Rogan Dawes
2007-04-17 23:56       ` Robin H. Johnson
2007-04-18  0:02         ` Junio C Hamano
2007-04-18  0:26           ` J. Bruce Fields
2007-04-18  1:19             ` Linus Torvalds
2007-04-18  1:28               ` Junio C Hamano
2007-04-18  1:33                 ` Linus Torvalds
2007-04-18  1:06           ` Robin H. Johnson
2007-04-18  1:15             ` Junio C Hamano
2007-04-18  1:42               ` Junio C Hamano
2007-04-18  2:53                 ` Robin H. Johnson
2007-04-18  4:15           ` Daniel Barkalow
2007-04-18 11:32           ` Johannes Schindelin
2007-04-18  2:50         ` Martin Langhoff
2007-04-18 10:06         ` David Kågedal
2007-04-18 11:08           ` Robin H. Johnson
2007-04-17 21:00 ` Matthieu Moy

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=alpine.LFD.0.98.0704181114040.4504@xanadu.home \
    --to=nico@cam.org \
    --cc=andyparkins@gmail.com \
    --cc=david.lang@digitalinsight.com \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=lists@dawes.za.net \
    --cc=torvalds@linux-foundation.org \
    /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).