git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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/

             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).