From: "Jens Lideström" <jens@lidestrom.se>
To: Johannes Sixt <j6t@kdbg.org>
Cc: "Paul Mackerras [ ]" <paulus@ozlabs.org>, git@vger.kernel.org
Subject: Re: [PATCH 6/9] gitk: add keyboard bind for create and remove branch
Date: Wed, 28 Jun 2023 09:12:50 +0200 [thread overview]
Message-ID: <36b3ce90d4ecc9eb9fa5174aba0cf9d4@lidestrom.se> (raw)
In-Reply-To: <7c73cc47-302d-8706-dd7f-fd034ef8d945@kdbg.org>
>> +[mc "<%s-C> Create branch on selected commit" $M1T]
>
> ... "C"? Which one is it?
"C" is a mistake. Good catch, thanks!
I choose Ctrl-B to avoid a conflict with Ctrl-C for copying text.
> The key binding to remove a branch does not make sense to me. It does
> happen that I have more than one branch on a commit, but there is no
> way
> to select which one to remove via the keyboard. I have to use the
> context menu. This needs more thought IMHO.
My intention is to always remove the first branch head that is displayed
for a single commit in the GUI. This caters to the common use case, with
only one branch for a single commit. If there are multiple branch heads
on a commit and the users don't want to remove the first one then they
need to use the mouse context menu to choose which one to delete.
I could change the implementation to display a dialog that lets the user
choose in case of multiple branch heads.
In that case, should I do that as part of this PR, or as a follow up? I
would prefer to finish this one first.
> At a minimum, separate it out into its own commit.
I'll do so.
/Jens
On 2023-06-28 07:59, Johannes Sixt wrote:
> Am 27.06.23 um 16:41 schrieb Jens Lidestrom via GitGitGadget:
>> From: Jens Lidestrom <jens@lidestrom.se>
>>
>> Signed-off-by: Jens Lidestrom <jens@lidestrom.se>
>> ---
>> gitk-git/gitk | 25 ++++++++++++++++---------
>> 1 file changed, 16 insertions(+), 9 deletions(-)
>>
>> diff --git a/gitk-git/gitk b/gitk-git/gitk
>> index 596977abe89..0d83a72a424 100755
>> --- a/gitk-git/gitk
>> +++ b/gitk-git/gitk
>> @@ -2692,6 +2692,8 @@ proc makewindow {} {
>> bind $ctext <<Selection>> rehighlight_search_results
>> bind . <$M1B-t> {resethead [selected_line_id]}
>> bind . <$M1B-o> {checkout [selected_line_head]
>> [selected_line_id]}
>> + bind . <$M1B-m> {rmbranch [selected_line_head] [selected_line_id]
>> 1}
>> + bind . <$M1B-b> {mkbranch [selected_line_id]}
>
> "b" vs...
>
>> for {set i 1} {$i < 10} {incr i} {
>> bind . <$M1B-Key-$i> [list go_to_parent $i]
>> }
>> @@ -2735,7 +2737,7 @@ proc makewindow {} {
>> makemenu $headctxmenu {
>> {mc "Check out this branch" command {checkout $headmenuhead
>> $headmenuid}}
>> {mc "Rename this branch" command mvbranch}
>> - {mc "Remove this branch" command rmbranch}
>> + {mc "Remove this branch" command {rmbranch $headmenuhead
>> $headmenuid 0}}
>> {mc "Copy branch name" command {clipboard clear; clipboard
>> append $headmenuhead}}
>> }
>> $headctxmenu configure -tearoff 0
>> @@ -3185,6 +3187,8 @@ proc keys {} {
>> [mc "<F5> Update"]
>> [mc "<%s-T> Reset current branch to selected commit" $M1T]
>> [mc "<%s-O> Check out selected commit" $M1T]
>> +[mc "<%s-C> Create branch on selected commit" $M1T]
>
> ... "C"? Which one is it?
>
>> +[mc "<%s-M> Remove selected branch" $M1T]
>> " \
>> -justify left -bg $bgcolor -border 2 -relief groove
>> pack $w.m -side top -fill both -padx 2 -pady 2
>> @@ -9576,13 +9580,13 @@ proc wrcomcan {} {
>> unset wrcomtop
>> }
>>
>> -proc mkbranch {} {
>> - global NS rowmenuid
>> +proc mkbranch {id} {
>> + global NS
>>
>> set top .branchdialog
>>
>> set val(name) ""
>> - set val(id) $rowmenuid
>> + set val(id) $id
>> set val(command) [list mkbrgo $top]
>>
>> set ui(title) [mc "Create branch"]
>> @@ -10054,13 +10058,14 @@ proc readcheckoutstat {fd newhead newheadref
>> newheadid} {
>> }
>> }
>>
>> -proc rmbranch {} {
>> - global headmenuid headmenuhead mainhead
>> +proc rmbranch {head id shouldComfirm} {
>> + global mainhead
>> global idheads
>> -
>> - set head $headmenuhead
>> - set id $headmenuid
>> # this check shouldn't be needed any more...
>> + if {$head eq ""} {
>> + error_popup [mc "Cannot delete a detached head"]
>> + return
>> + }
>> if {$head eq $mainhead} {
>> error_popup [mc "Cannot delete the currently checked-out
>> branch"]
>> return
>> @@ -10070,6 +10075,8 @@ proc rmbranch {} {
>> # the stuff on this branch isn't on any other branch
>> if {![confirm_popup [mc "The commits on branch %s aren't on
>> any other\
>> branch.\nReally delete branch %s?" $head
>> $head]]} return
>> + } elseif {$shouldComfirm} {
>> + if {![confirm_popup [mc "Really delete branch %s?" $head]]}
>> return
>> }
>> nowbusy rmbranch
>> update
>
> The key binding to remove a branch does not make sense to me. It does
> happen that I have more than one branch on a commit, but there is no
> way
> to select which one to remove via the keyboard. I have to use the
> context menu. This needs more thought IMHO. At a minimum, separate it
> out into its own commit.
>
> -- Hannes
next prev parent reply other threads:[~2023-06-28 8:34 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-27 14:41 [PATCH 0/9] gitk: improve keyboard support Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 1/9] gitk: add procedures to get commit info from selected row Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 2/9] gitk: use term "current branch" in gui Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 3/9] gitk: add keyboard bind for reset Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 4/9] gitk: show branch name in reset dialog Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 5/9] gitk: add keyboard bind for checkout Jens Lidestrom via GitGitGadget
2023-07-02 12:10 ` Jens Lideström
2023-06-27 14:41 ` [PATCH 6/9] gitk: add keyboard bind for create and remove branch Jens Lidestrom via GitGitGadget
2023-06-28 5:59 ` Johannes Sixt
2023-06-28 7:12 ` Jens Lideström [this message]
2023-06-28 20:30 ` Johannes Sixt
2023-07-02 11:50 ` Jens Lideström
2023-06-27 14:41 ` [PATCH 7/9] gitk: add keyboard bind to cherry-pick Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 8/9] gitk: focus ok button in reset dialog Jens Lidestrom via GitGitGadget
2023-06-27 14:41 ` [PATCH 9/9] gitk: default select reset hard in dialog Jens Lidestrom via GitGitGadget
2023-06-28 5:46 ` Johannes Sixt
2023-06-28 7:16 ` Jens Lideström
2023-07-02 12:09 ` Jens Lideström
2023-06-28 6:09 ` [PATCH 0/9] gitk: improve keyboard support Johannes Sixt
2023-06-28 7:01 ` Jens Lideström
2023-06-28 17:32 ` Jens Lideström
2023-06-28 20:32 ` Johannes Sixt
2023-07-02 12:28 ` Jens Lideström
2023-07-03 18:45 ` [PATCH v2 00/10] " Jens Lidestrom via GitGitGadget
2023-07-03 18:45 ` [PATCH v2 01/10] gitk: add procedures to get commit info from selected row Jens Lidestrom via GitGitGadget
2023-07-03 18:45 ` [PATCH v2 02/10] gitk: use term "current branch" in gui Jens Lidestrom via GitGitGadget
2023-07-03 18:45 ` [PATCH v2 03/10] gitk: add keyboard bind for reset command Jens Lidestrom via GitGitGadget
2023-07-03 18:45 ` [PATCH v2 04/10] gitk: show branch name in reset dialog Jens Lidestrom via GitGitGadget
2023-07-03 18:45 ` [PATCH v2 05/10] gitk: add keyboard bind for checkout command Jens Lidestrom via GitGitGadget
2023-07-05 17:29 ` Johannes Sixt
2023-07-08 12:09 ` Jens Lideström
2023-07-03 18:45 ` [PATCH v2 06/10] gitk: add keyboard bind for remove branch command Jens Lidestrom via GitGitGadget
2023-07-05 20:00 ` Johannes Sixt
2023-07-08 12:09 ` Jens Lideström
2023-07-03 18:45 ` [PATCH v2 07/10] gitk: add keyboard bind for cherry-pick command Jens Lidestrom via GitGitGadget
2023-07-05 20:07 ` Johannes Sixt
2023-07-08 12:09 ` Jens Lideström
2023-07-03 18:45 ` [PATCH v2 08/10] gitk: add keyboard bind for create branch command Jens Lidestrom via GitGitGadget
2023-07-05 20:02 ` Johannes Sixt
2023-07-03 18:45 ` [PATCH v2 09/10] gitk: improve keyboard convenience in reset dialog Jens Lidestrom via GitGitGadget
2023-07-05 19:52 ` Johannes Sixt
2023-07-03 18:45 ` [PATCH v2 10/10] gitk: allow checkout of remote branch Jens Lidestrom via GitGitGadget
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=36b3ce90d4ecc9eb9fa5174aba0cf9d4@lidestrom.se \
--to=jens@lidestrom.se \
--cc=git@vger.kernel.org \
--cc=j6t@kdbg.org \
--cc=paulus@ozlabs.org \
/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).