Re: [ANNOUNCE] GIT 1.5.5.1

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

 



On Mon, Apr 21, 2008 at 07:23:10PM -0500, Brandon Casey wrote:
> Dmitry Potapov wrote:
> 
> > Johannes' patch removed this option, which IMHO was a significant user
> > interface improvement.
> 
> Unless I missed something, this option has not been removed. The original
> purpose for its existence (which was to cause git-gc to call git-prune)
> has been removed. The call to git-prune within git-gc will remove _loose_
> unreferenced objects, but _packed_ unreferenced objects are removed by
> repack. The --prune option to git-gc is still used to adjust the call to
> git-repack so that packed unreferenced objects are discarded.

I thought that it had no effect any more, because it had been removed
from the git-gc man page. Now I have looked at the code now, and it seems
the difference between running git gc with and without the prune option
is that with this option the git repack is called with '-a' option while
without it with '-A'. Unfortunately, the '-A' option in the git-repack
is also undocumented, but based on the reading git-repack.sh, you are
right. So, now I wonder wether removing the --prune option from the man
page was the right thing to do.

> 
> > diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
> > index 9758243..c1bf814 100644
> > --- a/Documentation/git-clone.txt
> > +++ b/Documentation/git-clone.txt
> > @@ -65,10 +65,12 @@ OPTIONS
> >  +
> >  *NOTE*: this is a possibly dangerous operation; do *not* use
> >  it unless you understand what it does. If you clone your
> > -repository using this option, then delete branches in the
> > -source repository and then run linkgit:git-gc[1] using the
> > -'--prune' option in the source repository, it may remove
> > -objects which are referenced by the cloned repository.
> > +repository using this option and then delete a branch or use
> > +any other git command that makes any previous existing commit
> > +unreachable, then after some time linkgit:git-gc[1] may remove
> > +unreachable objects, and this will break the cloned repository.
> > +Because some git commands may run git-gc, it may happen at any
> > +time after gc.pruneExpire time since commits became unreachable.
> 
> I agree that something should be said here about shared repositories,
> but I think this wording is a little complicated (disclosure: I also
> submitted some text for this a few weeks ago :). Of course something
> is better than nothing.
> 
> Here's the blurb I submitted if you're interested:
> +repository using this option and then delete branches in the
> +source repository, some objects may become unreferenced (or dangling).
> +These objects may be removed by normal git operations (such as git-commit[1])
> +which automatically call git-gc[1]. If these objects are removed and
> +were referenced by the cloned repository, then the cloned repository
> +will become corrupt.

I like your wording better though I still prefer to mention that
deleting branches is just one of many possible commands that may
create unreferenced commits, i.e. something like that:

 ... repository using this option and then delete branches (or use any
 other git command that makes any existing commit unreferenced) ...


Dmitry
--
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]

  Powered by Linux