git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jiang Xin <worldhello.net@gmail.com>
Cc: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
	Git List <git@vger.kernel.org>
Subject: Re: [PATCH v5 1/2] branch: not report invalid tracking branch
Date: Wed, 14 Aug 2013 08:38:01 -0700	[thread overview]
Message-ID: <7vbo50uvty.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <96e0ed4f67eaf058466ead9228cad0dcfe1b5c6a.1376369554.git.worldhello.net@gmail.com> (Jiang Xin's message of "Tue, 13 Aug 2013 12:53:48 +0800")

Jiang Xin <worldhello.net@gmail.com> writes:

> Command "git branch -vv" will report tracking branches, but invalid
> tracking branches are also reported. This is because the function
> stat_tracking_info() can not distinguish whether the upstream branch
> does not exist, or nothing is changed between one branch and its
> upstream.

I am guessing that by "invalid", you used to have another branch
(possibly a remote one) you built a branch on (hence the upstream of
the latter is set to the former) and the former branch no longer
exists.

Shouldn't that case reported a bit more specially?  After doing this:

	git init
        git commit --allow-empty -m initial ;# on master
        git branch topicbase
        git checkout -t -b topic topicbase
        git commit --allow-empty -m topic ;# on topic
        git branch -d topicbase

the branch "topic" _thinks_ it is still based on "topicbase", but of
course "git log @{u}.." will fail.

A few thought-alouds:

 - Perhaps "git branch -d topicbase" should have warned that there
   are some branches that are based on it?  Should it have failed?
   Or should it automatically removed branch.*.merge entries that
   point at it (while warning)?

 - The operation that removes the @{u} of some branch does not have
   to be "git branch -d".  It could be "remote --prune", and it does
   not make much sense to fail that operation, as what is gone from
   the other side is gone, and the point of having remote tracking
   branches is to keep a faithful copy of the observed status of the
   remote.  It implies that failing "git branch -d topicbase" is not
   a good idea.  Also removing the branch.*.merge automatically is
   probably not what the user wants (at least, the name would hint
   something, even after the topicbase branch is gone).

So "git branch -v -v [topic]" would want to still say that topic is
based on topicbranch, even though the latter is gone and there is no
longer a real "building on" relationship.

E.g. before "git branch -d topicbase" we would see something like:

    $ git branch -v -v
      master    e67ac84 initial
    * topic     3fc0f2a [topicbase: ahead 1] topic
      topicbase e67ac84 [master] initial

and after it, we currently see:

    $ git branch -v -v
      master    e67ac84 initial
    * topic     3fc0f2a [topicbase] topic
      topicbase e67ac84 [master] initial

but we may want to say:

    $ git branch -v -v
      master    e67ac84 initial
    * topic     3fc0f2a [topicbase (gone)] topic
      topicbase e67ac84 [master] initial

or something.

In order to distinguish these three cases (i.e. no tracking, with
configured but no longer valid tracking, and with tracking), you
would need more than true/false.

> This patch changes the return value of function stat_tracking_info().
> Only returns false when there is no tracking branch or the tracking
> branch is invalid, otherwise true.

Instead, you would need -1 (with "gone" base), 0 (no base), 1 (with
base).

This is a tangent, but we might want to rename stat_tracking_info().
A branch A building on top of another branch B does not mean A
"tracks" B.  The wording is a source of confusion.

  parent reply	other threads:[~2013-08-14 15:38 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-07 15:42 [RFC] status: show tracking branch even no difference Jiang Xin
2013-08-07 15:50 ` Matthieu Moy
2013-08-07 16:03   ` Jiang Xin
2013-08-08  5:40   ` [PATCH v2] status: always show tracking branch even no change Jiang Xin
2013-08-08 14:49     ` [PATCH v3] " Jiang Xin
2013-08-08 14:49     ` Jiang Xin
2013-08-09 21:18       ` Junio C Hamano
2013-08-10 15:05         ` Jiang Xin
2013-08-12  6:15           ` Junio C Hamano
2013-08-13  4:49             ` Jiang Xin
2013-08-13  4:53               ` [PATCH v5 1/2] branch: not report invalid tracking branch Jiang Xin
2013-08-14 15:21                 ` Junio C Hamano
2013-08-15  2:14                   ` Jiang Xin
2013-08-14 15:38                 ` Junio C Hamano [this message]
2013-08-15 18:11                   ` [PATCH v6 1/3] " Jiang Xin
2013-08-15 18:11                   ` [PATCH v6 2/3] branch: report invalid tracking branch as broken Jiang Xin
2013-08-15 18:38                     ` Junio C Hamano
2013-08-15 22:54                     ` Junio C Hamano
2013-08-16  2:29                       ` [PATCH v7 0/3] some enhancements for reporting branch tracking info Jiang Xin
2013-08-18 19:51                         ` Junio C Hamano
2013-08-19  0:38                           ` Jiang Xin
2013-08-26  7:02                           ` [PATCH v8 0/2] " Jiang Xin
2013-08-26  7:21                             ` Junio C Hamano
2013-08-26  7:02                           ` [PATCH v8 1/2] branch: report invalid tracking branch as gone Jiang Xin
2013-08-26  7:02                           ` [PATCH v8 2/2] status: always show tracking branch even no change Jiang Xin
2013-08-26  7:47                             ` Jeremy Rosen
2013-08-26  8:04                               ` Jiang Xin
2013-08-26 16:08                                 ` Junio C Hamano
     [not found]                       ` <cover.1376620130.git.worldhello.net@gmail.com>
2013-08-16  2:29                         ` [PATCH v7 1/3] branch: not report invalid tracking branch Jiang Xin
2013-08-16  2:29                         ` [PATCH v7 2/3] branch: mark missing tracking branch as gone Jiang Xin
2013-08-21  7:37                           ` Matthieu Moy
2013-08-22  0:00                             ` Jiang Xin
2013-08-16  2:29                         ` [PATCH v7 3/3] status: always show tracking branch even no change Jiang Xin
2013-08-15 18:11                   ` [PATCH v6 " Jiang Xin
2013-08-15 22:56                     ` Junio C Hamano
2013-08-13  4:53               ` [PATCH v5 2/2] " Jiang Xin

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vbo50uvty.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=git@vger.kernel.org \
    --cc=worldhello.net@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).