From: Jakub Narebski <jnareb@gmail.com>
To: Sergei Organov <osv@javad.com>
Cc: git@vger.kernel.org
Subject: Re: [Newbie] How to *actually* get rid of remote tracking branch?
Date: Tue, 13 Nov 2007 20:17:31 +0100 [thread overview]
Message-ID: <200711132017.31352.jnareb@gmail.com> (raw)
In-Reply-To: <87lk9282nr.fsf@osv.gnss.ru>
Sergei Organov wrote:
> Jakub Narebski <jnareb@gmail.com> writes:
>> Sergei Organov <osv@javad.com> wrote:
>>> Jakub Narebski <jnareb@gmail.com> writes:
>>>> Sergei Organov wrote:
>>>>
>>>>> I want to get rid of origin/pu remote tracking branch. What do I do?
>>>>> I RTFM git-branch. What does it suggest?
>>>>>
>>>>> git branch -d -r origin/pu
>>>>>
>>>>> So far so good. However, it doesn't seem to work in practice:
[...]
>>> fetch = +refs/heads/*:refs/remotes/origin/*
>>
>> [...]
>>> Isn't "git branch -d -r" supposed to do whatever magic is required to
>>> get rid of the remote branch? Currently it seems like a bug introduced
>>> by addition of wildcards refspecs, right?
>>
>> No, the '-r' part translates 'pu' into 'refs/remotes/origin/pu', and
>> the '-d' option removes branch locally. It is meant I think to remove
>> tracking of branches which were dropped in remote, as I think that
>> wildcard refspec does create new branches, but do not delete dropped
>> branches.
>
> Isn't it 'git remote prune <name>' that is meant to remove tracking of
> branches which were dropped in remote?
>
> Anyway, description of '-r' in man git-branch:
>
> -r::
> List or delete (if used with -d) the remote-tracking branches.
>
> Suggests it should be deleted. What's a point to delete it if it will be
> re-created on next fetch anyway?
Once more, with feeling.
By default now git creates on clone the configuration which essentially
says to fetch (get) all "proper" branches the remote has. (By "proper"
I mean branches residing under 'refs/heads/'). That is what the wildcard
spec above says.
Now when the remote repository dropped some branch (branch was deleted
on remote), te corresponding local tracking branch (in
'refs/remotes/origin') does not get deleted.
You can delete _all_ "stale" tracking branches, which means deleting
all tracking branches for which corresponding tracked branches were
deleted on remote. Or you can delete _one_ specified tracking branch
using "git branch -r -d".
Note that you told git to delete tracking branch, not to stop tracking
all branches in remote (as in above wildcard regexp), or stop tracking
some branch (the configuration earlier version of git created on clone,
without wildcard pathspec). So when you ask git to fetch from remote
again, it happily re-creates deleted branch. Note also that git *cannot*
distinguish (yet) between newly created branch on remote, and branch
which tracking branch you have deleted, either by accident or on purpose.
As to documentation: <tongue in cheek> if you cannot distinguish
between tracking branch and tracked branch then it is your damn fault
;-PPPP </tongue in cheek>
Analogy: if you delete file in working area (git branch -d -r), and
checkout again (git fetch), the file will be resurected.
>> So I'm not sure if it is a bug, misfeature or a feature.
>>
>> Can anyone better versed in wildcard refspecs speak up, please?
>
> Yes, please!
I'm most interested if "fetch = !refs/heads/branch" or
"fetch = -refs/heads/branch" works as a way to specify exclusions
from refspec.
P.S. Solution would be to use git-remote or ls-remote and some magic
to generate full list of refspecs instead of wildcard refspec.
P.P.S. We used to have similar problem with the introduction of
wildcard refspec, namely: which branch from all fetched to merge :-)
--
Jakub Narebski
Poland
prev parent reply other threads:[~2007-11-13 19:18 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-13 14:25 [Newbie] How to *actually* get rid of remote tracking branch? Sergei Organov
2007-11-13 14:53 ` Jakub Narebski
2007-11-13 15:39 ` Sergei Organov
2007-11-13 16:01 ` Johannes Schindelin
2007-11-13 17:31 ` Sergei Organov
2007-11-13 18:21 ` Johannes Schindelin
2007-11-13 18:44 ` Sergei Organov
2007-11-17 16:56 ` Jan Hudec
2007-11-13 16:03 ` Jakub Narebski
2007-11-13 17:16 ` Steffen Prohaska
2007-11-13 17:42 ` Jakub Narebski
2007-11-13 17:58 ` osv
2007-11-13 18:17 ` Lars Hjemli
2007-11-13 18:59 ` Sergei Organov
2007-11-13 18:39 ` Steffen Prohaska
2007-11-17 19:12 ` Jan Hudec
2007-11-17 19:51 ` [PATCH] Improve description of git-branch -d and -D in man page Jan Hudec
2007-11-19 9:49 ` Sergei Organov
2007-11-13 17:47 ` [Newbie] How to *actually* get rid of remote tracking branch? Sergei Organov
2007-11-13 20:01 ` Andreas Ericsson
2007-11-13 22:33 ` Andreas Ericsson
2007-11-13 22:42 ` Jakub Narebski
2007-11-13 23:05 ` J. Bruce Fields
2007-11-13 23:56 ` Junio C Hamano
2007-11-14 1:02 ` Andreas Ericsson
2007-11-14 5:48 ` Steffen Prohaska
2007-11-13 17:40 ` Sergei Organov
2007-11-13 19:17 ` Jakub Narebski [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200711132017.31352.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=osv@javad.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.