git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv4 0/5] Be more careful when prunning
@ 2011-10-15  5:04 Carlos Martín Nieto
  2011-10-15  5:04 ` [PATCH 1/5] fetch: free all the additional refspecs Carlos Martín Nieto
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Carlos Martín Nieto @ 2011-10-15  5:04 UTC (permalink / raw)
  To: git; +Cc: Jeff King, Junio C Hamano, mathstuf

Hello,

This version covers Junio's concerns about code and functionality
duplication with the third patch. The order of arguments for
get_stale_heads is not changed anymore in the fourth patch.

The first patch is not that big a deal, but it's better if we're
freeing the refspecs, we might as well free all of them.

The second patch introduces expected failures for the features that
this series fixes.

The third patch is new and moves the logic out of remote_find_tracking
into a query_refspecs function. remote_find_tracking and
apply_refspecs are both changed to be wrappers around this
function. This way, the logic is in one function instead of three
different ones.

The fourth patch changes prune_refs and get_stale_heads so the caller
has to decide which refspecs are the appropriate ones to use. For
example, running

    git fetch --prune origin refs/heads/master:refs/heads/master

doesn't remove the other branches anymore. For a more interesting (and
believable) example, let's take

    git fetch --prune origin refs/heads/b/*:refs/heads/b/*

because you want to prune the refs inside the b/ namespace
only. Currently git will delete all the refs that aren't under that
namespace. With the second patch applied, git won't remove any refs
outside the b/ namespace.

What is probably the most usual case is covered by the fifth patch,
which pretends that a "refs/tags/*:refs/tags/*" refspec was given on
the command-line. That fixes the

    git fetch --prune --tags origin

case. The non-tag refs are kept now.

Cheers,
   cmn

Carlos Martín Nieto (5):
  fetch: free all the additional refspecs
  t5510: add tests for fetch --prune
  remote: separate out the remote_find_tracking logic into
    query_refspecs
  fetch: honor the user-provided refspecs when pruning refs
  fetch: treat --tags like refs/tags/*:refs/tags/* when pruning

 builtin/fetch.c  |   33 ++++++++++++++---
 builtin/remote.c |    3 +-
 remote.c         |  106 +++++++++++++++++++++++++++++------------------------
 remote.h         |    2 +-
 t/t5510-fetch.sh |   50 +++++++++++++++++++++++++
 5 files changed, 139 insertions(+), 55 deletions(-)

-- 
1.7.5.2.354.g349bf

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-10-16  5:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-15  5:04 [PATCHv4 0/5] Be more careful when prunning Carlos Martín Nieto
2011-10-15  5:04 ` [PATCH 1/5] fetch: free all the additional refspecs Carlos Martín Nieto
2011-10-15  5:04 ` [PATCH 2/5] t5510: add tests for fetch --prune Carlos Martín Nieto
2011-10-15  5:04 ` [PATCH 3/5] remote: separate out the remote_find_tracking logic into query_refspecs Carlos Martín Nieto
2011-10-16  4:45   ` Junio C Hamano
2011-10-16  5:10     ` Junio C Hamano
2011-10-15  5:04 ` [PATCH 4/5] fetch: honor the user-provided refspecs when pruning refs Carlos Martín Nieto
2011-10-15  5:04 ` [PATCH 5/5] fetch: treat --tags like refs/tags/*:refs/tags/* when pruning Carlos Martín Nieto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).