Previously, the Git->repository()->config('non-existent.key')
evaluated to as true in a vector context. Return an empty list
instead.
---
I don't know whether this breaks anything, because I don't use most of
the git perl scripts. I can't imagine that there is a script that relies
on the fact that config('non-existent.key') actually returns (''), in an
array context. Is this a reasonable change?
perl/Git.pm | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/perl/Git.pm b/perl/Git.pm
index e9dc706..ffcc541 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -508,7 +508,7 @@ sub config {
my $E = shift;
if ($E->value() == 1) {
# Key not found.
- return undef;
+ return wantarray ? () : undef;
} else {
throw $E;
}--
1.5.3.5.565.gf0b83-dirty
[Cc: Dan Zwell [off-list ref], Petr Baudis [off-list ref],
git@vger.kernel.org]
Dan Zwell wrote:
Previously, the Git->repository()->config('non-existent.key')
evaluated to as true in a vector context. Return an empty list
instead.
Nice.
By the way, what do you think about changing Git.pm config handling
to the 'eager' one used currently by gitweb, namely reading all the
config to hash, and later getting config values from hash instead of
calling git-config? Or at least make it an option?
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Jakub Narebski wrote:
By the way, what do you think about changing Git.pm config handling
to the 'eager' one used currently by gitweb, namely reading all the
config to hash, and later getting config values from hash instead of
calling git-config? Or at least make it an option?
That seems appropriate, though it may be a slight trade-off between
complexity and efficiency. I don't think it's strictly necessary, at
least for git-add--interactive. My experience is that the nine calls to
config() (that I am adding) do not slow down the program from a user
perspective (though I haven't tested on a slower computer).
The big reason to do it would be if you wanted to convert gitweb to use
the standard config() call from Git.pm. Because right now, config()
isn't efficient, but it probably doesn't need to be.
Dan
On Saturday, 17 November 2007, Dan Zwell wrote:
Jakub Narebski wrote:
quoted
By the way, what do you think about changing Git.pm config handling
to the 'eager' one used currently by gitweb, namely reading all the
config to hash, and later getting config values from hash instead of
calling git-config? Or at least make it an option?
That seems appropriate, though it may be a slight trade-off between
complexity and efficiency. I don't think it's strictly necessary, at
least for git-add--interactive.
On one hand it adds a bit of complexity, as you have to check if
config was parsed (and either parse, as it is done now in gitweb,
or perhaps fallback on calling git-config per variable), and you
have to do type checking / conversion to bool and int (size suffixes!)
in Perl, and deal with single-value and multi-value variables.
On the other hand I think that error handling will be simplier.
My experience is that the nine calls to
config() (that I am adding) do not slow down the program from a user
perspective (though I haven't tested on a slower computer).
The problem is not so much with a slower computer, as operating
systems with inefficient, slow fork implementation, like MS Windows
and (if I remember) correctly MacOS X.
But it is true that the config() performance is needed less for desktop
(commands like git-add--interactive) than for web (gitweb for example).
The big reason to do it would be if you wanted to convert gitweb to use
the standard config() call from Git.pm. Because right now, config()
isn't efficient, but it probably doesn't need to be.
There are two reasons against convering gitweb to use Git.pm, at least
for now.
First, it makes installing gitweb harder, as one would have to install
(and perhaps compile) Git.pm to use gitweb. It would add additional
dependency. But perhaps this is not as much a problem as I think...
Second, gitweb code contain in few places pipelines (e.g. tar.gz and
tar.bz2 snapshot pipelines); even if some of them can be eliminated,
some will be added (syntax highlighting in blob view). Git.pm doesn't
as of yet support this...
It would be nice if Git.pm could take advantage of libification project,
and git have fast bindings not only for Python but also for Perl. If I
remember correctly the early attempts to use "git library" directly
were abandoned becaue they were not sufficiently portable, and the
fallback-to-Perl idea was thought too complex to implement...
--
Jakub Narebski
Poland