From: Junio C Hamano <gitster@pobox.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Bruce Stephens <bruce.stephens@isode.com>, git@vger.kernel.org
Subject: Re: [OT] Your branch is ahead of the tracked remote branch 'origin/master' by 50 commits.
Date: Tue, 01 Jul 2008 12:16:49 -0700 [thread overview]
Message-ID: <7vlk0lmn32.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20080701101414.GG31309@elte.hu> (Ingo Molnar's message of "Tue, 1 Jul 2008 12:14:15 +0200")
Ingo Molnar <mingo@elte.hu> writes:
> * Bruce Stephens <bruce.stephens@isode.com> wrote:
> ...
>> It feels logical for "git status" to offer the same information (when
>> the information is appropriate).
>>
>> [...]
>
> i have a tip-curr (shortcut: 'tc') scriptlet to answer the "where I am
> amongst 100+ branches" question:
Perhaps like this, but be warned this is untested except for compilation
testing.
builtin-checkout.c | 39 +++++++++++++++++++++------------------
wt-status.c | 22 ++++++++++++++++++++++
2 files changed, 43 insertions(+), 18 deletions(-)
diff --git a/builtin-checkout.c b/builtin-checkout.c
index 93ea69b..2cbc39c 100644
--- a/builtin-checkout.c
+++ b/builtin-checkout.c
@@ -305,7 +305,7 @@ static int merge_working_tree(struct checkout_opts *opts,
return 0;
}
-static void report_tracking(struct branch_info *new, struct checkout_opts *opts)
+void report_tracking(FILE *fp, const char *name, struct commit *commit)
{
/*
* We have switched to a new branch; is it building on
@@ -321,7 +321,7 @@ static void report_tracking(struct branch_info *new, struct checkout_opts *opts)
int rev_argc;
int num_ours, num_theirs;
const char *remote_msg;
- struct branch *branch = branch_get(new->name);
+ struct branch *branch = branch_get(name);
/*
* Nothing to report unless we are marked to build on top of
@@ -339,7 +339,7 @@ static void report_tracking(struct branch_info *new, struct checkout_opts *opts)
return;
theirs = lookup_commit(sha1);
- ours = new->commit;
+ ours = commit;
if (!hashcmp(sha1, ours->object.sha1))
return; /* we are the same */
@@ -380,22 +380,25 @@ static void report_tracking(struct branch_info *new, struct checkout_opts *opts)
}
if (!num_theirs)
- printf("Your branch is ahead of the tracked%s branch '%s' "
- "by %d commit%s.\n",
- remote_msg, base,
- num_ours, (num_ours == 1) ? "" : "s");
+ fprintf(fp,
+ "Your branch is ahead of the tracked%s branch '%s' "
+ "by %d commit%s.\n",
+ remote_msg, base,
+ num_ours, (num_ours == 1) ? "" : "s");
else if (!num_ours)
- printf("Your branch is behind the tracked%s branch '%s' "
- "by %d commit%s,\n"
- "and can be fast-forwarded.\n",
- remote_msg, base,
- num_theirs, (num_theirs == 1) ? "" : "s");
+ fprintf(fp,
+ "Your branch is behind the tracked%s branch '%s' "
+ "by %d commit%s,\n"
+ "and can be fast-forwarded.\n",
+ remote_msg, base,
+ num_theirs, (num_theirs == 1) ? "" : "s");
else
- printf("Your branch and the tracked%s branch '%s' "
- "have diverged,\nand respectively "
- "have %d and %d different commit(s) each.\n",
- remote_msg, base,
- num_ours, num_theirs);
+ fprintf(fp,
+ "Your branch and the tracked%s branch '%s' "
+ "have diverged,\nand respectively "
+ "have %d and %d different commit(s) each.\n",
+ remote_msg, base,
+ num_ours, num_theirs);
}
static void update_refs_for_switch(struct checkout_opts *opts,
@@ -441,7 +444,7 @@ static void update_refs_for_switch(struct checkout_opts *opts,
remove_branch_state();
strbuf_release(&msg);
if (!opts->quiet && (new->path || !strcmp(new->name, "HEAD")))
- report_tracking(new, opts);
+ report_tracking(stdout, new->name, new->commit);
}
static int switch_branches(struct checkout_opts *opts, struct branch_info *new)
diff --git a/wt-status.c b/wt-status.c
index 28c9e63..e02171a 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -315,6 +315,26 @@ static void wt_status_print_verbose(struct wt_status *s)
run_diff_index(&rev, 1);
}
+/* NEEDSWORK */
+extern void report_tracking(FILE *fp, const char *name, struct commit *commit);
+
+static void wt_status_print_tracking(struct wt_status *s)
+{
+ unsigned char sha1[20];
+ struct commit *commit;
+
+ assert(s->branch && !s->is_initial);
+
+ if (prefixcmp(s->branch, "refs/heads/") ||
+ !resolve_ref(s->branch, sha1, 1, NULL))
+ return;
+ commit = lookup_commit(sha1);
+ if (!commit)
+ return;
+ fprintf(s->fp, "# ");
+ report_tracking(s->fp, s->branch + 11, commit);
+}
+
void wt_status_print(struct wt_status *s)
{
unsigned char sha1[20];
@@ -333,6 +353,8 @@ void wt_status_print(struct wt_status *s)
}
color_fprintf(s->fp, color(WT_STATUS_HEADER), "# ");
color_fprintf_ln(s->fp, branch_color, "%s%s", on_what, branch_name);
+ if (!s->is_initial)
+ wt_status_print_tracking(s);
}
if (s->is_initial) {
next prev parent reply other threads:[~2008-07-01 19:18 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-01 9:13 [OT] Your branch is ahead of the tracked remote branch 'origin/master' by 50 commits Ingo Molnar
2008-07-01 9:26 ` Bruce Stephens
2008-07-01 10:14 ` Ingo Molnar
2008-07-01 11:41 ` SZEDER Gábor
2008-07-01 12:47 ` Jakub Narebski
2008-07-01 19:16 ` Junio C Hamano [this message]
2008-07-02 7:50 ` [PATCH 0/3] Making remote tracking statistics available to other tools Junio C Hamano
2008-07-03 16:26 ` Olivier Marin
2008-07-03 19:07 ` Junio C Hamano
2008-07-03 19:25 ` Olivier Marin
2008-07-02 7:51 ` [PATCH 1/3] Refactor "tracking statistics" code used by "git checkout" Junio C Hamano
2008-07-02 7:52 ` [PATCH 2/3] git-status: show the remote tracking statistics Junio C Hamano
2008-07-02 7:52 ` [PATCH 3/3] git-branch -v: " Junio C Hamano
2008-07-02 8:23 ` Johannes Sixt
2008-07-02 8:33 ` Karl Hasselström
2008-07-02 14:44 ` Brian Gernhardt
2008-07-02 8:42 ` Junio C Hamano
2008-07-02 15:44 ` Johannes Schindelin
2008-07-01 12:44 ` [OT] Your branch is ahead of the tracked remote branch 'origin/master' by 50 commits Jakub Narebski
2008-07-01 9:32 ` Junio C Hamano
2008-07-01 10:07 ` Ingo Molnar
2008-07-01 11:16 ` Miklos Vajna
2008-07-01 11:22 ` Ingo Molnar
2008-07-01 11:41 ` Miklos Vajna
2008-07-01 23:55 ` Junio C Hamano
2008-07-04 8:35 ` Pedro Melo
2008-07-01 12:46 ` Mikael Magnusson
2008-07-01 18:01 ` Björn Steinbrink
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=7vlk0lmn32.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=bruce.stephens@isode.com \
--cc=git@vger.kernel.org \
--cc=mingo@elte.hu \
/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 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).