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

[PATCH v2] gitk: add -C <path> commandline parameter to change path

From
Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Date
Nov 5, 2015, 09:19 UTC
Message-ID
<1446715164-19165-1-git-send-email-juhapekka.heikkila@gmail.com>
In-Reply-To
<CAPig+cSs0v88AiQwSrqm-wK7rY4RdykaVf5Axh5jFyij25rfvg@mail.gmail.com>

This patch adds -C (change working directory) parameter to gitk. With this parameter, instead of need to cd to directory with .git folder, one can point the correct folder from commandline.

v2: Adjusted the parameter as per Eric's suggestion. I think
    it now work in similar manner as in many GNU tools as well
    as git itself.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 Documentation/gitk.txt |  7 +++++++
 gitk-git/gitk          | 26 +++++++++++++++++---------
 2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ade002..d194d9b 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -146,6 +146,13 @@ gitk-specific options
 	Select the specified commit after loading the graph.
 	Default behavior is equivalent to specifying '--select-commit=HEAD'.
 
+-C <path>::
+
+	Run as if gitk was started in '<path>' instead of the current
+	working directory. When multiple `-C` options are given, each
+	subsequent non-absolute `-C <path>` is interpreted relative to
+	the preceding `-C <path>`.
+
 Examples
 --------
 gitk v2.6.12.. include/scsi drivers/scsi::
diff --git a/gitk-git/gitk b/gitk-git/gitk
index fcc606e..606474a 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -12279,20 +12279,14 @@ setui $uicolor
 
 setoptions
 
-# check that we can find a .git directory somewhere...
-if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
-    show_error {} . [mc "Cannot find a git repository here."]
-    exit 1
-}
-
 set selecthead {}
 set selectheadid {}
 
 set revtreeargs {}
 set cmdline_files {}
-set i 0
 set revtreeargscmd {}
-foreach arg $argv {
+for {set i 0} {$i < [llength $argv]} {incr i} {
+	set arg [lindex $argv [expr {$i}]]
     switch -glob -- $arg {
 	"" { }
 	"--" {
@@ -12305,11 +12299,25 @@ foreach arg $argv {
 	"--argscmd=*" {
 	    set revtreeargscmd [string range $arg 10 end]
 	}
+	"-C*" {
+		if {[string length $arg] < 3} {
+			incr i
+			cd [lindex $argv [expr {$i}]]
+			continue
+		} else {
+			cd [string range $arg 2 end]
+		}
+	}
 	default {
 	    lappend revtreeargs $arg
 	}
     }
-    incr i
+}
+
+# check that we can find a .git directory somewhere...
+if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
+    show_error {} . [mc "Cannot find a git repository here."]
+    exit 1
 }
 
 if {$selecthead eq "HEAD"} {
-- 
1.9.1
Previous: Eric SunshineNext: Eric Sunshine
Message 4 of 8 in “gitk: add --cwd=path commandline parameter to change path”
  1. 0/1 gitk: add --cwd=path commandline parameter to change pathJuha-Pekka Heikkila, Nov 3, 2015
  2. 1/1 gitk: add --cwd=path commandline parameter to change pathJuha-Pekka Heikkila, Nov 3, 2015
  3. Eric SunshineNov 3, 2015
  4. gitk: add -C <path> commandline parameter to change pathJuha-Pekka Heikkila, Nov 5, 2015
  5. Eric SunshineNov 6, 2015
  6. Juha-Pekka HeikkilaNov 6, 2015
  7. gitk: add -C <path> commandline parameter to change pathJuha-Pekka Heikkila, Nov 9, 2015
  8. Paul MackerrasDec 19, 2015

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.