Thread (8 messages) 8 messages, 3 authors, 2016-06-15

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

From: Eric Sunshine <hidden>
Date: 2016-06-15 23:07:12

On Thu, Nov 5, 2015 at 4:19 AM, Juha-Pekka Heikkila
[off-list ref] wrote:
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.
Thanks, -C makes more sense than --cwd, and is more consistent with
other commands.

You'll want to also address the patch to Paul Mackerras (I've cc:'d
him) since he's the gitk maintainer, and Junio pulls gitk from him.
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.
This sort of explanation of of changes between versions is definitely
welcome, but should be placed below the "---" line just under your
sign-off so that it does not become part of the permanent commit
message.
Signed-off-by: Juha-Pekka Heikkila <redacted>
---
You'd place your commentary about changes between patch versions here.
More below...
quoted hunk ↗ jump to hunk
 Documentation/gitk.txt |  7 +++++++
 gitk-git/gitk          | 26 +++++++++++++++++---------
 2 files changed, 24 insertions(+), 9 deletions(-)
diff --git 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}]]
What happens if no arguments follow -C (that is, the entire
command-line is "gitk -C")? Will this simply run "cd" with no argument
or with an empty argument or error out or what? Should there be a
check for this condition?
+                       continue
Why does this 'continue' need to be here? Am I missing something obvious?
+               } 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help