[PATCH v2] gitk: add menuitem for file checkout from this or parent commit
- From
Heiko Voigt <hvoigt@hvoigt.net>
- Date
- Sep 30, 2010, 18:29 UTC
- Message-ID
- <20100930182949.GA15412@book.hvoigt.net>
- In-Reply-To
- <AANLkTinn-_Npv4+wGRkS6Sonf1VRV-cEMtHBEtyQeq8O@mail.gmail.com>
This is useful if a user wants to checkout a file from a certain commit. This is equivalent to
git checkout $commit $file
Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net> ---
On Wed, Sep 29, 2010 at 03:48:03PM +0000, Ævar Arnfjörð Bjarmason wrote:
> But as Michele points out you probably shouldn't update these, some > projects do, but it probably makes more sense to leave these updates > up to translators.
Here is an updated version of that patch without the po changes.
gitk | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/gitk b/gitk index 45e3380..c582bb5 100755 --- a/gitk +++ b/gitk @@ -2497,6 +2497,8 @@ proc makewindow {} { {mc "Highlight this only" command {flist_hl 1}} {mc "External diff" command {external_diff}} {mc "Blame parent commit" command {external_blame 1}} + {mc "Checkout from this commit" command {external_checkout}} + {mc "Checkout from parent commit" command {external_checkout 1}} } $flist_menu configure -tearoff 0 @@ -3533,6 +3535,20 @@ proc make_relative {f} { } proc external_blame {parent_idx {line {}}} { + + set cmdline [list git gui blame] + if {$line ne {} && $line > 1} { + lappend cmdline "--line=$line" + } + run_command_on_selected_file $cmdline $parent_idx +} + +proc external_checkout {{parent_idx 0}} { + set cmdline [list git checkout] + run_command_on_selected_file $cmdline $parent_idx +} + +proc run_command_on_selected_file {cmdline parent_idx} { global flist_menu_file gitdir global nullid nullid2 global parentlist selectedline currentid @@ -3548,17 +3564,13 @@ proc external_blame {parent_idx {line {}}} { return } - set cmdline [list git gui blame] - if {$line ne {} && $line > 1} { - lappend cmdline "--line=$line" - } set f [file join [file dirname $gitdir] $flist_menu_file] - # Unfortunately it seems git gui blame doesn't like + # Unfortunately some commands do not like # being given an absolute path... set f [make_relative $f] lappend cmdline $base_commit $f if {[catch {eval exec $cmdline &} err]} { - error_popup "[mc "git gui blame: command failed:"] $err" + error_popup "[mc "$cmdline: command failed:"] $err" } }
-- 1.7.2.2.177.geec0d