From: Junio C Hamano <gitster@pobox.com>
To: Tanay Abhra <tanayabh@gmail.com>
Cc: git@vger.kernel.org, Matthieu Moy <Matthieu.Moy@imag.fr>,
Jeff King <peff@peff.net>
Subject: Re: [PATCH/RFC 0/5] add "unset.variable" for unsetting previously set variables
Date: Thu, 02 Oct 2014 12:58:18 -0700 [thread overview]
Message-ID: <xmqqvbo2meg5.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1412256292-4286-1-git-send-email-tanayabh@gmail.com> (Tanay Abhra's message of "Thu, 2 Oct 2014 06:24:47 -0700")
Tanay Abhra <tanayabh@gmail.com> writes:
> 2> It affects both the C git_config() calls and, git config shell
> invocations. Due to this some variables may be absent from the git config -l
> result which might confuse the user.
I am not sure what you mean by this. If you process variable
definitions as they come, and you read
[some]
variable = set to some value initially
...
[unset]
variable = some.variable
...
[some]
variable = set to some other value
then a user might be able to see
$ git config -l
some.variable=set to some value initially
!some.variable
some.variable=set to some other value
(here, I am using an imaginary "!variable.name" to denote "this
variable is unset at this point in the reading sequence").
I would imagine if the result comes from a caching layer, the user
would see
$ git config -l
some.variable=set to some other value
and nothing else. Is that what you are referring to?
I would think that the latter is probably desirable; otherwise we
would need to come up with a way to say "forget about everything we
said about this variable so far" (i.e. my "!some.variable" above)
and also the scripts that parse "git config -l" output need to code
the logic to forget and start afresh.
> 3> I also have an another implementation for this series which just marks the config
> variables instead of deleting them from the configset. This can be used to
> provide two versions of git_config(), one with filtered variables other without
> it.
I do not see a value in the filtered version.
What worries me _more_ is why people may want to put things in
system-wide global, and if it is a wise thing to do to allow users
to override.
We may later want to add ways to mark variables in various ways,
e.g. (thinking aloud)
- "[config] sealed = section.variable" will prevent the variable
from being reset, modified or appended. If an administrator
wants to enforce a certain setting in /etc/gitconfig, she may
mark sensitive variables as cofnig.sealed at the end of the file:
[security]
enforced = true
...
[config]
sealed = security.enforced
and we would ignore
[config]
unset = security.enforce
[security]
enforce = false
written in .git/config or ~/.gitconfig, perhaps?
- "[config] safeInclude = path" will allow a configuration file to
be included safely from the project's working tree. The path
given as the value must be a relative path and it is relative to
the top level of the project's working tree.
- "[config] safe = section.variable" will list variables that can
be included with the config.safeInclude mechanism. Any variable
that is not marked as config.safe that appears in the file
included by the config.safeInclude mechanism will be ignored.
The 'frotz' project might have a .frotz-gitconfig file at the
root level of its working tree that stores this:
[diff]
renames = true
and your .git/config may have
[config]
safe = diff.renames
safeInclude = .frotz-gitconfig
You will not have to worry about a malicious participant
committing a
[diff]
external = rm -fr .
to .frotz-gitconfig and pushing it to the project because you do
not mark diff.external as config.safe in your .git/config
next prev parent reply other threads:[~2014-10-02 19:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-02 13:24 [PATCH/RFC 0/5] add "unset.variable" for unsetting previously set variables Tanay Abhra
2014-10-02 13:24 ` [PATCH/RFC 1/5] config.c : move configset_iter() to an appropriate position Tanay Abhra
2014-10-02 13:24 ` [PATCH/RFC 2/5] make git_config_with_options() to use a configset Tanay Abhra
2014-10-02 13:24 ` [PATCH/RFC 3/5] add "unset.variable" for unsetting previously set variables Tanay Abhra
2014-10-02 13:24 ` [PATCH/RFC 4/5] document the new "unset.variable" variable Tanay Abhra
2014-10-02 13:24 ` [PATCH/RFC 5/5] add tests for checking the behaviour of "unset.variable" Tanay Abhra
2014-10-02 20:09 ` Junio C Hamano
2014-10-02 20:18 ` Tanay Abhra
2014-10-02 20:23 ` Junio C Hamano
2014-10-02 20:35 ` Tanay Abhra
2014-10-02 23:38 ` Junio C Hamano
2014-10-03 7:01 ` Matthieu Moy
2014-10-03 18:25 ` Junio C Hamano
2014-10-03 18:48 ` Junio C Hamano
2014-10-03 19:49 ` Matthieu Moy
2014-10-03 20:12 ` Junio C Hamano
2014-10-06 18:59 ` Tanay Abhra
2014-10-06 19:28 ` Junio C Hamano
2014-10-06 19:43 ` Tanay Abhra
2014-10-02 19:29 ` [PATCH/RFC 0/5] add "unset.variable" for unsetting previously set variables Junio C Hamano
2014-10-02 20:41 ` Jeff King
2014-10-02 19:58 ` Junio C Hamano [this message]
2014-10-07 11:17 ` Jakub Narębski
2014-10-07 16:44 ` Junio C Hamano
2014-10-08 5:46 ` Matthieu Moy
2014-10-08 17:14 ` Junio C Hamano
2014-10-08 18:37 ` Matthieu Moy
2014-10-08 19:52 ` Junio C Hamano
2014-10-10 8:11 ` Jeff King
2014-10-13 18:21 ` 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=xmqqvbo2meg5.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=Matthieu.Moy@imag.fr \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=tanayabh@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.