threads / patch / 39883

v4gitk: Add a "Copy commit summary" command

Subject: [PATCH v4] gitk: Add a "Copy commit summary" command

## tl;dr

7 messages between Jul 18, 2015 and Aug 13, 2015. Diffs are folded; open one to read it.

replies: 6people: 2as markdown or json

Beat Bolli· Jul 18, 2015, 11:15 UTC · lore

When referring to earlier commits in commit messages or other text, one of the established formats is

    <abbrev-sha> ("<summary>", <author-date>)

Add a "Copy commit summary" command to the context menu that puts this text for the currently selected commit on the clipboard. This makes it easy for our users to create well-formatted commit references.

The <abbrev-sha> is produced with the %h format specifier to make it unique. Its length can be controlled with the gitk preference "Auto-select SHA1 (length)", or, if this preference is set to its default value (40), with the Git config setting core.abbrev.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Cc: Paul Mackerras <paulus@samba.org>
---
Changes since v3:
- consider $autosellen for the --abbrev value
Changes since v2:
- call git show to produce a unique <abbrev-sha>
- use the short date format
Changes since v1:
- drop the "commit " literal in front of the <abbrev-sha>
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 gitk-git/gitk | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
Show changes to gitk-git/gitk +15 −0
diff --git a/gitk-git/gitk b/gitk-git/gitk
index 9a2daf3..d05169a 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -2617,6 +2617,7 @@ proc makewindow {} {
 	{mc "Diff selected -> this" command {diffvssel 1}}
 	{mc "Make patch" command mkpatch}
 	{mc "Create tag" command mktag}
+	{mc "Copy commit summary" command copysummary}
 	{mc "Write commit to file" command writecommit}
 	{mc "Create new branch" command mkbranch}
 	{mc "Cherry-pick this commit" command cherrypick}
@@ -9341,6 +9342,20 @@ proc mktaggo {} {
     mktagcan
 }
 
+proc copysummary {} {
+    global rowmenuid autosellen
+
+    set format "%h (\"%s\", %ad)"
+    set cmd [list git show -s --pretty=format:$format --date=short]
+    if {$autosellen < 40} {
+        lappend cmd --abbrev=$autosellen
+    }
+    set summary [eval exec $cmd $rowmenuid]
+
+    clipboard clear
+    clipboard append $summary
+}
+
 proc writecommit {} {
     global rowmenuid wrcomtop commitinfo wrcomcmd NS
 
-- 
2.1.4
Beat Bolli· Jul 21, 2015, 10:19 UTC · re: Beat Bolli · lore

Re: [PATCH v4] gitk: Add a "Copy commit summary" command

Guys,
can I get a Yea or Nay for this patch?
Does it go in via Paul's gitk repo or directly through Junio?

Thanks, Beat

On 18.07.15 13:15, Beat Bolli wrote:
Show 66 quoted lines
> When referring to earlier commits in commit messages or other text, one
> of the established formats is
> 
>     <abbrev-sha> ("<summary>", <author-date>)
> 
> Add a "Copy commit summary" command to the context menu that puts this
> text for the currently selected commit on the clipboard. This makes it
> easy for our users to create well-formatted commit references.
> 
> The <abbrev-sha> is produced with the %h format specifier to make it
> unique. Its length can be controlled with the gitk preference
> "Auto-select SHA1 (length)", or, if this preference is set to its
> default value (40), with the Git config setting core.abbrev.
> 
> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
> Cc: Paul Mackerras <paulus@samba.org>
> ---
> Changes since v3:
> - consider $autosellen for the --abbrev value
> 
> Changes since v2:
> - call git show to produce a unique <abbrev-sha>
> - use the short date format
> 
> Changes since v1:
> - drop the "commit " literal in front of the <abbrev-sha>
> 
> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
> ---
>  gitk-git/gitk | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/gitk-git/gitk b/gitk-git/gitk
> index 9a2daf3..d05169a 100755
> --- a/gitk-git/gitk
> +++ b/gitk-git/gitk
> @@ -2617,6 +2617,7 @@ proc makewindow {} {
>  	{mc "Diff selected -> this" command {diffvssel 1}}
>  	{mc "Make patch" command mkpatch}
>  	{mc "Create tag" command mktag}
> +	{mc "Copy commit summary" command copysummary}
>  	{mc "Write commit to file" command writecommit}
>  	{mc "Create new branch" command mkbranch}
>  	{mc "Cherry-pick this commit" command cherrypick}
> @@ -9341,6 +9342,20 @@ proc mktaggo {} {
>      mktagcan
>  }
>  
> +proc copysummary {} {
> +    global rowmenuid autosellen
> +
> +    set format "%h (\"%s\", %ad)"
> +    set cmd [list git show -s --pretty=format:$format --date=short]
> +    if {$autosellen < 40} {
> +        lappend cmd --abbrev=$autosellen
> +    }
> +    set summary [eval exec $cmd $rowmenuid]
> +
> +    clipboard clear
> +    clipboard append $summary
> +}
> +
>  proc writecommit {} {
>      global rowmenuid wrcomtop commitinfo wrcomcmd NS
>  
> 
Paul Mackerras· Jul 21, 2015, 10:28 UTC · re: Beat Bolli · lore

Re: [PATCH v4] gitk: Add a "Copy commit summary" command

On Tue, Jul 21, 2015 at 12:19:23PM +0200, Beat Bolli wrote:
Show 5 quoted lines
> Guys,
> 
> can I get a Yea or Nay for this patch?
> 
> Does it go in via Paul's gitk repo or directly through Junio?

I'll put it in. It goes into my repo and from there into Junio's. I'm on vacation and travelling this week, so please be patient.

Regards, Paul.

Beat Bolli· Jul 21, 2015, 10:30 UTC · re: Paul Mackerras · lore

Re: [PATCH v4] gitk: Add a "Copy commit summary" command

On 21.07.15 12:28, Paul Mackerras wrote:
Show 9 quoted lines
> On Tue, Jul 21, 2015 at 12:19:23PM +0200, Beat Bolli wrote:
>> Guys,
>>
>> can I get a Yea or Nay for this patch?
>>
>> Does it go in via Paul's gitk repo or directly through Junio?
> 
> I'll put it in.  It goes into my repo and from there into Junio's.
> I'm on vacation and travelling this week, so please be patient.
No problem, enjoy your vacation!
Beat
Beat Bolli· Aug 11, 2015, 21:00 UTC · re: Beat Bolli · lore

[PATCH] gitk: adjust the menu line numbers to compensate for the new entry

The previous commit[1] added a new context menu entry. Therefore, the line numbers of the folloeing entries need to be incremented when their text or state is changed.

[1] <1437218139-7031-1-git-send-email-dev+git@drbeat.li>,
    http://article.gmane.org/gmane.comp.version-control.git/274161
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Cc: Paul Mackerras <paulus@samba.org>
---
Paul, feel free to squash this commit into my previous one.
Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 gitk-git/gitk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Show changes to gitk-git/gitk +3 −3
diff --git a/gitk-git/gitk b/gitk-git/gitk
index d05169a..bc0e586 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -8877,13 +8877,13 @@ proc rowmenu {x y id} {
     if {$id ne $nullid && $id ne $nullid2} {
 	set menu $rowctxmenu
 	if {$mainhead ne {}} {
-	    $menu entryconfigure 7 -label [mc "Reset %s branch to here" $mainhead] -state normal
+	    $menu entryconfigure 8 -label [mc "Reset %s branch to here" $mainhead] -state normal
 	} else {
-	    $menu entryconfigure 7 -label [mc "Detached head: can't reset" $mainhead] -state disabled
+	    $menu entryconfigure 8 -label [mc "Detached head: can't reset" $mainhead] -state disabled
 	}
-	$menu entryconfigure 9 -state $mstate
 	$menu entryconfigure 10 -state $mstate
 	$menu entryconfigure 11 -state $mstate
+	$menu entryconfigure 12 -state $mstate
     } else {
 	set menu $fakerowmenu
     }
-- 
2.5.0.492.g918e48c
Paul Mackerras· Aug 13, 2015, 07:37 UTC · re: Beat Bolli · lore

Re: [PATCH v4] gitk: Add a "Copy commit summary" command

On Sat, Jul 18, 2015 at 01:15:39PM +0200, Beat Bolli wrote:
Show 15 quoted lines
> When referring to earlier commits in commit messages or other text, one
> of the established formats is
> 
>     <abbrev-sha> ("<summary>", <author-date>)
> 
> Add a "Copy commit summary" command to the context menu that puts this
> text for the currently selected commit on the clipboard. This makes it
> easy for our users to create well-formatted commit references.
> 
> The <abbrev-sha> is produced with the %h format specifier to make it
> unique. Its length can be controlled with the gitk preference
> "Auto-select SHA1 (length)", or, if this preference is set to its
> default value (40), with the Git config setting core.abbrev.
> 
> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
Thanks, applied.
Paul.
Beat Bolli· Aug 13, 2015, 19:02 UTC · re: Paul Mackerras · lore

Re: [PATCH v4] gitk: Add a "Copy commit summary" command

On 13.08.15 09:37, Paul Mackerras wrote:
Show 19 quoted lines
> On Sat, Jul 18, 2015 at 01:15:39PM +0200, Beat Bolli wrote:
>> When referring to earlier commits in commit messages or other text, one
>> of the established formats is
>>
>>     <abbrev-sha> ("<summary>", <author-date>)
>>
>> Add a "Copy commit summary" command to the context menu that puts this
>> text for the currently selected commit on the clipboard. This makes it
>> easy for our users to create well-formatted commit references.
>>
>> The <abbrev-sha> is produced with the %h format specifier to make it
>> unique. Its length can be controlled with the gitk preference
>> "Auto-select SHA1 (length)", or, if this preference is set to its
>> default value (40), with the Git config setting core.abbrev.
>>
>> Signed-off-by: Beat Bolli <dev+git@drbeat.li>
> 
> Thanks, applied.
> 

Please also apply the follow-up patch in this thread [1]. It fixes menu entry numbers that were changed by this patch.

Thanks, Beat

[1] http://article.gmane.org/gmane.comp.version-control.git/275729

← back to recent threads