Junio C Hamano wrote:
> wt-status.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/wt-status.c b/wt-status.c
> index bf84a86..403d48d 100644
> --- a/wt-status.c
> +++ b/wt-status.c
> @@ -1176,7 +1176,11 @@ void wt_status_print(struct wt_status *s)
> branch_name += 11;
> else if (!strcmp(branch_name, "HEAD")) {
> branch_status_color = color(WT_STATUS_NOBRANCH, s);
> - if (state.detached_from) {
> +
> + if (state.rebase_in_progress) {
> + on_what = _("HEAD detached at ");
> + branch_name = state.onto;
> + } else if (state.detached_from) {
> unsigned char sha1[20];
> branch_name = state.detached_from;
Good. You have proposed a solution to the problem. However, it is
wrong for the following reasons:
1. It shows a pseudo "HEAD detached at" message. Everywhere else,
when the user sees a "HEAD detached at $committish" message, git
rev-parse $committish = git rev-parse HEAD. A rebase-in-progress
seems to be the only exception, and the user has no idea this is
happened.
2. The following no longer updates status:
# in the middle of a rebase
$ git reset @~2
The constant "HEAD detached at $onto" message is misleading and Bad.
Besides, wasn't this the primary usecase you wanted?
You previously wrote:
> *1* One thing I could think of is to start sightseeing or (more
> realistically) manually bisecting at a given release point,
> reset the detached HEAD around several times, and then want to
> be reminded where the session started from. I do not think it
> is particularly a very good example, though.
Whether the HEAD is detached by bisect or rebase is irrelevant.
3. The problem is not unique to rebase at all; yet you have
special-cased it. If this isn't a band-aid, what is? The larger
problem, as I have stated previously, is that 'git status' output
depends on the _implementations_ of various commands (do they write a
"checkout: " message to the reflog or not?). Therefore, a future
contributor who updates a command to write more sensible reflog
messages will have to apply a similar band-aid.
If you want to take the band-aid approach, I think this is the right
way to do it:
diff --git a/wt-status.c b/wt-status.c
index bf84a86..99c55e3 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -1182,7 +1182,7 @@ void wt_status_print(struct wt_status *s)
if (!get_sha1("HEAD", sha1) &&
!hashcmp(sha1, state.detached_sha1))
on_what = _("HEAD detached at ");
- else
+ else if (!state.rebase_in_progress)
on_what = _("HEAD detached from ");
} else {
branch_name = "";
You have already mentioned that there is a topic cooking to improve
this first-line in the case of rebase, so this regression from a
senseless message isn't a problem.
The problem with this bad-aid, as with all band aids, is that this
will soon explode to become else if(!state.rebase_in_progress &&
!state.bisect_in_progress && ....) when people update those scripts.
If you don't want to go with the band-aid, I have no choice but to
smudge the first-line.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html