Code

[PATCH] Define relative .git/objects/info/alternates semantics.
authorJunio C Hamano <junkio@cox.net>
Tue, 13 Sep 2005 07:05:22 +0000 (00:05 -0700)
committerJunio C Hamano <junkio@cox.net>
Tue, 13 Sep 2005 20:39:23 +0000 (13:39 -0700)
commitccfd3e99621f489db4ea37a03be7674adbd03f6e
tree8ea9565ee2a7a9f08e56686963ee2b545c8f6afd
parenta5cd85e084458bf573d0d29fa79c4e1ad7973ed7
[PATCH] Define relative .git/objects/info/alternates semantics.

An entry in the alternates file can name a directory relative to
the object store it describes.  A typical linux-2.6 maintainer
repository would have "../../../torvalds/linux-2.6.git/objects" there,
because the subsystem maintainer object store would live in

    /pub/scm/linux/kernel/git/$u/$system.git/objects/

and the object store of Linus tree is in

    /pub/scm/linux/kernel/git/torvalds/linux-2.6.git/objects/

This unfortunately is different from GIT_ALTERNATE_OBJECT_DIRECTORIES
which is relative to the cwd of the running process, but there is no
way to make it consistent with the behaviour of the environment
variable.  The process typically is run in $system.git/ directory for
a naked repository, or one level up for a repository with a working
tree, so we just define it to be relative to the objects/ directory
to be different from either ;-).

Later, the dumb transport could be updated to read from info/alternates
and make requests for the repository the repository borrows from.

Signed-off-by: Junio C Hamano <junkio@cox.net>
sha1_file.c