git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [suggestion] Include commit-ish in git status output
@ 2017-06-15 23:43 Mahmoud Al-Qudsi
  2017-06-15 23:55 ` Samuel Lijin
  2017-06-16 21:41 ` Junio C Hamano
  0 siblings, 2 replies; 6+ messages in thread
From: Mahmoud Al-Qudsi @ 2017-06-15 23:43 UTC (permalink / raw)
  To: git

Hello all,

I hope it is not considered too forward of me for my first post to this list
to be a suggestion on a change to git’s behavior (though not in any
functional manner); but a persistent frustration for me and everyone I’ve
worked with (so, yes, 100% based off of anecdata) has been that the output
of `git status` does not include the commit or commit-ish, and one must
resort to a `git rev-parse HEAD` call.

I apologize unreservedly if this matter has already been discussed and put to
rest; I attempted to search the archives for a reference to this suggestion but
was not met with any matches.

Additionally, if this list is not the right place to make such a suggestion,
then I would appreciate if someone could kindly point me in the correct
direction and apologize for littering.

Thank you kindly,

Mahmoud Al-Qudsi
NeoSmart Technologies

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [suggestion] Include commit-ish in git status output
  2017-06-15 23:43 [suggestion] Include commit-ish in git status output Mahmoud Al-Qudsi
@ 2017-06-15 23:55 ` Samuel Lijin
  2017-06-16  0:10   ` Mahmoud Al-Qudsi
  2017-06-16 21:41 ` Junio C Hamano
  1 sibling, 1 reply; 6+ messages in thread
From: Samuel Lijin @ 2017-06-15 23:55 UTC (permalink / raw)
  To: Mahmoud Al-Qudsi; +Cc: git@vger.kernel.org

On Thu, Jun 15, 2017 at 7:43 PM, Mahmoud Al-Qudsi <mqudsi@neosmart.net> wrote:
> Hello all,
>
> I hope it is not considered too forward of me for my first post to this list
> to be a suggestion on a change to git’s behavior (though not in any
> functional manner); but a persistent frustration for me and everyone I’ve
> worked with (so, yes, 100% based off of anecdata) has been that the output
> of `git status` does not include the commit or commit-ish, and one must
> resort to a `git rev-parse HEAD` call.

Can you elaborate on why you consider this useful specifically?

Do you think adding a $(git rev-parse HEAD) to your PS1 would do the trick?

> I apologize unreservedly if this matter has already been discussed and put to
> rest; I attempted to search the archives for a reference to this suggestion but
> was not met with any matches.
>
> Additionally, if this list is not the right place to make such a suggestion,
> then I would appreciate if someone could kindly point me in the correct
> direction and apologize for littering.

No worries, you're in the right place.

> Thank you kindly,
>
> Mahmoud Al-Qudsi
> NeoSmart Technologies

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [suggestion] Include commit-ish in git status output
  2017-06-15 23:55 ` Samuel Lijin
@ 2017-06-16  0:10   ` Mahmoud Al-Qudsi
  0 siblings, 0 replies; 6+ messages in thread
From: Mahmoud Al-Qudsi @ 2017-06-16  0:10 UTC (permalink / raw)
  To: Samuel Lijin; +Cc: git@vger.kernel.org

On Thu, Jun 15, 2017 at 6:55 PM, Samuel Lijin <sxlijin@gmail.com> wrote:
>
> Can you elaborate on why you consider this useful specifically?

Personally, primary usages of the current commit-ish info are to file bug
reports that include the specific git revision of any given branch that a bug
was observed in/on and to quickly note the currently checked-out revision prior
to pulling the latest changes from an upstream server so that I can rollback
without needing to tag/branch if needed.

But that's not really the reason why I emailed in with this suggestion. I think
semantically the "status" of a working folder is perhaps best summed up as the
sha1 of the commit (or its commit-ish, for short) plus the currently
staged/unstaged changes to the checked out copy of that revision to indicate
the _current_ status (there's that word again!) of the current git directory,
combined with branch information to indicate where any staged changes would be
committed to.

Currently, git shows two-thirds of the information needed to actually describe
the actual working state (status) of a git directory (being the branch and
staged/unchanged changes to HEAD), but does not describe what HEAD is in a
stateless manner.

>
> Do you think adding a $(git rev-parse HEAD) to your PS1 would do the trick?

This is a bit more subjective, but my personal preference is to keep a minimal
shell that retains its behavior regardless of whether I'm cd'd into a git repo
or if I'm transcoding my music collection.

I have no problem needing to execute something to view the commit-ish when it
is desired; this suggestion is merely focusing on what the something should be.
I have no problem using `git rev-parse` for other tasks, but feel that needing
a combination of `git status` and `git rev-parse HEAD` to accurately get a
summary of the current state of a repo is perhaps much.


Thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [suggestion] Include commit-ish in git status output
  2017-06-15 23:43 [suggestion] Include commit-ish in git status output Mahmoud Al-Qudsi
  2017-06-15 23:55 ` Samuel Lijin
@ 2017-06-16 21:41 ` Junio C Hamano
  2017-08-07 21:41   ` Mahmoud Al-Qudsi
  1 sibling, 1 reply; 6+ messages in thread
From: Junio C Hamano @ 2017-06-16 21:41 UTC (permalink / raw)
  To: Mahmoud Al-Qudsi; +Cc: git

Mahmoud Al-Qudsi <mqudsi@neosmart.net> writes:

> I hope it is not considered too forward of me for my first post to this list
> to be a suggestion on a change to git’s behavior (though not in any
> functional manner); but a persistent frustration for me and everyone I’ve
> worked with (so, yes, 100% based off of anecdata) has been that the output
> of `git status` does not include the commit or commit-ish, and one must
> resort to a `git rev-parse HEAD` call.

HEAD is, unless you are about to create a root commit, always a
commit and not other kind of commit-ish, so there is no need to say
"or commit-ish" here.

If this were a proposal to add human-readable information about the
current commit (e.g. the title of the commit), perhaps next to "On
branch my-topic" line, e.g.

    $ git status
    On branch my-topic
    HEAD is at "*.[ch] refactoring: make use of the FREE_AND_NULL() macro"
    Changes to be committed:
       ...

I can understand why sometimes such a piece of information may be
useful to users.  But I am puzzled by your `git rev-parse HEAD`.

Suppose you get frustrated due to lack of HEAD information in the
output from 'git status':

    $ git status
    On branch my-topic
    Changes to be committed:
	...
    $ git rev-parse HEAD

and that was the reason why you resorted to "git rev-parse HEAD"
immediately after asking "git status" about the current state.

That command may say

    $ git rev-parse HEAD
    88ce3ef636b1385e861ec0e9e2155248b999b032

or it may say

    $ git rev-parse HEAD
    e140f7afddcdce2bae062ea1578eac38c744e3a5

What would you do differently, after seeing this random-looking
40-character string, based on what it is?  Do you know recent commit
object names by heart and can tell, immediately when you see 88ce3...,
"ah, that was me fixing foo", as opposed to e140f7a... that is a
different change you can immediately identify?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [suggestion] Include commit-ish in git status output
  2017-06-16 21:41 ` Junio C Hamano
@ 2017-08-07 21:41   ` Mahmoud Al-Qudsi
  2017-08-07 22:53     ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Mahmoud Al-Qudsi @ 2017-08-07 21:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Fri, Jun 16, 2017 at 4:41 PM, Junio C Hamano <gitster@pobox.com> wrote:
>
> HEAD is, unless you are about to create a root commit, always a
> commit and not other kind of commit-ish, so there is no need to say
> "or commit-ish" here.

I apologize for my errant terminology, I thought commitish was what
the abbreviated
SHA1 was called. My proposal was to show either the full SHA1 or the abbreviated
SHA1 in the output of `git status`.

> What would you do differently, after seeing this random-looking
> 40-character string, based on what it is?  Do you know recent commit
> object names by heart and can tell, immediately when you see 88ce3...,
> "ah, that was me fixing foo", as opposed to e140f7a... that is a
> different change you can immediately identify?

I obviously do not know recent commits by heart - the aim is to be
able to easily
copy & paste or visually compare against another value.

Aside from the practical implications of having the commit SHA
included in the output
of `git status`, I have also pointed out my ideological reasons for
it. `git status` currently
prints an incomplete picture of the local repository state, and
without an indication of
_which_ commit HEAD currently is, the remainder of the content
"expires" and is of no
use at some later date.

Looking back, I probably should have started with that. `git status`
gives the status of the
_relative_ current state of the local repository without printing any
information that can be
used as an _absolute_ reference to "frame" the results of the `git
status` command. The
relative state of a repository is useless for any sort of machine or
human analysis, since it
would require the state of both the cached remote and local indices to
be identical to be of
any use.

If I run `git status`, make, commit, and push some changes, then run
`git status` once more,
the output of the command can be identical to the previous run, _even
though the actual
state of the repo has changed_ which is... less than useful and
potentially misleading.

Yes, anyone familiar with git knows that the output of `git status` is
only showing you a summary
of the diff of the working tree vs HEAD. My argument is that all it
would take is another 8 characters
appending to the "On branch xxxx" line to make it an infinitely more
useful command.

Thank you,

Mahmoud Al-Qudsi
NeoSmart Technologies

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [suggestion] Include commit-ish in git status output
  2017-08-07 21:41   ` Mahmoud Al-Qudsi
@ 2017-08-07 22:53     ` Junio C Hamano
  0 siblings, 0 replies; 6+ messages in thread
From: Junio C Hamano @ 2017-08-07 22:53 UTC (permalink / raw)
  To: Mahmoud Al-Qudsi; +Cc: git

Mahmoud Al-Qudsi <mqudsi@neosmart.net> writes:

> Looking back, I probably should have started with that. `git
> status` gives the status of the _relative_ current state of the
> local repository without printing any information that can be used
> as an _absolute_ reference to "frame" the results of the `git
> status` command.

Yeah, that may be a good characterization of what 'git status'
does.  Another thing is that it gives only a summary.  It may say
"this and that path were changed", but it does not exactly say "how"
they were changed.  So from that point of view, even if you know
which absolute reference the status of the working tree and the
index being reported is relative to, it still does not give you
much for you to be able to reproduce the exact state.  That is not
the purpose of the tool---it is to help the user who is aware of
where s/he started from.

> If I run `git status`, make, commit, and push some changes, then
> run `git status` once more, the output of the command can be
> identical to the previous run, _even though the actual state of
> the repo has changed_ which is... less than useful and potentially
> misleading.

I do not quite understand why it is misleading.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-08-07 22:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-15 23:43 [suggestion] Include commit-ish in git status output Mahmoud Al-Qudsi
2017-06-15 23:55 ` Samuel Lijin
2017-06-16  0:10   ` Mahmoud Al-Qudsi
2017-06-16 21:41 ` Junio C Hamano
2017-08-07 21:41   ` Mahmoud Al-Qudsi
2017-08-07 22:53     ` Junio C Hamano

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).