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

Re: [ANNOUNCE] GIT 1.5.5.1

From
Dmitry Potapov <dpotapov@gmail.com>
Date
Apr 22, 2008, 00:55 UTC
Message-ID
<20080422005556.GC2631@dpotapov.dyndns.org>
In-Reply-To
<480D2FEE.3010904@nrlssc.navy.mil>
On Mon, Apr 21, 2008 at 07:23:10PM -0500, Brandon Casey wrote:
Show 11 quoted lines
> 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.

Show 32 quoted lines
> 
> > 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
Previous: Brandon CaseyNext: Brandon Casey
Message 4 of 7 in “[ANNOUNCE] GIT 1.5.5.1”
  1. Junio C HamanoApr 21, 2008
  2. Dmitry PotapovApr 21, 2008
  3. Brandon CaseyApr 22, 2008
  4. Dmitry PotapovApr 22, 2008
  5. Brandon CaseyApr 22, 2008
  6. Dmitry PotapovApr 22, 2008
  7. Johannes SixtApr 22, 2008

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.