git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: david@lang.hm
To: Julian Phillips <julian@quantumfyre.co.uk>
Cc: "David Härdeman" <david@hardeman.nu>,
	"David Kastrup" <dak@gnu.org>,
	"martin f krafft" <madduck@madduck.net>,
	git@vger.kernel.org, "Daniel Barkalow" <barkalow@iabervon.org>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"Thomas Harning Jr." <harningt@gmail.com>,
	"Francis Moreau" <francis.moro@gmail.com>,
	"Nicolas Vilz" <niv@iaglans.de>
Subject: Re: metastore
Date: Tue, 2 Oct 2007 17:52:25 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0710021743270.25489@asgard.lang.hm> (raw)
In-Reply-To: <Pine.LNX.4.64.0710030018240.4087@reaper.quantumfyre.co.uk>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 4935 bytes --]

On Wed, 3 Oct 2007, Julian Phillips wrote:

> Subject: Re: metastore
> 
> On Tue, 2 Oct 2007, David Härdeman wrote:
>
>> On Tue, Oct 02, 2007 at 10:04:56PM +0200, David Kastrup wrote:
>>> David Härdeman <david@hardeman.nu> writes:
>>> 
>>> >  On Tue, Oct 02, 2007 at 08:53:01PM +0100, martin f krafft wrote:
>>> > > also sprach David Härdeman <david@hardeman.nu> [2007.09.19.2016 
>>> +0100]:
>>> > > >  But I agree, if any changes were made to git, I'd advocate adding
>>> > > >  arbitrary attributes to files (much like xattrs) in name=value
>>> > > >  pairs, then any extended metadata could be stored in those
>>> > > >  attributes and external scripts/tools could use them in some way
>>> > > >  that makes sense...and also make sure to only update them when it
>>> > > >  makes sense.
>>> > > > > So where would those metdata be stored in your opinion?
>>> > >  I'm not sufficiently versed in the internals of git to have an
>>> >  informed opinion :)
>>> 
>>> I think we have something like a length count for file names in index
>>> and/or tree.  We could just put the (sorted) attributes after a NUL
>>> byte in the file name and include them in the count.  It would also
>>> make those artificially longer file names work more or less when
>>> sorting them for deltification.
>> 
>> Or perhaps the index format could be extended to include a new field for 
>> value=name pairs instead of overloading the name field.
>> 
>> But as I said, I have no idea how feasible it would be to change git to 
>> support another arbitrary length field in the index/tree file.
>> 
>>> However, this requires implementing _policies_: it must be possible to
>>> specify per repository exactly what will and what won't get tracked,
>>> or one will get conflicts that are not necessary or appropriate.
>> 
>> I think the opposite approach would be better. Let git provide 
>> set/get/delete attribute operations and leave it at that. Then external 
>> programs can do what they want with that data and add/remove/modify tags as 
>> necessary (and also include the smarts to not, e.g. remove the permissions 
>> on all files if the git repo is checked out to a FAT fs).
>
> You need more than that.  You need to be able to log, blame etc on the 
> attributes.  One of the big annoyances of Subversion properties is being 
> unable to find out when or why a property value was changed.
>
> I still don't see why the attributes need to be stored in git directly - 
> particularly if you are going to use an external program to actually apply 
> any settings - why not store the attributes as normal file (or files) of some 
> sort tracked by git?  You could use any number of methods - e.g. use an 
> sqlite database stored in the root of your tree, or a .<name>.props file 
> alongside each path that you have properties for.  You could even write a 
> system that uses such a method and was then SCM agnostic, allowing you to 
> keep your attribute tracking system if/when something better than git comes 
> along - or simply share it with less-fortunate souls stuck in an inferior 
> system.

one other big advantage of keeping things in a normal file, it's easier to 
get the results accepted into git!

don't forget that the core git maintainers don't really see this as a 
worthwhile effort, so the more intrusive the result is the less likely it 
is to be accepted. It may end up that storing the attributes inside of git 
_is_ the best thing to do, but it's gong to be a whole lot easier to get a 
patch to implement this accepted if it's a migration from an existing, 
heavily used, implementation then if it's from the 'outside' with people 
saying "this is a neat thing, we think people would use it if it only had 
this"

and even if an internal implementation does end up being the right thing, 
the exact shape of the API is an item that will require a lot of debate 
(and probably a few false starts) to get right. let's figure out the 
real-world useage patterns first, and then work from there as appropriate.

shifting back onto implementaion details

in the discussion a few weeks ago I was told that there is a way to look 
at the contents of a file that hasn't been checked out yet (somehow it 
exists in a useable form 'in the index') but when I asked for information 
about how to do this I never got a response.

the reason for needing this is that the routines writing the files need to 
be able to access this information when they are dong so, but that file 
may not be checked out.

for that matter, .gitattributes should have a similar problem (if 
.gitattibutes for a directory hasn't been checked out yet how do you know 
if you could do the line ending conversions on a file or not?). how is the 
problem addressed there? (or is it the case that all the use so far has 
really not used the per-directory files and everything is in the master 
file, and that doesn't change enough to find these problems?

David Lang

  reply	other threads:[~2007-10-03  0:51 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <38b2ab8a0709130511q7a506c5cvb0f8785a1d7ed7ad@mail.gmail.com>
     [not found] ` <20070913123137.GA31735@piper.oerlikon.madduck.net>
     [not found]   ` <38b2ab8a0709140108v2a9c3569i93b39f351f1d4ec3@mail.gmail.com>
     [not found]     ` <20070914091545.GA26432@piper.oerlikon.madduck.net>
2007-09-14 17:31       ` Track /etc directory using Git Thomas Harning Jr.
2007-09-14 21:26         ` Nicolas Vilz
2007-09-15 14:29           ` Pierre Habouzit
2007-09-15 15:24             ` martin f krafft
2007-09-15 15:27               ` Pierre Habouzit
2007-09-15 15:42                 ` martin f krafft
2007-09-15 13:26         ` metastore (was: Track /etc directory using Git) martin f krafft
2007-09-15 14:10           ` Johannes Schindelin
2007-09-15 14:16             ` metastore David Kastrup
2007-09-15 14:54             ` metastore (was: Track /etc directory using Git) martin f krafft
2007-09-15 16:22               ` Grzegorz Kulewski
2007-09-15 17:43                 ` Johannes Schindelin
2007-09-15 23:33                 ` metastore Randal L. Schwartz
2007-09-16  0:37                   ` metastore david
2007-09-16  1:10                     ` metastore Randal L. Schwartz
2007-09-16  1:49                       ` metastore david
2007-09-17 13:04                   ` metastore Francis Moreau
2007-09-17 15:32                     ` metastore Randal L. Schwartz
2007-09-15 19:56               ` metastore (was: Track /etc directory using Git) Daniel Barkalow
2007-09-15 22:14                 ` Johannes Schindelin
2007-09-16  1:30                   ` david
2007-09-16  2:48                     ` Johannes Schindelin
2007-09-16  3:00                       ` david
2007-09-16  8:06                     ` metastore Junio C Hamano
2007-09-16  8:30                       ` metastore David Kastrup
2007-09-16 20:19                         ` metastore david
2007-09-16 15:51                       ` metastore Daniel Barkalow
2007-09-16 21:12                         ` metastore david
2007-09-16 21:28                           ` metastore Junio C Hamano
2007-09-16 21:45                             ` metastore Daniel Barkalow
2007-09-16 21:53                             ` metastore david
2007-09-16 22:02                           ` metastore Daniel Barkalow
2007-09-16 22:37                             ` metastore david
2007-09-17 13:30                               ` metastore martin f krafft
2007-09-17 17:17                                 ` metastore david
2007-09-17 19:46                                   ` metastore Josh England
2007-09-16 21:45                       ` metastore david
2007-09-16 22:11                         ` metastore Junio C Hamano
2007-09-16 22:52                           ` metastore david
2007-09-17  0:58                             ` metastore Junio C Hamano
2007-09-17  2:31                               ` metastore david
2007-09-17  4:23                                 ` metastore Junio C Hamano
2007-09-17  4:35                                   ` metastore david
2007-09-17  6:06                                     ` metastore Junio C Hamano
2007-09-17 17:42                                   ` metastore Daniel Barkalow
2007-09-17 19:19                                     ` metastore Junio C Hamano
2007-09-16 15:59                     ` metastore (was: Track /etc directory using Git) Jan Hudec
2007-09-16 20:36                       ` david
2007-09-16  6:14                   ` martin f krafft
2007-09-16 15:51                     ` Jan Hudec
2007-09-16 19:43                       ` david
2007-09-17 13:31                       ` martin f krafft
2007-09-16  1:35                 ` david
2007-09-16  6:08                 ` martin f krafft
2007-09-19 19:16                   ` David Härdeman
2007-10-02 19:53                     ` martin f krafft
2007-10-02 19:58                       ` David Härdeman
2007-10-02 20:04                         ` metastore David Kastrup
2007-10-02 20:18                           ` metastore david
2007-10-02 20:23                             ` metastore martin f krafft
2007-10-02 20:29                               ` metastore david
2007-10-02 20:39                                 ` metastore martin f krafft
2007-10-02 20:54                                   ` metastore david
2007-10-02 21:42                                     ` metastore martin f krafft
2007-10-02 21:15                           ` metastore David Härdeman
2007-10-02 21:44                             ` metastore martin f krafft
2007-10-02 23:32                             ` metastore Julian Phillips
2007-10-03  0:52                               ` david [this message]
2007-10-03  0:52                                 ` metastore Johannes Schindelin
2007-10-02 21:02                         ` metastore (was: Track /etc directory using Git) Daniel Barkalow
     [not found] ` <20070913122002.GO671@genesis.frugalware.org>
     [not found]   ` <38b2ab8a0709140120k50f5b474oc8a841ea0a5fda50@mail.gmail.com>
2007-09-15 16:32     ` Track /etc directory using Git martin f krafft
2007-09-15 16:57       ` David Kastrup

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=Pine.LNX.4.64.0710021743270.25489@asgard.lang.hm \
    --to=david@lang.hm \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=barkalow@iabervon.org \
    --cc=dak@gnu.org \
    --cc=david@hardeman.nu \
    --cc=francis.moro@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=harningt@gmail.com \
    --cc=julian@quantumfyre.co.uk \
    --cc=madduck@madduck.net \
    --cc=niv@iaglans.de \
    /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).