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