* gitk from subdirectory
@ 2007-08-31 4:29 Junio C Hamano
2007-08-31 4:33 ` Junio C Hamano
2007-08-31 5:08 ` Linus Torvalds
0 siblings, 2 replies; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 4:29 UTC (permalink / raw)
To: Paul Mackerras; +Cc: git
Since commit cdaee5db165ba8bae8d3b524950e61666fc36a84 (gitk:
Improve handling of -- and ambiguous arguments), running gitk
from a subdirectory limits the displayed history with the
current directory as the path limiter, because it always passes
the "--" to the underlying git-rev-list.
One obvious side effect of this is if you create a new directory
and cd to it, gitk will not show anything because no commit in
the history has touched the path you are currently in.
I am wondering if this was intended behaviour change. I think
it makes sense to want an easy way to say "what changed stuff in
the directory I am in?" because presumably you are there because
you are interested in stuff in there. But if you hard code "--"
it is not easy to disable that and get the global log.
You always can say "gitk -- ." to limit commits to the current
directory, so it might have been just an oversight. In which
case, the attached patch may be needed to restore the old
behaviour.
Signed-off-by: Junio C Hamano <junkio@pobox.com>
---
gitk | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/gitk b/gitk
index 300fdce..b95b313 100755
--- a/gitk
+++ b/gitk
@@ -92,8 +92,13 @@ proc start_rev_list {view} {
set order "--date-order"
}
if {[catch {
+ if {[llength $viewfiles($view)] == 0} {
+ set rlpaths {}
+ } else {
+ set rlpaths [list "--" $viewfiles($view)]
+ }
set fd [open [concat | git log -z --pretty=raw $order --parents \
- --boundary $viewargs($view) "--" $viewfiles($view)] r]
+ --boundary $viewargs($view) $rlpaths] r]
} err]} {
error_popup "Error executing git rev-list: $err"
exit 1
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: gitk from subdirectory
2007-08-31 4:29 gitk from subdirectory Junio C Hamano
@ 2007-08-31 4:33 ` Junio C Hamano
2007-08-31 5:08 ` Linus Torvalds
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 4:33 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
Junio C Hamano <junkio@pobox.com> writes:
> Since commit cdaee5db165ba8bae8d3b524950e61666fc36a84 (gitk:
> Improve handling of -- and ambiguous arguments), running gitk
> from a subdirectory limits the displayed history with the ...
FYI, I picked up your wish in the kernel list and have been
experimenting with this 5-liner whenever I refer to a commit in
the past:
#!/bin/sh
for commit
do
git show -s --pretty=oneline "$commit"
done |
sed -e 's/^[^ ]* /&(/' -e 's/$/)/'
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: gitk from subdirectory
2007-08-31 4:29 gitk from subdirectory Junio C Hamano
2007-08-31 4:33 ` Junio C Hamano
@ 2007-08-31 5:08 ` Linus Torvalds
2007-08-31 5:29 ` Junio C Hamano
2007-08-31 5:45 ` Junio C Hamano
1 sibling, 2 replies; 9+ messages in thread
From: Linus Torvalds @ 2007-08-31 5:08 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Paul Mackerras, git
On Thu, 30 Aug 2007, Junio C Hamano wrote:
>
> I am wondering if this was intended behaviour change. I think
> it makes sense to want an easy way to say "what changed stuff in
> the directory I am in?" because presumably you are there because
> you are interested in stuff in there. But if you hard code "--"
> it is not easy to disable that and get the global log.
Hmm. My reaction to this would be that it was a mistake to have a
difference between
git log --
and
git log
and that we should instead fix this at the argument parsing level.
And then anybody who depended on the old "--" behaviour can just add a "."
at the end.
That way there are no special cases.
I realize that the "--" behaviour of git log was intentional, but seeing
what it results in I think the intention was good, but stupid.
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: gitk from subdirectory
2007-08-31 5:08 ` Linus Torvalds
@ 2007-08-31 5:29 ` Junio C Hamano
2007-08-31 5:32 ` Junio C Hamano
2007-08-31 5:45 ` Junio C Hamano
1 sibling, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 5:29 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Paul Mackerras, git
Linus Torvalds <torvalds@linux-foundation.org> writes:
> On Thu, 30 Aug 2007, Junio C Hamano wrote:
>>
>> I am wondering if this was intended behaviour change. I think
>> it makes sense to want an easy way to say "what changed stuff in
>> the directory I am in?" because presumably you are there because
>> you are interested in stuff in there. But if you hard code "--"
>> it is not easy to disable that and get the global log.
>
> Hmm. My reaction to this would be that it was a mistake to have a
> difference between
>
> git log --
>
> and
>
> git log
>
> and that we should instead fix this at the argument parsing level.
>
> And then anybody who depended on the old "--" behaviour can just add a "."
> at the end.
>
> That way there are no special cases.
>
> I realize that the "--" behaviour of git log was intentional, but seeing
> what it results in I think the intention was good, but stupid.
I haven't finished analysis yet, but I was reaching the same
conclusion.
v1.2.0 used to limit "git rev-list" to the current working
directory, v1.3.0 and newer does not. But they do when "--" is
given. This makes it impossible to do:
cd Documentation
echo >master
git rev-list master
... get "ambiguous -- which do you mean? rev, or
... limited to path?" error message
git rev-list master --
... I do mean unlimited and dig from 'master'
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: gitk from subdirectory
2007-08-31 5:29 ` Junio C Hamano
@ 2007-08-31 5:32 ` Junio C Hamano
0 siblings, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 5:32 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Paul Mackerras, git
Junio C Hamano <gitster@pobox.com> writes:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
>> I realize that the "--" behaviour of git log was intentional, but seeing
>> what it results in I think the intention was good, but stupid.
>
> I haven't finished analysis yet, but I was reaching the same
> conclusion.
>
> v1.2.0 used to limit "git rev-list" to the current working
> directory, v1.3.0 and newer does not. But they do when "--" is
> given. This makes it impossible to do:
>
> cd Documentation
> echo >master
> git rev-list master
> ... get "ambiguous -- which do you mean? rev, or
> ... limited to path?" error message
> git rev-list master --
> ... I do mean unlimited and dig from 'master'
FWIW bisect points at your commit ae563542bf10fa8c33abd2a354e4b28aca4264d7
(First cut at libifying revlist generation) ;-).
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: gitk from subdirectory
2007-08-31 5:08 ` Linus Torvalds
2007-08-31 5:29 ` Junio C Hamano
@ 2007-08-31 5:45 ` Junio C Hamano
2007-08-31 5:51 ` Junio C Hamano
2007-08-31 7:38 ` Linus Torvalds
1 sibling, 2 replies; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 5:45 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Paul Mackerras, git
"git log" family of commands, even when run from a subdirectory,
do not limit the revision range with the current directory as
the path limiter, but with double-dash without any paths after
it, i.e. "git log --" do so. It was a mistake to have a
difference between "git log --" and "git log" introduced in
commit ae563542bf10fa8c33abd2a354e4b28aca4264d7 (First cut at
libifying revlist generation).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
revision.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/revision.c b/revision.c
index 51fff0e..c193c3e 100644
--- a/revision.c
+++ b/revision.c
@@ -896,7 +896,8 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
continue;
argv[i] = NULL;
argc = i;
- revs->prune_data = get_pathspec(revs->prefix, argv + i + 1);
+ if (argv[i + 1])
+ revs->prune_data = get_pathspec(revs->prefix, argv + i + 1);
seen_dashdash = 1;
break;
}
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: gitk from subdirectory
2007-08-31 5:45 ` Junio C Hamano
@ 2007-08-31 5:51 ` Junio C Hamano
2007-08-31 7:38 ` Linus Torvalds
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 5:51 UTC (permalink / raw)
To: Paul Mackerras; +Cc: Linus Torvalds, git
Junio C Hamano <gitster@pobox.com> writes:
> "git log" family of commands, even when run from a subdirectory,
> do not limit the revision range with the current directory as
> the path limiter, but with double-dash without any paths after
> it, i.e. "git log --" do so. It was a mistake to have a
> difference between "git log --" and "git log" introduced in
> commit ae563542bf10fa8c33abd2a354e4b28aca4264d7 (First cut at
> libifying revlist generation).
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
In case it was not obvious, this patch is meant to make the
previous patch from me to change gitk unneeded.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: gitk from subdirectory
2007-08-31 5:45 ` Junio C Hamano
2007-08-31 5:51 ` Junio C Hamano
@ 2007-08-31 7:38 ` Linus Torvalds
2007-08-31 7:40 ` Junio C Hamano
1 sibling, 1 reply; 9+ messages in thread
From: Linus Torvalds @ 2007-08-31 7:38 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Paul Mackerras, git
On Thu, 30 Aug 2007, Junio C Hamano wrote:
> "git log" family of commands, even when run from a subdirectory,
> do not limit the revision range with the current directory as
> the path limiter, but with double-dash without any paths after
> it, i.e. "git log --" do so. It was a mistake to have a
> difference between "git log --" and "git log" introduced in
> commit ae563542bf10fa8c33abd2a354e4b28aca4264d7 (First cut at
> libifying revlist generation).
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Looks obviously correct.
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: gitk from subdirectory
2007-08-31 7:38 ` Linus Torvalds
@ 2007-08-31 7:40 ` Junio C Hamano
0 siblings, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2007-08-31 7:40 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Paul Mackerras, git
Linus Torvalds <torvalds@linux-foundation.org> writes:
> On Thu, 30 Aug 2007, Junio C Hamano wrote:
>
>> "git log" family of commands, even when run from a subdirectory,
>> do not limit the revision range with the current directory as
>> the path limiter, but with double-dash without any paths after
>> it, i.e. "git log --" do so. It was a mistake to have a
>> difference between "git log --" and "git log" introduced in
>> commit ae563542bf10fa8c33abd2a354e4b28aca4264d7 (First cut at
>> libifying revlist generation).
>>
>> Signed-off-by: Junio C Hamano <gitster@pobox.com>
>
> Looks obviously correct.
>
> Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-08-31 7:40 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-31 4:29 gitk from subdirectory Junio C Hamano
2007-08-31 4:33 ` Junio C Hamano
2007-08-31 5:08 ` Linus Torvalds
2007-08-31 5:29 ` Junio C Hamano
2007-08-31 5:32 ` Junio C Hamano
2007-08-31 5:45 ` Junio C Hamano
2007-08-31 5:51 ` Junio C Hamano
2007-08-31 7:38 ` Linus Torvalds
2007-08-31 7:40 ` Junio C Hamano
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).