On Mon, Jun 13, 2016 at 11:14:36PM -0700, Jacob Keller wrote: > On Mon, Jun 13, 2016 at 4:58 PM, Jeff King <peff@xxxxxxxx> wrote: > > This was changed in 10a6cc8 (fetch --prune: Run prune before > > fetching, 2014-01-02), but it seems that nobody in that > > discussion realized we were advertising the "after" > > explicitly. > > > > Signed-off-by: Jeff King <peff@xxxxxxxx> > > --- > > I include myself in that "nobody" of course. :) > > > > Documentation/fetch-options.txt | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt > > index 036edfb..b05a834 100644 > > --- a/Documentation/fetch-options.txt > > +++ b/Documentation/fetch-options.txt > > @@ -52,7 +52,7 @@ ifndef::git-pull[] > > > > -p:: > > --prune:: > > - After fetching, remove any remote-tracking references that no > > + Before fetching, remove any remote-tracking references that no > > longer exist on the remote. Tags are not subject to pruning > > if they are fetched only because of the default tag > > auto-following or due to a --tags option. However, if tags > > What's the difference in behavior due to pruning before instead of > after? Curious. It seems like pruning after would make more sense? See 10a6cc8. :) Basically, you have to prune first to make way for new incoming refs when there is a D/F conflict. The downside is that there is a moment where objects may be unreferenced (e.g., if upstream moved "foo" to "bar", we delete "foo" and _then_ create "bar"). And due to the way refs are stored, we do not keep even a reflog for the deleted ref in the interim. -Peff -- 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