Re: git-1.5 and bare repos

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Florian La Roche <laroche@xxxxxxxxxx> writes:

> Here a patch to correctly allow also bare
> repositories.
>
> ...
>
> --- git-sh-setup.sh	2007-03-05 03:15:33.000000000 +0100
> +++ git-sh-setup	2007-03-13 17:08:22.000000000 +0100
> @@ -49,8 +49,8 @@
>  
>  require_work_tree () {
>  	test $(is_bare_repository) = false &&
> -	test $(git-rev-parse --is-inside-git-dir) = false ||
> -	die "fatal: $0 cannot be used without a working tree."
> +	{ test $(git-rev-parse --is-inside-git-dir) = false ||
> +	  die "fatal: $0 cannot be used without a working tree."; }
>  }
>  
>  if [ -z "$LONG_USAGE" ]

Changing the meaning of the function and call the change "to
correctly allow" needs a bit more explanation.  The function is
supposed to be called by certain operations to make sure that
they are not run from anywhere other than inside a working tree
associated with the repository, and that is why it says "we are
happy when the repository is not bare and we are not inside .git
directory --- otherwise we are unhappy".

I suspect that you found a command that calls this function,
when it should also be usable in a bare repository.  If that is
the case, the caller needs to be fixed, perhaps not to call this
function at all, or perhaps call it only before performing an
operation that _needs_ working tree (I do not think of an
example offhand, but it is conceivable that a command can work
fine in a bare repository under an option but requires a working
tree with a different option).  Changing the meaning of this
function so that it is always happy with bare repository means
you are breaking the assumption of other callers.

For example, git-fetch in a bare repository is fine.  It is an
operation to update the object database and (optionally) advance
the refs used to track the other side.  On the other hand,
git-pull, git-reset nor git-checkout are not.  As they are meant
to update the working tree from the repository, running them in
a bare repository, which lacks the working tree by definition,
does not make sense.  That is why they use this function.

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]