1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-05 08:47:56 +01:00
Find a file
Jeff King d1f884986d git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
The "git -c var=value" option stuffs the config value into
$GIT_CONFIG_PARAMETERS, so that sub-processes can see it.
When the config is later read via git_config() or similar,
we parse it back out of that variable.  The parsing end is a
little bit picky; it assumes that each entry was generated
with sq_quote_buf(), and that there is no extraneous
whitespace.

On the generating end, we are careful to append to an
existing $GIT_CONFIG_PARAMETERS variable if it exists.
However, our test for "should we add a space separator" is
too liberal: it will add one even if the environment
variable exists but is empty. As a result, you might end up
with:

   GIT_CONFIG_PARAMETERS=" 'core.foo=bar'"

which the parser will choke on.

This was hard to trigger in older versions of git, since we
only set the variable when we had something to put into it
(though you could certainly trigger it manually). But since
14111fc (git: submodule honor -c credential.* from command
line, 2016-02-29), the submodule code will unconditionally
put the $GIT_CONFIG_PARAMETERS variable into the environment
of any operation in the submodule, whether it is empty or
not. So any of those operations which themselves use "git
-c" will generate the unparseable value and fail.

We can easily fix it by catching this case on the generating
side. While we're adding a test, let's also check that
multiple layers of "git -c" work, which was previously not
tested at all.

Reported-by: Shin Fan <shinfan@google.com>
Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Tested-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-03-23 10:04:58 -07:00
block-sha1 sha1: provide another level of indirection for the SHA-1 functions 2015-11-05 10:35:11 -08:00
builtin git: submodule honor -c credential.* from command line 2016-03-01 12:24:22 -08:00
compat Merge branch 'js/mingw-tests' 2016-02-17 10:13:29 -08:00
contrib Merge branch 'pw/completion-stash' into maint 2016-02-22 13:10:20 -08:00
Documentation Eighth batch for 2.8 2016-02-24 13:31:57 -08:00
ewah
git-gui git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
gitk-git Merge git://ozlabs.org/~paulus/gitk 2015-12-21 08:56:16 -08:00
gitweb gitweb: squelch "uninitialized value" warning 2016-01-12 13:21:15 -08:00
mergetools mergetool: reorder vim/gvim buffers in three-way diffs 2016-02-12 10:14:09 -08:00
perl git-svn: apply "svn.pathnameencoding" before URL encoding 2016-02-22 02:29:36 +00:00
po l10n: ko.po: Add Korean translation 2016-01-03 19:07:29 +09:00
ppc sha1: provide another level of indirection for the SHA-1 functions 2015-11-05 10:35:11 -08:00
refs Merge branch 'jk/ref-cache-non-repository-optim' 2016-02-03 14:16:07 -08:00
t git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS 2016-03-23 10:04:58 -07:00
templates
vcs-svn
xdiff merge-file: ensure that conflict sections match eol style 2016-01-27 10:21:53 -08:00
.gitattributes
.gitignore gitignore: ignore generated test-fake-ssh executable 2016-02-08 12:18:51 -08:00
.mailmap
.travis.yml travis-ci: explicity use container-based infrastructure 2016-01-26 10:44:28 -08:00
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
archive.h
argv-array.c
argv-array.h
attr.c
attr.h
base85.c
bisect.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
bisect.h
blob.c
blob.h
branch.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
branch.h
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
bundle.h
cache-tree.c Merge branch 'nd/ita-cleanup' into maint 2016-02-22 13:10:21 -08:00
cache-tree.h
cache.h Merge branch 'jc/am-i-v-fix' 2016-02-24 13:26:01 -08:00
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h
column.c
column.h
combine-diff.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
command-list.txt
commit-slab.h
commit.c Merge branch 'rs/pop-commit' into maint 2015-12-11 11:14:13 -08:00
commit.h
config.c git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS 2016-03-23 10:04:58 -07:00
config.mak.in
config.mak.uname mingw: do not trust MSYS2's MinGW gettext.sh 2016-01-26 13:42:59 -08:00
configure.ac Merge branch 'rc/configure-use-libs-when-checking-a-lib' into maint 2015-12-01 17:19:06 -05:00
connect.c connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
connect.h connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
connected.c
connected.h
convert.c Merge branch 'ls/clean-smudge-override-in-config' 2016-02-10 14:20:07 -08:00
convert.h ls-files: add eol diagnostics 2016-01-18 19:48:43 -08:00
copy.c
COPYING
credential-cache--daemon.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
credential-cache.c
credential-store.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
credential.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
date.c
decorate.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
decorate.h
delta.h
diff-delta.c
diff-lib.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
diff-no-index.c Merge branch 'nd/diff-with-path-params' into maint 2016-02-05 14:54:15 -08:00
diff.c Merge branch 'nd/diff-with-path-params' into maint 2016-02-05 14:54:15 -08:00
diff.h Merge branch 'nd/diff-with-path-params' into maint 2016-02-05 14:54:15 -08:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir.c dir.c: don't exclude whole dir prematurely 2016-02-15 15:32:33 -08:00
dir.h dir.c: support marking some patterns already matched 2016-02-15 15:32:32 -08:00
editor.c
entry.c
environment.c Merge branch 'cc/untracked' 2016-02-10 14:20:06 -08:00
exec_cmd.c
exec_cmd.h
fast-import.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
fetch-pack.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
fetch-pack.h
fmt-merge-msg.h
fsck.c Merge branch 'bc/object-id' 2015-12-10 12:36:13 -08:00
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'js/dirname-basename' into maint 2016-02-05 14:54:17 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl git-cvsserver.perl: fix typo 2016-02-17 10:00:53 -08:00
git-difftool--helper.sh
git-difftool.perl
git-filter-branch.sh Merge branch 'jk/filter-branch-no-index' into maint 2016-02-05 14:54:13 -08:00
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh
git-p4.py git-p4.py: add support for filetype change 2016-01-13 09:06:54 -08:00
git-parse-remote.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh rebase -i: remember merge options beyond continue actions 2015-12-11 12:44:44 -08:00
git-rebase--merge.sh
git-rebase.sh Merge branch 'jk/ok-to-fail-gc-auto-in-rebase' into maint 2016-02-05 14:54:13 -08:00
git-relink.perl
git-remote-testgit.sh
git-request-pull.sh
git-send-email.perl Merge branch 'ew/send-email-mutt-alias-fix' into maint 2016-02-05 14:54:09 -08:00
git-sh-i18n.sh
git-sh-setup.sh
git-stash.sh
git-submodule.sh git: submodule honor -c credential.* from command line 2016-03-01 12:24:22 -08:00
git-svn.perl
GIT-VERSION-GEN Git 2.7.2 2016-02-22 13:12:56 -08:00
git-web--browse.sh
git.c Merge branch 'nd/clear-gitenv-upon-use-of-alias' 2016-02-17 10:13:31 -08:00
git.rc
git.spec.in
gpg-interface.c
gpg-interface.h
graph.c
graph.h
grep.c
grep.h
hashmap.c
hashmap.h
help.c
help.h
hex.c
http-backend.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
http-fetch.c
http-push.c http-push: stop using name_path 2016-02-12 12:51:05 -08:00
http-walker.c
http.c Merge branch 'ce/https-public-key-pinning' 2016-02-24 13:25:58 -08:00
http.h Merge branch 'ew/force-ipv4' 2016-02-24 13:25:54 -08:00
ident.c Merge branch 'da/user-useconfigonly' 2016-02-17 10:13:31 -08:00
imap-send.c
INSTALL
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
line-log.h
line-range.c
line-range.h
list-objects.c list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
list-objects.h list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
ll-merge.c
ll-merge.h
lockfile.c
lockfile.h
log-tree.c format-patch: add an option to suppress commit hash 2015-12-15 10:03:40 -08:00
log-tree.h
mailinfo.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
mailinfo.h
mailmap.c
mailmap.h
Makefile Merge branch 'js/mingw-tests' 2016-02-17 10:13:29 -08:00
match-trees.c
merge-blobs.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
merge-blobs.h
merge-recursive.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
merge-recursive.h
merge.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
mergesort.c
mergesort.h
name-hash.c
notes-cache.c notes: allow treeish expressions as notes ref 2016-01-12 15:10:01 -08:00
notes-cache.h
notes-merge.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
notes-merge.h
notes-utils.c notes: allow treeish expressions as notes ref 2016-01-12 15:10:01 -08:00
notes-utils.h
notes.c Merge branch 'jk/notes-merge-from-anywhere' 2016-02-03 14:15:59 -08:00
notes.h Merge branch 'jk/notes-merge-from-anywhere' 2016-02-03 14:15:59 -08:00
object.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
object.h Remove get_object_hash. 2015-11-20 08:02:05 -05:00
pack-bitmap-write.c list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
pack-bitmap.c list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
pack-bitmap.h
pack-check.c verify_pack: do not ignore return value of verification function 2015-12-01 18:19:35 -05:00
pack-objects.c
pack-objects.h
pack-revindex.c pack-revindex: store entries directly in packed_git 2015-12-21 14:36:28 -08:00
pack-revindex.h pack-revindex: store entries directly in packed_git 2015-12-21 14:36:28 -08:00
pack-write.c
pack.h
pager.c Merge branch 'jc/am-i-v-fix' 2016-02-24 13:26:01 -08:00
parse-options-cb.c
parse-options.c parse-options: allow -h as a short option 2015-11-20 08:02:07 -05:00
parse-options.h parse-options: allow -h as a short option 2015-11-20 08:02:07 -05:00
patch-delta.c
patch-ids.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
patch-ids.h
path.c Merge branch 'js/dirname-basename' into maint 2016-02-05 14:54:17 -08:00
pathspec.c
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
pretty.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
prio-queue.c
prio-queue.h
progress.c
progress.h
prompt.c
prompt.h
quote.c quote: implement sq_quotef() 2016-03-01 12:24:15 -08:00
quote.h quote: implement sq_quotef() 2016-03-01 12:24:15 -08:00
reachable.c list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
reachable.h
read-cache.c Merge branch 'nd/ita-cleanup' into maint 2016-02-22 13:10:21 -08:00
README
ref-filter.c tag: do not show ambiguous tag names as "tags/foo" 2016-01-26 13:34:10 -08:00
ref-filter.h
reflog-walk.c Merge branch 'dk/reflog-walk-with-non-commit' into maint 2016-02-05 14:54:10 -08:00
reflog-walk.h
refs.c Merge branch 'bc/object-id' 2015-12-10 12:36:13 -08:00
refs.h create_symref: modernize variable names 2015-12-29 10:33:09 -08:00
RelNotes Start preparing for 2.7.2 2016-02-17 10:05:44 -08:00
remote-curl.c Merge branch 'sp/remote-curl-ssl-strerror' 2016-02-24 13:25:56 -08:00
remote-testsvn.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
remote.c Merge branch 'aw/push-force-with-lease-reporting' 2016-02-10 14:20:08 -08:00
remote.h http: allow selection of proxy authentication method 2016-01-26 10:53:09 -08:00
replace_object.c
rerere.c Merge branch 'jk/rerere-xsnprintf' 2016-02-17 10:13:33 -08:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
revision.h list-objects: pass full pathname to callbacks 2016-02-12 12:51:17 -08:00
run-command.c Merge branch 'nd/clear-gitenv-upon-use-of-alias' 2016-01-20 11:43:26 -08:00
run-command.h run-command: add an asynchronous parallel child processor 2015-12-16 12:06:08 -08:00
send-pack.c Convert struct ref to use object_id. 2015-11-20 08:02:05 -05:00
send-pack.h
sequencer.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
sequencer.h
server-info.c Convert struct object to object_id 2015-11-20 08:02:05 -05:00
setup.c Merge branch 'nd/dwim-wildcards-as-pathspecs' 2016-02-24 13:25:52 -08:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c clone/sha1_file: read info/alternates with strbuf_getline() 2016-01-15 10:34:53 -08:00
sha1_name.c Merge branch 'nd/dwim-wildcards-as-pathspecs' 2016-02-24 13:25:52 -08:00
shallow.c Merge branch 'rs/pop-commit' into maint 2015-12-11 11:14:13 -08:00
shell.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
sigchain.h sigchain: add command to pop all common signals 2015-12-16 12:06:08 -08:00
split-index.c
split-index.h
strbuf.c Merge branch 'jc/strbuf-getline' 2016-01-28 16:10:14 -08:00
strbuf.h Merge branch 'jc/strbuf-getline' 2016-01-28 16:10:14 -08:00
streaming.c
streaming.h
string-list.c
string-list.h
submodule-config.c push: add recurseSubmodules config option 2015-11-20 08:02:07 -05:00
submodule-config.h push: add recurseSubmodules config option 2015-11-20 08:02:07 -05:00
submodule.c submodules: allow parallel fetching, add tests and documentation 2015-12-16 12:06:08 -08:00
submodule.h Merge branch 'sb/submodule-parallel-fetch' 2016-01-12 15:16:54 -08:00
symlinks.c
tag.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
tag.h
tar.h
tempfile.c
tempfile.h
test-chmtime.c
test-config.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-dump-split-index.c
test-dump-untracked-cache.c test-dump-untracked-cache: don't modify the untracked cache 2016-01-27 12:30:07 -08:00
test-fake-ssh.c mingw: fix t5601-clone.sh 2016-01-27 14:27:19 -08:00
test-genrandom.c
test-hashmap.c
test-index-version.c
test-line-buffer.c
test-match-trees.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
test-mergesort.c
test-mktemp.c
test-parse-options.c
test-path-utils.c test-path-utils: use xsnprintf in favor of strcpy 2016-02-08 14:42:32 -08:00
test-prio-queue.c
test-read-cache.c
test-regex.c
test-revision-walking.c
test-run-command.c run-command: add an asynchronous parallel child processor 2015-12-16 12:06:08 -08:00
test-scrap-cache-tree.c
test-sha1-array.c test-sha1-array: read command stream with strbuf_getline() 2016-01-15 10:35:08 -08:00
test-sha1.c
test-sha1.sh test-sha1.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
test-sigchain.c
test-string-list.c
test-submodule-config.c
test-subprocess.c
test-svn-fe.c
test-urlmatch-normalization.c
test-wildmatch.c
thread-utils.c
thread-utils.h
trace.c
trace.h
trailer.c interpret-trailers: add option for in-place editing 2016-01-14 12:22:17 -08:00
trailer.h interpret-trailers: add option for in-place editing 2016-01-14 12:22:17 -08:00
transport-helper.c Merge branch 'ew/force-ipv4' 2016-02-24 13:25:54 -08:00
transport.c Merge branch 'ew/force-ipv4' 2016-02-24 13:25:54 -08:00
transport.h connect & http: support -4 and -6 switches for remote operations 2016-02-12 11:34:14 -08:00
tree-diff.c
tree-walk.c do_compare_entry: use already-computed path 2016-01-05 13:39:46 -08:00
tree-walk.h do_compare_entry: use already-computed path 2016-01-05 13:39:46 -08:00
tree.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
tree.h
unicode_width.h
unimplemented.sh unimplemented.sh: use the $( ... ) construct for command substitution 2015-12-27 15:33:13 -08:00
unix-socket.c
unix-socket.h
unpack-trees.c unpack-trees: fix accidentally quadratic behavior 2016-01-22 13:03:10 -08:00
unpack-trees.h
update_unicode.sh
upload-pack.c Remove get_object_hash. 2015-11-20 08:02:05 -05:00
url.c
url.h
urlmatch.c
urlmatch.h
usage.c
userdiff.c
userdiff.h
utf8.c
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
walker.h
wildmatch.c
wildmatch.h
worktree.c worktree.c: fix indentation 2016-01-19 11:22:29 -08:00
worktree.h
wrap-for-bin.sh
wrapper.c Merge branch 'js/fopen-harder' into maint 2016-02-05 14:54:11 -08:00
write_or_die.c
ws.c
wt-status.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

////////////////////////////////////////////////////////////////

	Git - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public
License version 2 (some parts of it are under different licenses,
compatible with the GPLv2). It was originally written by Linus
Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/giteveryday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help
commandname".

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is
installed).

Many Git online resources are accessible from http://git-scm.com/
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org (read
Documentation/SubmittingPatches for instructions on patch submission).
To subscribe to the list, send an email with just "subscribe git" in
the body to majordomo@vger.kernel.org. The mailing list archives are
available at http://news.gmane.org/gmane.comp.version-control.git/,
http://marc.info/?l=git and other archival sites.

The maintainer frequently sends the "What's cooking" reports that
list the current status of various development topics to the mailing
list.  The discussion following them give a good reference for
project status, development direction and remaining tasks.