git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[GITK PATCH] gitk: add menuitem for file checkout from selected or parent commit

From
Heiko Voigt <hvoigt@hvoigt.net>
Date
Sep 28, 2010, 20:03 UTC
Message-ID
<20100928200344.GA12843@book.hvoigt.net>

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>
---
 gitk     |   24 ++++++++++++++++++------
 po/de.po |    6 ++++++
 po/es.po |    6 ++++++
 po/fr.po |    6 ++++++
 po/hu.po |    6 ++++++
 po/it.po |    6 ++++++
 po/ja.po |    6 ++++++
 po/ru.po |    6 ++++++
 po/sv.po |    6 ++++++
 9 files changed, 66 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"
     }
 }
 
diff --git a/po/de.po b/po/de.po
index bd194a3..8cfd299 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1276,3 +1276,9 @@ msgstr "Falsche Kommandozeilen-Parameter für gitk:"
 #: gitk:11587
 msgid "Command line"
 msgstr "Kommandozeile"
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
diff --git a/po/es.po b/po/es.po
index 0471dd0..a3092e0 100644
--- a/po/es.po
+++ b/po/es.po
@@ -909,3 +909,9 @@ msgstr "Argumentos incorrectos a Gitk:"
 #: gitk:10170
 msgid "Command line"
 msgstr "Línea de comandos"
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 5370ddc..e58cbdd 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1252,3 +1252,9 @@ msgstr "Arguments invalides pour gitk :"
 #: gitk:11249
 msgid "Command line"
 msgstr "Ligne de commande"
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
diff --git a/po/hu.po b/po/hu.po
index 7262b61..9237d2a 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1293,3 +1293,9 @@ msgstr "Parancs sor"
 #~ msgstr ""
 #~ "Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n"
 #~ "Gitk futtatásához legalább Tcl/Tk 8.4 szükséges."
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
diff --git a/po/it.po b/po/it.po
index a730d63..6e0b76f 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1274,3 +1274,9 @@ msgstr "Gitk: argomenti errati:"
 #: gitk:11587
 msgid "Command line"
 msgstr "Linea di comando"
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
diff --git a/po/ja.po b/po/ja.po
index 4f47051..b47faab 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1253,3 +1253,9 @@ msgstr "gitkへの不正な引数:"
 #: gitk:11316
 msgid "Command line"
 msgstr "コマンド行"
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
diff --git a/po/ru.po b/po/ru.po
index c3d0285..f136ec1 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1083,3 +1083,9 @@ msgstr "Неправильные аргументы для gitk:"
 msgid "Command line"
 msgstr "Командная строка"
 
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
+
diff --git a/po/sv.po b/po/sv.po
index 386763a..b079016 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1295,3 +1295,9 @@ msgstr "Kommandorad"
 
 #~ msgid "Name"
 #~ msgstr "Namn"
+
+msgid "Checkout from this commit"
+msgstr ""
+
+msgid "Checkout from parent commit"
+msgstr ""
-- 
1.7.2.2.177.geec0d
Next: Ævar Arnfjörð Bjarmason
Message 1 of 8 in “gitk: add menuitem for file checkout from selected or parent commit”
  1. gitk: add menuitem for file checkout from selected or parent commitHeiko Voigt, Sep 28, 2010
  2. Ævar Arnfjörð BjarmasonSep 28, 2010
  3. Heiko VoigtSep 29, 2010
  4. Ævar Arnfjörð BjarmasonSep 29, 2010
  5. gitk: add menuitem for file checkout from this or parent commitHeiko Voigt, Sep 30, 2010
  6. Michele BallabioSep 29, 2010
  7. Paul MackerrasDec 11, 2010
  8. gitk: add menuitem for file checkout from this or parent commithvoigt, Dec 13, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.