From: Jeff King Date: Thu, 17 May 2007 13:46:49 GMT Subject: Re: [3/4] What's not in 1.5.2 (new topics) Message-ID: <20070517134649.GA20853@coredump.intra.peff.net> In-Reply-To: <20070517124622.GP4489@pasky.or.cz> On Thu, May 17, 2007 at 02:46:22PM +0200, Petr Baudis wrote: > > why can't I just have _repo_ configuration: > > > > [subproject "kernel/"] > > URL = http://www.kernel.org/pub/linux-2.6.git > > ? > > It can be first-time cloned from the upstream, but it stays after > > people change it to suit their systems. They can depend on it not to > > be broken by upstream. > > Because kernel/ can get removed, moved around, or point at entirely > *different* projects over time and branches - kernel/ can switch from > linux-2.4 to linux-2.6, libc/ can switch between glibc and uClibc, ... I think we clearly need a 2-level system: a tracked pointer to the repo, with an optional local override. However, I don't quite like Junio's idea of using the URL as a key, since it is intended to change. IOW, if I am overriding your URL via .git/config, if you change your URL then my config is now broken. Instead, why not: 1. url location is supplied in configuration as [subproject "kernel/"] url = git://git.kernel.org/pub/linux-2.4.git 2. .gitmodules is simply read as a lower-priority version of configuration One advantage of this approach is that it's totally general; instead of .gitmodules, we could in fact be talking about .gitconfig, a mechanism for projects to contain tracked configuration that can be overridden by individual repos. For some projects, I imagine some of the commit encoding config options might make sense. Thoughts? -Peff