From: "Theodore Ts'o" <tytso@mit.edu>
To: git@vger.kernel.org
Subject: What commands can and can not be used with bare repositories?
Date: Sat, 30 Dec 2006 20:48:22 -0500 [thread overview]
Message-ID: <E1H0poE-0000qd-Ee@candygram.thunk.org> (raw)
In order to minimize the amount of files which need to be backed up, I
decided to create an "upstream" repository which contains nothing but
Linus's tree, which I packed into a single pack file, and which I would
then only update every 3-6 months.
The git tree(s) that I would use for Linux hacking would then use the
upstream repository as an alternate source of objects. That way the
"git gc" command is much faster, and it doesn't end up thrashing the
main pack file found in the "upstream" repository (which is currently
about 135 megs). This streamlines my backups a tad (every little bit
helps).
The only real problem with this is that I don't really need to have a
working directory in the "upstream" repository, so I decided to try
using a "bare repository". This is only barely (sorry) documented in
the git Documentation, where in the git-clone manpage there is a
description of how the administrative files end up in the top-level
directory instead of the .git subdirectory.
What isn't documented is what commands actually can deal with a bare
repository. At the moment, it looks like a bare repository can be a
target of a git pull, push, and merge commands, and it can be a source
for a git clone, but that seems to be about it. All other commands,
such as "git log" blow up with the error message "Not a git repository".
This to me seems a bit lame, since why isn't a "bare repository" also a
"git repository"? All of the information is there for "git log" to
work. Commands that require a working directory obviously can't work,
but there are plenty of git commands for which there's no reason why
they shouldn't be able to operate on a bare repository. For example,
"git repack", "git log", "git fetch", etc.
So as a suggestion, it would be good if exactly what you can and can't
use a "bare repository" for were documented. If it really is push,
pull, fetch, and clone, I'll happily submit a patch to enhance the
documentation accordingly.
The next obvious question, though, is *should* that be all that works?
A somewhat squinky hack that works quite nicely is to create a symlink
from . to .git in the bare repository. At this point "git log", "git
fetch", "git repack", etc., all start working. Of course, commands such
as "git status" that involve a working directory will be pretty
confused, but maybe we could fix that. What if we were to change "git
clone --bare" to create the .git -> . symlink, and then add a check to
commands that require a working directory to see if ".git" is a symlink
to ., and if so, give an error message, "operation not supported on bare
repository"?
- Ted
next reply other threads:[~2006-12-31 1:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-31 1:48 Theodore Ts'o [this message]
2006-12-31 1:57 ` What commands can and can not be used with bare repositories? J. Bruce Fields
2006-12-31 1:57 ` Shawn Pearce
2006-12-31 2:12 ` Theodore Tso
2006-12-31 5:32 ` Michael S. Tsirkin
2006-12-31 5:52 ` Junio C Hamano
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=E1H0poE-0000qd-Ee@candygram.thunk.org \
--to=tytso@mit.edu \
--cc=git@vger.kernel.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