From: david@lang.hm
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: "Daniel Barkalow" <barkalow@iabervon.org>,
"martin f krafft" <madduck@madduck.net>,
git@vger.kernel.org, "Thomas Harning Jr." <harningt@gmail.com>,
"Francis Moreau" <francis.moro@gmail.com>,
"Nicolas Vilz" <niv@iaglans.de>,
"David Härdeman" <david@hardeman.nu>
Subject: Re: metastore (was: Track /etc directory using Git)
Date: Sat, 15 Sep 2007 18:30:53 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.64.0709151737400.24221@asgard.lang.hm> (raw)
In-Reply-To: <Pine.LNX.4.64.0709152310380.28586@racer.site>
On Sat, 15 Sep 2007, Johannes Schindelin wrote:
> On Sat, 15 Sep 2007, Daniel Barkalow wrote:
>
>> Git doesn't have any way to represent owners or groups, and they would
>> need to be represented carefully in order to make sense across multiple
>> computers.
>
> [speaking mostly to the proponents of git-as-a-backup-tool]
>
> While at it, you should invent a fallback what to do when the owner is not
> present on the system you check out on. And a fallback when checking out
> on a filesystem that does not support owners.
>
> And a fallback when a non-root user uses it.
>
> Oh, and while you're at it (you said that it would be nice not to restrict
> git in any way: "it is a content tracker") support the Windows style
> "Group-or-User-or-something:[FRW]" ACLs.
git has pre-commit hooks that could be used to gather the permission
information and store it into a file.
git now has the ability to define cusom merge strategies for specific file
types, which could be used to handle merges for the permission files.
what git lacks the ability to do is to deal with special cases on
checkout.
the handling of gitattributes came really close, but there are two
problems remaining.
1. whatever is trying to write the files with the correct permissions
needs to be able to query the permission store before files are
written. This needs to either be an API call into git to retreive the
information for any file when it's written, or the ability to define a
specific file to be checked out first so that it can be used for
everything else.
2. the ability to specify a custom routine/program to write the file out
(assuming that it's being written to a filesystem not a pipe). this
routine would be responsible for querying the permission store and
doing 'the right thing' when the file is written during a checkout
there are some significant advantages of having the permission store be
just a text file.
1. it doesn't require a special API to a new datastore in git
2. when working in an environment that doesn't allow for implementing the
permissions (either a filesystem that can't store the permissions or
when not working as root so that you can't set the ownership) the file
can just be written and then edited with normal tools.
3. normal merge tools do a reasonable job of merging them.
however to do this git would need to gain the ability to say 'this
filename is special, it must be checked out before any other file is
checked out' (either on a per-directory or per-repository level)
if this is acceptable then altering the routines that write the files to
have the additional option of calling a different routine based on the
settings in .gitattributes seems relativly simple. there should already be
logic to decect if it's writing to a pipe or a filesystem (it needs to
know if it should set the write bit if nothing else), and there's the
existing passthrough or custom routine logic for the crlf translation from
.gitattributes. combining the logic of the two should handle the output
issues.
the ability to handle /etc comes up every few months. it's got to be the
most common unimplemented request git has seen. Adding the nessasary hooks
for it to be done could end up being less effort then repeatedly telling
people that they shouldn't use git for that task (or should wrap git in
their own scripts and use the result instead of useing git directly)
so would changes like this be acceptable?
David Lang
next prev parent reply other threads:[~2007-09-16 1:31 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 [this message]
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 ` metastore david
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.0709151737400.24221@asgard.lang.hm \
--to=david@lang.hm \
--cc=Johannes.Schindelin@gmx.de \
--cc=barkalow@iabervon.org \
--cc=david@hardeman.nu \
--cc=francis.moro@gmail.com \
--cc=git@vger.kernel.org \
--cc=harningt@gmail.com \
--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).