From: Frank Lichtenheld <frank@lichtenheld.de>
To: Git Mailing List <git@vger.kernel.org>
Cc: Junio C Hamano <junkio@cox.net>, Petr Baudis <pasky@suse.cz>
Subject: [RFC] Implementing git config handling in Git.pm
Date: Mon, 21 May 2007 00:59:54 +0200 [thread overview]
Message-ID: <20070520225953.GK4085@planck.djpig.de> (raw)
Hi.
A week ago or so when I presented my GITCVS::config patch I mentioned
that we should better implement most of it in Git.pm. I would like to
do so but get a bit of input first on how to implement it.
Targets:
1) We should offer to parse the config only once since that is
a huge performance gain if the caller wants to use several
values from it.
2) The parsing should be complete and safe.
3) If at all possible, we should not have to implement a
complete parser in Perl, since that is just needless
code to maintain.
Possible Solutions:
1) Call git-config.
Pro: Easy to implement
Contra: Violates at least target 2. Neither git-config --get nor
git-config --list offer a complete and safe view on the config
file. Just try including = in a subsection name (--list) or newlines in
a value (both) to see what I mean.
2) Extend git-config to give a machine parsable output and then
proceed with solution 1
Pro: Still reasonably easy to implement (?). Would benefit
other scripts, too.
Contra: Neither the fastest nor the most flexible
solution.
3) Try to use the C code from config.c directly.
Pro: Probably the fastest solution due to avoiding the
forks.
Contra: Probably a bit more complex (any XS experts here?),
both to implement and to maintain.
4) Implement an own git config parser in Perl
Pro: Might be actually easier than 3 and faster than 2
Contra: See target 3
I would go for solution 2. Any reason to prefer one of the
others (or one I didn't even think of)?
Gruesse,
--
Frank Lichtenheld <frank@lichtenheld.de>
www: http://www.djpig.de/
next reply other threads:[~2007-05-20 23:00 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-20 22:59 Frank Lichtenheld [this message]
2007-05-20 23:14 ` [RFC] Implementing git config handling in Git.pm Petr Baudis
2007-05-21 17:46 ` [PATCH] config: Add --quoted option to produce machine-parsable output Frank Lichtenheld
2007-05-21 18:03 ` Junio C Hamano
2007-05-21 18:46 ` Johannes Schindelin
2007-05-21 21:18 ` Junio C Hamano
2007-05-21 21:53 ` Johannes Schindelin
2007-05-21 19:54 ` Jan Hudec
2007-05-21 20:58 ` Frank Lichtenheld
2007-05-21 22:37 ` Jakub Narebski
2007-06-17 23:25 ` [PATCH/RFC] config: Add --null/-z option for null-delimted output Frank Lichtenheld
2007-06-19 0:55 ` Johannes Schindelin
2007-06-19 1:16 ` Jakub Narebski
2007-06-19 1:17 ` Frank Lichtenheld
2007-06-19 1:32 ` Johannes Schindelin
2007-06-19 1:37 ` Junio C Hamano
2007-06-19 2:12 ` Frank Lichtenheld
2007-06-19 11:09 ` Johannes Schindelin
2007-06-19 11:19 ` David Kastrup
2007-06-19 11:50 ` Jakub Narebski
2007-06-19 15:21 ` Frank Lichtenheld
2007-06-19 15:57 ` Johannes Schindelin
2007-06-19 17:26 ` Frank Lichtenheld
2007-06-20 10:31 ` Johannes Schindelin
2007-06-20 16:54 ` Jakub Narebski
2007-06-21 23:56 ` Jakub Narebski
2007-06-22 12:02 ` Frank Lichtenheld
2007-06-25 14:03 ` [PATCH 1/3] config: Complete documentation of --get-regexp Frank Lichtenheld
2007-06-25 14:03 ` [PATCH 2/3] config: Change output of --get-regexp for valueless keys Frank Lichtenheld
2007-06-27 2:14 ` Junio C Hamano
2007-06-25 14:03 ` [PATCH 3/3] config: Add --null/-z option for null-delimted output Frank Lichtenheld
2007-06-25 23:29 ` Jakub Narebski
2007-06-26 10:47 ` Frank Lichtenheld
2007-06-27 2:14 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070520225953.GK4085@planck.djpig.de \
--to=frank@lichtenheld.de \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=pasky@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).