git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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.
Previous: J. Bruce FieldsNext: Theodore Tso
Message 3 of 6 in “What commands can and can not be used with bare repositories?”
  1. Theodore Ts'oDec 31, 2006
  2. J. Bruce FieldsDec 31, 2006
  3. Shawn PearceDec 31, 2006
  4. Theodore TsoDec 31, 2006
  5. Michael S. TsirkinDec 31, 2006
  6. Junio C HamanoDec 31, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.