Re: What commands can and can not be used with bare repositories?
- From
Shawn Pearce <spearce@spearce.org>
- Date
- Dec 31, 2006, 01:57 UTC
- Message-ID
- <20061231015732.GB5082@spearce.org>
- In-Reply-To
- <E1H0poE-0000qd-Ee@candygram.thunk.org>
Theodore Ts'o <tytso@mit.edu> wrote:
> 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
Sorry but 'git merge' cannot be used in a bare repository (no working directory to update during the merge) and 'git merge' can only work on the current repository, which rules out the bare repository.
> 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".
Try "git --bare log". Or "git --git-dir=/path/to log".
Show 6 quoted lines
> 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.
Actually most commands work on a bare repository. Very few don't: the ones that require a working directory. E.g. status/revert/cherry-pick/commit/am/merge/pull. (You can pull from a bare repository, but you cannot run pull *in* a bare repository.)
Show 5 quoted lines
> 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"?
No. Better would be to make git's repository setup logic automatically detect if "." is a Git repository, and if so let the commands that work without a working directory run.
-- Shawn.