On Mon, Jun 13, 2016 at 11:17 PM, Jeff King <peff@xxxxxxxx> wrote: > 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 Ah that makes sense, thanks. Regards, Jake -- 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