threads / discuss / 36526

Reference to a commit inside a commit message

Subject: Reference to a commit inside a commit message

## tl;dr

7 messages between Apr 28, 2014 and Apr 30, 2014.

replies: 6people: 4as markdown or json

enzodicicco@gmail.com· Apr 28, 2014, 18:35 UTC · lore

Hi to all, I'm trying to figure out what is the best way (and if it exists) to link a message of a commit to another commit. I start by saying I don't know Git very well so maybe this question can be very trival for someone but I've googled and searched into the Mailing List with little success.

The goal would be to be able to refer to a specific commit (or a set of it) through its Hash in order to justify some actions done in a commit, mantaining the message compact.
Obviously I don't mean to put the raw Hash, rather I would be happy to find a way to automatize the visits and the insertions of the commits inside the message.
What I mean is  what Gitweb do, naturally adapted for the use of Git through shell.
For example, thinking about it, I've imagined to add this feature to `git commit`:
    git commit --see-also <commit1> <commit2> ...
that adds a label (like "Signed-off-by") such as:
    See-also:
        1: <commit 1>
        2: <commit 2>
        ...
And, to other side, `git show` could have a feature like this:
    git show <commit> --see-also 1
that simply call `git show <commit-1>`.

So, there is a better way to obtain a behaviour like this? Has ever been discussed the possibility of implementing a similar feature? and There is a way to handle a similar behaviour through Hooks?

Thanks to all, NaN

Jonathan Nieder· Apr 28, 2014, 19:55 UTC · re: enzodicicco@gmail.com · lore

Re: Reference to a commit inside a commit message

Hi,
enzodicicco@gmail.com wrote:
> Hi to all, I'm trying to figure out what is the best way (and if it
> exists) to link a message of a commit to another commit.
[...]
> Obviously I don't mean to put the raw Hash,
Why not?
See the output of
	git log --grep='In commit '
and
	git log --grep='In v'
in git.git or linux.git for some examples of current practice.

Curious, Jonathan

Vincenzo di Cicco· Apr 28, 2014, 20:43 UTC · re: Jonathan Nieder · lore

Re: Reference to a commit inside a commit message

Thank you very much
> Why not?

the reason is to avoid mistakes with the hash. An automatic approach can verify the existence of the commit.

Show 7 quoted lines
> See the output of
>
>         git log --grep='In commit '
>
> and
>
>         git log --grep='In v'

I've just tried the commands and noticed that this can be a common practice. This increases my curiosity to know if there is a better way to handle this situation, if you know other thread where was discussed, please tell me the link.

Thanks, NaN

Jeff King· Apr 29, 2014, 03:41 UTC · re: enzodicicco@gmail.com · lore

Re: Reference to a commit inside a commit message

On Mon, Apr 28, 2014 at 08:35:52PM +0200, enzodicicco@gmail.com wrote:
> For example, thinking about it, I've imagined to add this feature to `git commit`:
> 
>     git commit --see-also <commit1> <commit2> ...

Jonathan mentioned already that we typically just do this by hand[1], though look on the list for the "interpret-trailers" work being done by Christian. It would make it very easy to add:

  See-also: ....

lines to the bottom of your commit using a command like the above. I don't know if it would be easy to convert refnames into commit ids with it or not. You'd have to look.

-Peff
[1] I do not know about others, but I typically cut and paste from
    another terminal, and use the following alias in my config:
      [alias]
      ll = "!git --no-pager log -1 --pretty='tformat:%h (%s, %ad)' --date=short"
Felipe Contreras· Apr 29, 2014, 07:57 UTC · re: Jeff King · lore

Re: Reference to a commit inside a commit message

Jeff King wrote:
Show 5 quoted lines
> [1] I do not know about others, but I typically cut and paste from
>     another terminal, and use the following alias in my config:
> 
>       [alias]
>       ll = "!git --no-pager log -1 --pretty='tformat:%h (%s, %ad)' --date=short"
I have:
  [alias]
  short = show --quiet --format='%C(auto)%h (%s)%C(reset)'
-- 
Felipe Contreras
Vincenzo di Cicco· Apr 29, 2014, 23:23 UTC · re: Felipe Contreras · lore

Re: Reference to a commit inside a commit message

Thanks to all. With interpret-trailers has been easy to make a simple script, also it checks if the Hash passed is a valid Object. I haven't found a simple way to mantain the blank line above the output of interpet-trailers (not even through cleanup). Follows the script, maybe could be usefull for somebody:

#!/bin/sh
for i in $*
do
    git show $i &> /dev/null
    if [ $? = 0 ]
    then
        trailers+=" see-also=$i"
    fi
done
msg=$(cat /dev/null | ../git-interpret-trailers $trailers)
git commit -m "$msg" -e
Vincenzo di Cicco· Apr 30, 2014, 18:29 UTC · lore

Re: Reference to a commit inside a commit message

> You should use the latest version of the patch series (v11), because the
> blank line is now automatically added.

Yes interpret-trailers add the blank line, but when call `git commit -m "$MSG" -e` it isn't displayed. I think this happens due to the default value of 'cleanup' option of git-commit that is 'strip' (in my case) when the message is edited. I can't use neither 'verbatim' nor 'whitespace' otherwise all the comments will be displayed.

> And using ':' instead of '=' after "see-also" would be more standard.
Thanks I've updated my script and now I'm using the latest interpret-trailers.
NaN

← back to recent threads