[PATCHv2 0/3] Be more careful when prunning
- From
Carlos Martín Nieto <cmn@elego.de>
- Date
- Oct 6, 2011, 21:21 UTC
- Message-ID
- <1317936107-1230-1-git-send-email-cmn@elego.de>
- In-Reply-To
- <20111006205103.GA1271@erythro.kitwarein.com>
Hello,
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 teaches get_stale_heads to use the user-provided refspecs instead of the ones in the config. 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 third patch, which pretends that a "refs/tags/*:refs/tags/*" refspec was given on the command-line.
Version 1 assumed that a refspec would have its dst filled automatically. This is not the case and was fixed in the second patch.
Cheers, cmn
Carlos Martín Nieto (3):
fetch: free all the additional refspecs
fetch: honor the user-provided refspecs when pruning refs
fetch: treat --tags like refs/tags/*:refs/tags/* when pruningbuiltin/fetch.c | 19 ++++++++++--- builtin/remote.c | 2 +- remote.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++----- remote.h | 3 +- 4 files changed, 84 insertions(+), 14 deletions(-)
-- 1.7.5.2.354.g349bf