Skip to content
Navigation Menu
Toggle navigation
Sign in
In this repository
All GitHub Enterprise
↵
Jump to
↵
No suggested jump to results
In this repository
All GitHub Enterprise
↵
Jump to
↵
In this organization
All GitHub Enterprise
↵
Jump to
↵
In this repository
All GitHub Enterprise
↵
Jump to
↵
Sign in
Reseting focus
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
git-mirror
/
git
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
0
Pull requests
0
Actions
Projects
0
Security
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security
Insights
Files
3f26309
Documentation
block-sha1
builtin
compat
contrib
git-gui
git_remote_helpers
gitk-git
gitweb
mergetools
perl
po
ppc
t
lib-gpg
lib-httpd
perf
t0200
t0202
t1013
t1509
t3900
t4013
t4020
t4034
t4100
t4101
t4109
t4110
t4135
t4252
t5100
t5515
t7500
t8005
t9110
t9111
t9115
t9121
t9126
t9135
t9136
t9150
t9151
t9153
t9154
t9161
t9601
t9602
t9603
t9700
valgrind
.gitattributes
.gitignore
Makefile
README
aggregate-results.sh
annotate-tests.sh
diff-lib.sh
gitweb-lib.sh
lib-credential.sh
lib-cvs.sh
lib-diff-alternative.sh
lib-gettext.sh
lib-git-daemon.sh
lib-git-p4.sh
lib-git-svn.sh
lib-gpg.sh
lib-httpd.sh
lib-pager.sh
lib-patch-mode.sh
lib-prereq-FILEMODE.sh
lib-read-tree-m-3way.sh
lib-read-tree.sh
lib-rebase.sh
lib-t6000.sh
lib-terminal.sh
t0000-basic.sh
t0001-init.sh
t0002-gitfile.sh
t0003-attributes.sh
t0004-unwritable.sh
t0005-signals.sh
t0006-date.sh
t0010-racy-git.sh
t0020-crlf.sh
t0021-conversion.sh
t0022-crlf-rename.sh
t0023-crlf-am.sh
t0024-crlf-archive.sh
t0025-crlf-auto.sh
t0026-eol-config.sh
t0030-stripspace.sh
t0040-parse-options.sh
t0050-filesystem.sh
t0055-beyond-symlinks.sh
t0060-path-utils.sh
t0061-run-command.sh
t0070-fundamental.sh
t0081-line-buffer.sh
t0090-cache-tree.sh
t0100-previous.sh
t0101-at-syntax.sh
t0200-gettext-basic.sh
t0201-gettext-fallbacks.sh
t0202-gettext-perl.sh
t0203-gettext-setlocale-sanity.sh
t0204-gettext-reencode-sanity.sh
t0205-gettext-poison.sh
t0300-credentials.sh
t0301-credential-cache.sh
t0302-credential-store.sh
t0303-credential-external.sh
t1000-read-tree-m-3way.sh
t1001-read-tree-m-2way.sh
t1002-read-tree-m-u-2way.sh
t1003-read-tree-prefix.sh
t1004-read-tree-m-u-wf.sh
t1005-read-tree-reset.sh
t1006-cat-file.sh
t1007-hash-object.sh
t1008-read-tree-overlay.sh
t1009-read-tree-new-index.sh
t1010-mktree.sh
t1011-read-tree-sparse-checkout.sh
t1012-read-tree-df.sh
t1013-loose-object-format.sh
t1020-subdirectory.sh
t1021-rerere-in-workdir.sh
t1050-large.sh
t1051-large-conversion.sh
t1100-commit-tree-options.sh
t1200-tutorial.sh
t1300-repo-config.sh
t1301-shared-repo.sh
t1302-repo-version.sh
t1303-wacky-config.sh
t1304-default-acl.sh
t1305-config-include.sh
t1400-update-ref.sh
t1401-symbolic-ref.sh
t1402-check-ref-format.sh
t1410-reflog.sh
t1411-reflog-show.sh
t1412-reflog-loop.sh
t1420-lost-found.sh
t1450-fsck.sh
t1500-rev-parse.sh
t1501-worktree.sh
t1502-rev-parse-parseopt.sh
t1503-rev-parse-verify.sh
t1504-ceiling-dirs.sh
t1505-rev-parse-last.sh
t1506-rev-parse-diagnosis.sh
t1507-rev-parse-upstream.sh
t1508-at-combinations.sh
t1509-root-worktree.sh
t1510-repo-setup.sh
t1511-rev-parse-caret.sh
t2000-checkout-cache-clash.sh
t2001-checkout-cache-clash.sh
t2002-checkout-cache-u.sh
t2003-checkout-cache-mkdir.sh
t2004-checkout-cache-temp.sh
t2005-checkout-index-symlinks.sh
t2006-checkout-index-basic.sh
t2007-checkout-symlink.sh
t2008-checkout-subdir.sh
t2009-checkout-statinfo.sh
t2010-checkout-ambiguous.sh
t2011-checkout-invalid-head.sh
t2012-checkout-last.sh
t2013-checkout-submodule.sh
t2014-switch.sh
t2015-checkout-unborn.sh
t2016-checkout-patch.sh
t2017-checkout-orphan.sh
t2018-checkout-branch.sh
t2019-checkout-ambiguous-ref.sh
t2020-checkout-detach.sh
t2021-checkout-overwrite.sh
t2022-checkout-paths.sh
t2023-checkout-m.sh
t2030-unresolve-info.sh
t2050-git-dir-relative.sh
t2100-update-cache-badpath.sh
t2101-update-index-reupdate.sh
t2102-update-index-symlinks.sh
t2103-update-index-ignore-missing.sh
t2104-update-index-skip-worktree.sh
t2105-update-index-gitfile.sh
t2106-update-index-assume-unchanged.sh
t2107-update-index-basic.sh
t2200-add-update.sh
t2201-add-update-typechange.sh
t2202-add-addremove.sh
t2203-add-intent.sh
t2204-add-ignored.sh
t2300-cd-to-toplevel.sh
t3000-ls-files-others.sh
t3001-ls-files-others-exclude.sh
t3002-ls-files-dashpath.sh
t3003-ls-files-exclude.sh
t3004-ls-files-basic.sh
t3005-ls-files-relative.sh
t3010-ls-files-killed-modified.sh
t3020-ls-files-error-unmatch.sh
t3030-merge-recursive.sh
t3031-merge-criscross.sh
t3032-merge-recursive-options.sh
t3040-subprojects-basic.sh
t3050-subprojects-fetch.sh
t3060-ls-files-with-tree.sh
t3100-ls-tree-restrict.sh
t3101-ls-tree-dirname.sh
t3102-ls-tree-wildcards.sh
t3103-ls-tree-misc.sh
t3200-branch.sh
t3201-branch-contains.sh
t3202-show-branch-octopus.sh
t3203-branch-output.sh
t3210-pack-refs.sh
t3300-funny-names.sh
t3301-notes.sh
t3302-notes-index-expensive.sh
t3303-notes-subtrees.sh
t3304-notes-mixed.sh
t3305-notes-fanout.sh
t3306-notes-prune.sh
t3307-notes-man.sh
t3308-notes-merge.sh
t3309-notes-merge-auto-resolve.sh
t3310-notes-merge-manual-resolve.sh
t3311-notes-merge-fanout.sh
t3400-rebase.sh
t3401-rebase-partial.sh
t3402-rebase-merge.sh
t3403-rebase-skip.sh
t3404-rebase-interactive.sh
t3405-rebase-malformed.sh
t3406-rebase-message.sh
t3407-rebase-abort.sh
t3408-rebase-multi-line.sh
t3409-rebase-preserve-merges.sh
t3410-rebase-preserve-dropped-merges.sh
t3411-rebase-preserve-around-merges.sh
t3412-rebase-root.sh
t3413-rebase-hook.sh
t3414-rebase-preserve-onto.sh
t3415-rebase-autosquash.sh
t3416-rebase-onto-threedots.sh
t3417-rebase-whitespace-fix.sh
t3418-rebase-continue.sh
t3419-rebase-patch-id.sh
t3500-cherry.sh
t3501-revert-cherry-pick.sh
t3502-cherry-pick-merge.sh
t3503-cherry-pick-root.sh
t3504-cherry-pick-rerere.sh
t3505-cherry-pick-empty.sh
t3506-cherry-pick-ff.sh
t3507-cherry-pick-conflict.sh
t3508-cherry-pick-many-commits.sh
t3509-cherry-pick-merge-df.sh
t3510-cherry-pick-sequence.sh
t3600-rm.sh
t3700-add.sh
t3701-add-interactive.sh
t3702-add-edit.sh
t3703-add-magic-pathspec.sh
t3800-mktag.sh
t3900-i18n-commit.sh
t3901-8859-1.txt
t3901-i18n-patch.sh
t3901-utf8.txt
t3902-quoted.sh
t3903-stash.sh
t3904-stash-patch.sh
t3905-stash-include-untracked.sh
t4000-diff-format.sh
t4001-diff-rename.sh
t4002-diff-basic.sh
t4003-diff-rename-1.sh
t4004-diff-rename-symlink.sh
t4005-diff-rename-2.sh
t4006-diff-mode.sh
t4007-rename-3.sh
t4008-diff-break-rewrite.sh
t4009-diff-rename-4.sh
t4010-diff-pathspec.sh
t4011-diff-symlink.sh
t4012-diff-binary.sh
t4013-diff-various.sh
t4014-format-patch.sh
t4015-diff-whitespace.sh
t4016-diff-quote.sh
t4017-diff-retval.sh
t4018-diff-funcname.sh
t4019-diff-wserror.sh
t4020-diff-external.sh
t4021-format-patch-numbered.sh
t4022-diff-rewrite.sh
t4023-diff-rename-typechange.sh
t4024-diff-optimize-common.sh
t4025-hunk-header.sh
t4026-color.sh
t4027-diff-submodule.sh
t4028-format-patch-mime-headers.sh
t4029-diff-trailing-space.sh
t4030-diff-textconv.sh
t4031-diff-rewrite-binary.sh
t4032-diff-inter-hunk-context.sh
t4033-diff-patience.sh
t4034-diff-words.sh
t4035-diff-quiet.sh
t4036-format-patch-signer-mime.sh
t4037-diff-r-t-dirs.sh
t4038-diff-combined.sh
t4039-diff-assume-unchanged.sh
t4040-whitespace-status.sh
t4041-diff-submodule-option.sh
t4042-diff-textconv-caching.sh
t4043-diff-rename-binary.sh
t4044-diff-index-unique-abbrev.sh
t4045-diff-relative.sh
t4046-diff-unmerged.sh
t4047-diff-dirstat.sh
t4048-diff-combined-binary.sh
t4049-diff-stat-count.sh
t4050-diff-histogram.sh
t4051-diff-function-context.sh
t4052-stat-output.sh
t4100-apply-stat.sh
t4101-apply-nonl.sh
t4102-apply-rename.sh
t4103-apply-binary.sh
t4104-apply-boundary.sh
t4105-apply-fuzz.sh
t4106-apply-stdin.sh
t4107-apply-ignore-whitespace.sh
t4109-apply-multifrag.sh
t4110-apply-scan.sh
t4111-apply-subdir.sh
t4112-apply-renames.sh
t4113-apply-ending.sh
t4114-apply-typechange.sh
t4115-apply-symlink.sh
t4116-apply-reverse.sh
t4117-apply-reject.sh
t4118-apply-empty-context.sh
t4119-apply-config.sh
t4120-apply-popt.sh
t4121-apply-diffs.sh
t4122-apply-symlink-inside.sh
t4123-apply-shrink.sh
t4124-apply-ws-rule.sh
t4125-apply-ws-fuzz.sh
t4126-apply-empty.sh
t4127-apply-same-fn.sh
t4128-apply-root.sh
t4129-apply-samemode.sh
t4130-apply-criss-cross-rename.sh
t4131-apply-fake-ancestor.sh
t4132-apply-removal.sh
t4133-apply-filenames.sh
t4134-apply-submodule.sh
t4135-apply-weird-filenames.sh
t4136-apply-check.sh
t4150-am.sh
t4151-am-abort.sh
t4152-am-subjects.sh
t4200-rerere.sh
t4201-shortlog.sh
t4202-log.sh
t4203-mailmap.sh
t4204-patch-id.sh
t4205-log-pretty-formats.sh
t4206-log-follow-harder-copies.sh
t4207-log-decoration-colors.sh
t4208-log-magic-pathspec.sh
t4209-log-pickaxe.sh
t4252-am-options.sh
t4253-am-keep-cr-dos.sh
t4254-am-corrupt.sh
t4300-merge-tree.sh
t5000-tar-tree.sh
t5001-archive-attr.sh
t5100-mailinfo.sh
t5150-request-pull.sh
t5300-pack-object.sh
t5301-sliding-window.sh
t5302-pack-index.sh
t5303-pack-corruption-resilience.sh
t5304-prune.sh
t5305-include-tag.sh
t5306-pack-nobase.sh
t5307-pack-missing-commit.sh
t5400-send-pack.sh
t5401-update-hooks.sh
t5402-post-merge-hook.sh
t5403-post-checkout-hook.sh
t5404-tracking-branches.sh
t5405-send-pack-rewind.sh
t5406-remote-rejects.sh
t5407-post-rewrite-hook.sh
t5500-fetch-pack.sh
t5501-fetch-push-alternates.sh
t5502-quickfetch.sh
t5503-tagfollow.sh
t5504-fetch-receive-strict.sh
t5505-remote.sh
t5506-remote-groups.sh
t5509-fetch-push-namespaces.sh
t5510-fetch.sh
t5511-refspec.sh
t5512-ls-remote.sh
t5513-fetch-track.sh
t5514-fetch-multiple.sh
t5515-fetch-merge-logic.sh
t5516-fetch-push.sh
t5517-push-mirror.sh
t5518-fetch-exit-status.sh
t5519-push-alternates.sh
t5520-pull.sh
t5521-pull-options.sh
t5522-pull-symlink.sh
t5523-push-upstream.sh
t5524-pull-msg.sh
t5525-fetch-tagopt.sh
t5526-fetch-submodules.sh
t5527-fetch-odd-refs.sh
t5530-upload-pack-error.sh
t5531-deep-submodule-push.sh
t5532-fetch-proxy.sh
t5540-http-push.sh
t5541-http-push.sh
t5550-http-fetch.sh
t5551-http-fetch.sh
t5560-http-backend-noserver.sh
t5561-http-backend.sh
t556x_common
t5570-git-daemon.sh
t5600-clone-fail-cleanup.sh
t5601-clone.sh
t5602-clone-remote-exec.sh
t5700-clone-reference.sh
t5701-clone-local.sh
t5702-clone-options.sh
t5704-bundle.sh
t5705-clone-2gb.sh
t5706-clone-branch.sh
t5707-clone-detached.sh
t5708-clone-config.sh
t5710-info-alternate.sh
t5800-remote-helpers.sh
t5900-repo-selection.sh
t6000-rev-list-misc.sh
t6001-rev-list-graft.sh
t6002-rev-list-bisect.sh
t6003-rev-list-topo-order.sh
t6004-rev-list-path-optim.sh
t6005-rev-list-count.sh
t6006-rev-list-format.sh
t6007-rev-list-cherry-pick-file.sh
t6008-rev-list-submodule.sh
t6009-rev-list-parent.sh
t6010-merge-base.sh
t6011-rev-list-with-bad-commit.sh
t6012-rev-list-simplify.sh
t6013-rev-list-reverse-parents.sh
t6014-rev-list-all.sh
t6015-rev-list-show-all-parents.sh
t6016-rev-list-graph-simplify-history.sh
t6017-rev-list-stdin.sh
t6018-rev-list-glob.sh
t6019-rev-list-ancestry-path.sh
t6020-merge-df.sh
t6021-merge-criss-cross.sh
t6022-merge-rename.sh
t6023-merge-file.sh
t6024-recursive-merge.sh
t6025-merge-symlinks.sh
t6026-merge-attr.sh
t6027-merge-binary.sh
t6028-merge-up-to-date.sh
t6029-merge-subtree.sh
t6030-bisect-porcelain.sh
t6031-merge-recursive.sh
t6032-merge-large-rename.sh
t6033-merge-crlf.sh
t6034-merge-rename-nocruft.sh
t6035-merge-dir-to-symlink.sh
t6036-recursive-corner-cases.sh
t6037-merge-ours-theirs.sh
t6038-merge-text-auto.sh
t6040-tracking-info.sh
t6042-merge-rename-corner-cases.sh
t6050-replace.sh
t6060-merge-index.sh
t6101-rev-parse-parents.sh
t6110-rev-list-sparse.sh
t6120-describe.sh
t6200-fmt-merge-msg.sh
t6300-for-each-ref.sh
t6500-gc.sh
t7001-mv.sh
t7003-filter-branch.sh
t7004-tag.sh
t7005-editor.sh
t7006-pager.sh
t7007-show.sh
t7008-grep-binary.sh
t7010-setup.sh
t7011-skip-worktree-reading.sh
t7012-skip-worktree-writing.sh
t7060-wtstatus.sh
t7101-reset.sh
t7102-reset.sh
t7103-reset-bare.sh
t7104-reset.sh
t7105-reset-patch.sh
t7110-reset-merge.sh
t7111-reset-table.sh
t7201-co.sh
t7300-clean.sh
t7400-submodule-basic.sh
t7401-submodule-summary.sh
t7402-submodule-rebase.sh
t7403-submodule-sync.sh
t7405-submodule-merge.sh
t7406-submodule-update.sh
t7407-submodule-foreach.sh
t7408-submodule-reference.sh
t7500-commit.sh
t7501-commit.sh
t7502-commit.sh
t7503-pre-commit-hook.sh
t7504-commit-msg-hook.sh
t7505-prepare-commit-msg-hook.sh
t7506-status-submodule.sh
t7507-commit-verbose.sh
t7508-status.sh
t7509-commit.sh
t7510-signed-commit.sh
t7511-status-index.sh
t7600-merge.sh
t7601-merge-pull-config.sh
t7602-merge-octopus-many.sh
t7603-merge-reduce-heads.sh
t7604-merge-custom-message.sh
t7605-merge-resolve.sh
t7606-merge-custom.sh
t7607-merge-overwrite.sh
t7608-merge-messages.sh
t7609-merge-co-error-msgs.sh
t7610-mergetool.sh
t7611-merge-abort.sh
t7700-repack.sh
t7701-repack-unpack-unreachable.sh
t7800-difftool.sh
t7810-grep.sh
t7811-grep-open.sh
t8001-annotate.sh
t8002-blame.sh
t8003-blame-corner-cases.sh
t8004-blame-with-conflicts.sh
t8005-blame-i18n.sh
t8006-blame-textconv.sh
t8007-cat-file-textconv.sh
t8008-blame-formats.sh
t9001-send-email.sh
t9010-svn-fe.sh
t9011-svn-da.sh
t9100-git-svn-basic.sh
t9101-git-svn-props.sh
t9102-git-svn-deep-rmdir.sh
t9103-git-svn-tracked-directory-removed.sh
t9104-git-svn-follow-parent.sh
t9105-git-svn-commit-diff.sh
t9106-git-svn-commit-diff-clobber.sh
t9107-git-svn-migrate.sh
t9108-git-svn-glob.sh
t9109-git-svn-multi-glob.sh
t9110-git-svn-use-svm-props.sh
t9111-git-svn-use-svnsync-props.sh
t9112-git-svn-md5less-file.sh
t9113-git-svn-dcommit-new-file.sh
t9114-git-svn-dcommit-merge.sh
t9115-git-svn-dcommit-funky-renames.sh
t9116-git-svn-log.sh
t9117-git-svn-init-clone.sh
t9118-git-svn-funky-branch-names.sh
t9119-git-svn-info.sh
t9120-git-svn-clone-with-percent-escapes.sh
t9121-git-svn-fetch-renamed-dir.sh
t9122-git-svn-author.sh
t9123-git-svn-rebuild-with-rewriteroot.sh
t9124-git-svn-dcommit-auto-props.sh
t9125-git-svn-multi-glob-branch-names.sh
t9126-git-svn-follow-deleted-readded-directory.sh
t9127-git-svn-partial-rebuild.sh
t9128-git-svn-cmd-branch.sh
t9129-git-svn-i18n-commitencoding.sh
t9130-git-svn-authors-file.sh
t9131-git-svn-empty-symlink.sh
t9132-git-svn-broken-symlink.sh
t9133-git-svn-nested-git-repo.sh
t9134-git-svn-ignore-paths.sh
t9135-git-svn-moved-branch-empty-file.sh
t9136-git-svn-recreated-branch-empty-file.sh
t9137-git-svn-dcommit-clobber-series.sh
t9138-git-svn-authors-prog.sh
t9139-git-svn-non-utf8-commitencoding.sh
t9140-git-svn-reset.sh
t9141-git-svn-multiple-branches.sh
t9142-git-svn-shallow-clone.sh
t9143-git-svn-gc.sh
t9144-git-svn-old-rev_map.sh
t9145-git-svn-master-branch.sh
t9146-git-svn-empty-dirs.sh
t9150-svk-mergetickets.sh
t9151-svn-mergeinfo.sh
t9152-svn-empty-dirs-after-gc.sh
t9153-git-svn-rewrite-uuid.sh
t9154-git-svn-fancy-glob.sh
t9155-git-svn-fetch-deleted-tag.sh
t9156-git-svn-fetch-deleted-tag-2.sh
t9157-git-svn-fetch-merge.sh
t9158-git-svn-mergeinfo.sh
t9159-git-svn-no-parent-mergeinfo.sh
t9160-git-svn-preserve-empty-dirs.sh
t9161-git-svn-mergeinfo-push.sh
t9162-git-svn-dcommit-interactive.sh
t9200-git-cvsexportcommit.sh
t9300-fast-import.sh
t9301-fast-import-notes.sh
t9350-fast-export.sh
t9400-git-cvsserver-server.sh
t9401-git-cvsserver-crlf.sh
t9500-gitweb-standalone-no-errors.sh
t9501-gitweb-standalone-http-status.sh
t9502-gitweb-standalone-parse-output.sh
t9600-cvsimport.sh
t9601-cvsimport-vendor-branch.sh
t9602-cvsimport-branches-tags.sh
t9603-cvsimport-patchsets.sh
t9700-perl-git.sh
t9800-git-p4-basic.sh
t9801-git-p4-branch.sh
t9802-git-p4-filetype.sh
t9803-git-p4-shell-metachars.sh
t9804-git-p4-label.sh
t9805-git-p4-skip-submit-edit.sh
t9806-git-p4-options.sh
t9807-git-p4-submit.sh
t9808-git-p4-chdir.sh
t9809-git-p4-client-view.sh
t9810-git-p4-rcs.sh
t9901-git-web--browse.sh
test-binary-1.png
test-binary-2.png
test-lib-functions.sh
test-lib.sh
test-terminal.perl
templates
vcs-svn
xdiff
.gitattributes
.gitignore
.mailmap
COPYING
GIT-VERSION-GEN
INSTALL
LGPL-2.1
Makefile
README
RelNotes
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c
archive.h
argv-array.c
argv-array.h
attr.c
attr.h
base85.c
bisect.c
bisect.h
blob.c
blob.h
branch.c
branch.h
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cache.h
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h
combine-diff.c
command-list.txt
commit.c
commit.h
config.c
config.mak.in
configure.ac
connect.c
connected.c
connected.h
convert.c
convert.h
copy.c
credential-cache--daemon.c
credential-cache.c
credential-store.c
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c
date.c
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c
diff-no-index.c
diff.c
diff.h
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir.c
dir.h
editor.c
entry.c
environment.c
exec_cmd.c
exec_cmd.h
fast-import.c
fetch-pack.h
fixup-builtins
fmt-merge-msg.h
fsck.c
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh
git-archimport.perl
git-bisect.sh
git-compat-util.h
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-difftool.perl
git-filter-branch.sh
git-instaweb.sh
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh
git-parse-remote.sh
git-pull.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh
git-rebase--merge.sh
git-rebase.sh
git-relink.perl
git-remote-testgit.py
git-repack.sh
git-request-pull.sh
git-send-email.perl
git-sh-i18n.sh
git-sh-setup.sh
git-stash.sh
git-submodule.sh
git-svn.perl
git-web--browse.sh
git.c
git.spec.in
gpg-interface.c
gpg-interface.h
graph.c
graph.h
grep.c
grep.h
hash.c
hash.h
help.c
help.h
hex.c
http-backend.c
http-fetch.c
http-push.c
http-walker.c
http.c
http.h
ident.c
imap-send.c
kwset.c
kwset.h
levenshtein.c
levenshtein.h
list-objects.c
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c
log-tree.c
log-tree.h
mailmap.c
mailmap.h
match-trees.c
merge-file.c
merge-file.h
merge-recursive.c
merge-recursive.h
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes.c
notes.h
object.c
object.h
pack-check.c
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c
parse-options-cb.c
parse-options.c
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c
pkt-line.c
pkt-line.h
preload-index.c
pretty.c
progress.c
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c
reflog-walk.c
reflog-walk.h
refs.c
refs.h
remote-curl.c
remote.c
remote.h
replace_object.c
rerere.c
rerere.h
resolve-undo.c
resolve-undo.h
revision.c
revision.h
run-command.c
run-command.h
send-pack.h
sequencer.c
sequencer.h
server-info.c
setup.c
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c
sha1_name.c
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c
strbuf.h
streaming.c
streaming.h
string-list.c
string-list.h
submodule.c
submodule.h
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-credential.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-genrandom.c
test-index-version.c
test-line-buffer.c
test-match-trees.c
test-mktemp.c
test-parse-options.c
test-path-utils.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-subprocess.c
test-svn-fe.c
thread-utils.c
thread-utils.h
trace.c
transport-helper.c
transport.c
transport.h
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c
unpack-trees.h
upload-pack.c
url.c
url.h
usage.c
userdiff.c
userdiff.h
utf8.c
utf8.h
walker.c
walker.h
wrap-for-bin.sh
wrapper.c
write_or_die.c
ws.c
wt-status.c
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c
Breadcrumbs
git
/
t
/
t1300-repo-config.sh
Copy path
Blame
Blame
Latest commit
History
History
executable file
·
1019 lines (841 loc) · 21.4 KB
Breadcrumbs
git
/
t
/
t1300-repo-config.sh
Top
File metadata and controls
Code
Blame
executable file
·
1019 lines (841 loc) · 21.4 KB
Raw
#!/bin/sh # # Copyright (c) 2005 Johannes Schindelin # test_description='Test git config in different settings' . ./test-lib.sh test_expect_success 'clear default config' ' rm -f .git/config ' cat > expect << EOF [core] penguin = little blue EOF test_expect_success 'initial' ' git config core.penguin "little blue" && test_cmp expect .git/config ' cat > expect << EOF [core] penguin = little blue Movie = BadPhysics EOF test_expect_success 'mixed case' ' git config Core.Movie BadPhysics && test_cmp expect .git/config ' cat > expect << EOF [core] penguin = little blue Movie = BadPhysics [Cores] WhatEver = Second EOF test_expect_success 'similar section' ' git config Cores.WhatEver Second && test_cmp expect .git/config ' cat > expect << EOF [core] penguin = little blue Movie = BadPhysics UPPERCASE = true [Cores] WhatEver = Second EOF test_expect_success 'uppercase section' ' git config CORE.UPPERCASE true && test_cmp expect .git/config ' test_expect_success 'replace with non-match' \ 'git config core.penguin kingpin !blue' test_expect_success 'replace with non-match (actually matching)' \ 'git config core.penguin "very blue" !kingpin' cat > expect << EOF [core] penguin = very blue Movie = BadPhysics UPPERCASE = true penguin = kingpin [Cores] WhatEver = Second EOF test_expect_success 'non-match result' 'test_cmp expect .git/config' test_expect_success 'find mixed-case key by canonical name' ' echo Second >expect && git config cores.whatever >actual && test_cmp expect actual ' test_expect_success 'find mixed-case key by non-canonical name' ' echo Second >expect && git config CoReS.WhAtEvEr >actual && test_cmp expect actual ' test_expect_success 'subsections are not canonicalized by git-config' ' cat >>.git/config <<-\EOF && [section.SubSection] key = one [section "SubSection"] key = two EOF echo one >expect && git config section.subsection.key >actual && test_cmp expect actual && echo two >expect && git config section.SubSection.key >actual && test_cmp expect actual ' cat > .git/config <<\EOF [alpha] bar = foo [beta] baz = multiple \ lines EOF test_expect_success 'unset with cont. lines' \ 'git config --unset beta.baz' cat > expect <<\EOF [alpha] bar = foo [beta] EOF test_expect_success 'unset with cont. lines is correct' 'test_cmp expect .git/config' cat > .git/config << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment haha ="beta" # last silly comment haha = hello haha = bello [nextSection] noNewline = ouch EOF cp .git/config .git/config2 test_expect_success 'multiple unset' \ 'git config --unset-all beta.haha' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment [nextSection] noNewline = ouch EOF test_expect_success 'multiple unset is correct' 'test_cmp expect .git/config' cp .git/config2 .git/config test_expect_success '--replace-all missing value' ' test_must_fail git config --replace-all beta.haha && test_cmp .git/config2 .git/config ' rm .git/config2 test_expect_success '--replace-all' \ 'git config --replace-all beta.haha gamma' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment haha = gamma [nextSection] noNewline = ouch EOF test_expect_success 'all replaced' 'test_cmp expect .git/config' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment haha = alpha [nextSection] noNewline = ouch EOF test_expect_success 'really mean test' ' git config beta.haha alpha && test_cmp expect .git/config ' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment haha = alpha [nextSection] nonewline = wow EOF test_expect_success 'really really mean test' ' git config nextsection.nonewline wow && test_cmp expect .git/config ' test_expect_success 'get value' 'test alpha = $(git config beta.haha)' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment [nextSection] nonewline = wow EOF test_expect_success 'unset' ' git config --unset beta.haha && test_cmp expect .git/config ' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment [nextSection] nonewline = wow NoNewLine = wow2 for me EOF test_expect_success 'multivar' ' git config nextsection.NoNewLine "wow2 for me" "for me$" && test_cmp expect .git/config ' test_expect_success 'non-match' \ 'git config --get nextsection.nonewline !for' test_expect_success 'non-match value' \ 'test wow = $(git config --get nextsection.nonewline !for)' test_expect_success 'ambiguous get' ' test_must_fail git config --get nextsection.nonewline ' test_expect_success 'get multivar' \ 'git config --get-all nextsection.nonewline' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment [nextSection] nonewline = wow3 NoNewLine = wow2 for me EOF test_expect_success 'multivar replace' ' git config nextsection.nonewline "wow3" "wow$" && test_cmp expect .git/config ' test_expect_success 'ambiguous value' ' test_must_fail git config nextsection.nonewline ' test_expect_success 'ambiguous unset' ' test_must_fail git config --unset nextsection.nonewline ' test_expect_success 'invalid unset' ' test_must_fail git config --unset somesection.nonewline ' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment [nextSection] NoNewLine = wow2 for me EOF test_expect_success 'multivar unset' ' git config --unset nextsection.nonewline "wow3$" && test_cmp expect .git/config ' test_expect_success 'invalid key' 'test_must_fail git config inval.2key blabla' test_expect_success 'correct key' 'git config 123456.a123 987' test_expect_success 'hierarchical section' \ 'git config Version.1.2.3eX.Alpha beta' cat > expect << EOF [beta] ; silly comment # another comment noIndent= sillyValue ; 'nother silly comment # empty line ; comment [nextSection] NoNewLine = wow2 for me [123456] a123 = 987 [Version "1.2.3eX"] Alpha = beta EOF test_expect_success 'hierarchical section value' 'test_cmp expect .git/config' cat > expect << EOF beta.noindent=sillyValue nextsection.nonewline=wow2 for me 123456.a123=987 version.1.2.3eX.alpha=beta EOF test_expect_success 'working --list' \ 'git config --list > output && cmp output expect' cat > expect << EOF EOF test_expect_success '--list without repo produces empty output' ' git --git-dir=nonexistent config --list >output && test_cmp expect output ' cat > expect << EOF beta.noindent sillyValue nextsection.nonewline wow2 for me EOF test_expect_success '--get-regexp' \ 'git config --get-regexp in > output && cmp output expect' cat > expect << EOF wow2 for me wow4 for you EOF test_expect_success '--add' ' git config --add nextsection.nonewline "wow4 for you" && git config --get-all nextsection.nonewline > output && test_cmp expect output ' cat > .git/config << EOF [novalue] variable [emptyvalue] variable = EOF test_expect_success 'get variable with no value' \ 'git config --get novalue.variable ^$' test_expect_success 'get variable with empty value' \ 'git config --get emptyvalue.variable ^$' echo novalue.variable > expect test_expect_success 'get-regexp variable with no value' \ 'git config --get-regexp novalue > output && cmp output expect' echo 'novalue.variable true' > expect test_expect_success 'get-regexp --bool variable with no value' \ 'git config --bool --get-regexp novalue > output && cmp output expect' echo 'emptyvalue.variable ' > expect test_expect_success 'get-regexp variable with empty value' \ 'git config --get-regexp emptyvalue > output && cmp output expect' echo true > expect test_expect_success 'get bool variable with no value' \ 'git config --bool novalue.variable > output && cmp output expect' echo false > expect test_expect_success 'get bool variable with empty value' \ 'git config --bool emptyvalue.variable > output && cmp output expect' test_expect_success 'no arguments, but no crash' ' test_must_fail git config >output 2>&1 && grep usage output ' cat > .git/config << EOF [a.b] c = d EOF cat > expect << EOF [a.b] c = d [a] x = y EOF test_expect_success 'new section is partial match of another' ' git config a.x y && test_cmp expect .git/config ' cat > expect << EOF [a.b] c = d [a] x = y b = c [b] x = y EOF test_expect_success 'new variable inserts into proper section' ' git config b.x y && git config a.b c && test_cmp expect .git/config ' test_expect_success 'alternative GIT_CONFIG (non-existing file should fail)' \ 'test_must_fail git config --file non-existing-config -l' cat > other-config << EOF [ein] bahn = strasse EOF cat > expect << EOF ein.bahn=strasse EOF test_expect_success 'alternative GIT_CONFIG' ' GIT_CONFIG=other-config git config -l >output && test_cmp expect output ' test_expect_success 'alternative GIT_CONFIG (--file)' \ 'git config --file other-config -l > output && cmp output expect' test_expect_success 'refer config from subdirectory' ' mkdir x && ( cd x && echo strasse >expect && git config --get --file ../other-config ein.bahn >actual && test_cmp expect actual ) ' test_expect_success 'refer config from subdirectory via GIT_CONFIG' ' ( cd x && GIT_CONFIG=../other-config git config --get ein.bahn >actual && test_cmp expect actual ) ' cat > expect << EOF [ein] bahn = strasse [anwohner] park = ausweis EOF test_expect_success '--set in alternative GIT_CONFIG' ' GIT_CONFIG=other-config git config anwohner.park ausweis && test_cmp expect other-config ' cat > .git/config << EOF # Hallo #Bello [branch "eins"] x = 1 [branch.eins] y = 1 [branch "1 234 blabl/a"] weird EOF test_expect_success "rename section" \ "git config --rename-section branch.eins branch.zwei" cat > expect << EOF # Hallo #Bello [branch "zwei"] x = 1 [branch "zwei"] y = 1 [branch "1 234 blabl/a"] weird EOF test_expect_success "rename succeeded" "test_cmp expect .git/config" test_expect_success "rename non-existing section" ' test_must_fail git config --rename-section \ branch."world domination" branch.drei ' test_expect_success "rename succeeded" "test_cmp expect .git/config" test_expect_success "rename another section" \ 'git config --rename-section branch."1 234 blabl/a" branch.drei' cat > expect << EOF # Hallo #Bello [branch "zwei"] x = 1 [branch "zwei"] y = 1 [branch "drei"] weird EOF test_expect_success "rename succeeded" "test_cmp expect .git/config" cat >> .git/config << EOF [branch "vier"] z = 1 EOF test_expect_success "rename a section with a var on the same line" \ 'git config --rename-section branch.vier branch.zwei' cat > expect << EOF # Hallo #Bello [branch "zwei"] x = 1 [branch "zwei"] y = 1 [branch "drei"] weird [branch "zwei"] z = 1 EOF test_expect_success "rename succeeded" "test_cmp expect .git/config" cat >> .git/config << EOF [branch "zwei"] a = 1 [branch "vier"] EOF test_expect_success "remove section" "git config --remove-section branch.zwei" cat > expect << EOF # Hallo #Bello [branch "drei"] weird EOF test_expect_success "section was removed properly" \ "test_cmp expect .git/config" cat > expect << EOF [gitcvs] enabled = true dbname = %Ggitcvs2.%a.%m.sqlite [gitcvs "ext"] dbname = %Ggitcvs1.%a.%m.sqlite EOF test_expect_success 'section ending' ' rm -f .git/config && git config gitcvs.enabled true && git config gitcvs.ext.dbname %Ggitcvs1.%a.%m.sqlite && git config gitcvs.dbname %Ggitcvs2.%a.%m.sqlite && test_cmp expect .git/config ' test_expect_success numbers ' git config kilo.gram 1k && git config mega.ton 1m && k=$(git config --int --get kilo.gram) && test z1024 = "z$k" && m=$(git config --int --get mega.ton) && test z1048576 = "z$m" ' cat > expect <<EOF fatal: bad config value for 'aninvalid.unit' in .git/config EOF test_expect_success 'invalid unit' ' git config aninvalid.unit "1auto" && s=$(git config aninvalid.unit) && test "z1auto" = "z$s" && if git config --int --get aninvalid.unit 2>actual then echo config should have failed false fi && cmp actual expect ' cat > expect << EOF true false true false true false true false EOF test_expect_success bool ' git config bool.true1 01 && git config bool.true2 -1 && git config bool.true3 YeS && git config bool.true4 true && git config bool.false1 000 && git config bool.false2 "" && git config bool.false3 nO && git config bool.false4 FALSE && rm -f result && for i in 1 2 3 4 do git config --bool --get bool.true$i >>result git config --bool --get bool.false$i >>result done && cmp expect result' test_expect_success 'invalid bool (--get)' ' git config bool.nobool foobar && test_must_fail git config --bool --get bool.nobool' test_expect_success 'invalid bool (set)' ' test_must_fail git config --bool bool.nobool foobar' cat > expect <<\EOF [bool] true1 = true true2 = true true3 = true true4 = true false1 = false false2 = false false3 = false false4 = false EOF test_expect_success 'set --bool' ' rm -f .git/config && git config --bool bool.true1 01 && git config --bool bool.true2 -1 && git config --bool bool.true3 YeS && git config --bool bool.true4 true && git config --bool bool.false1 000 && git config --bool bool.false2 "" && git config --bool bool.false3 nO && git config --bool bool.false4 FALSE && cmp expect .git/config' cat > expect <<\EOF [int] val1 = 1 val2 = -1 val3 = 5242880 EOF test_expect_success 'set --int' ' rm -f .git/config && git config --int int.val1 01 && git config --int int.val2 -1 && git config --int int.val3 5m && cmp expect .git/config' cat >expect <<\EOF [bool] true1 = true true2 = true false1 = false false2 = false [int] int1 = 0 int2 = 1 int3 = -1 EOF test_expect_success 'get --bool-or-int' ' rm -f .git/config && ( echo "[bool]" echo true1 echo true2 = true echo false = false echo "[int]" echo int1 = 0 echo int2 = 1 echo int3 = -1 ) >>.git/config && test $(git config --bool-or-int bool.true1) = true && test $(git config --bool-or-int bool.true2) = true && test $(git config --bool-or-int bool.false) = false && test $(git config --bool-or-int int.int1) = 0 && test $(git config --bool-or-int int.int2) = 1 && test $(git config --bool-or-int int.int3) = -1 ' cat >expect <<\EOF [bool] true1 = true false1 = false true2 = true false2 = false [int] int1 = 0 int2 = 1 int3 = -1 EOF test_expect_success 'set --bool-or-int' ' rm -f .git/config && git config --bool-or-int bool.true1 true && git config --bool-or-int bool.false1 false && git config --bool-or-int bool.true2 yes && git config --bool-or-int bool.false2 no && git config --bool-or-int int.int1 0 && git config --bool-or-int int.int2 1 && git config --bool-or-int int.int3 -1 && test_cmp expect .git/config ' cat >expect <<\EOF [path] home = ~/ normal = /dev/null trailingtilde = foo~ EOF test_expect_success NOT_MINGW 'set --path' ' rm -f .git/config && git config --path path.home "~/" && git config --path path.normal "/dev/null" && git config --path path.trailingtilde "foo~" && test_cmp expect .git/config' if test_have_prereq NOT_MINGW && test "${HOME+set}" then test_set_prereq HOMEVAR fi cat >expect <<EOF $HOME/ /dev/null foo~ EOF test_expect_success HOMEVAR 'get --path' ' git config --get --path path.home > result && git config --get --path path.normal >> result && git config --get --path path.trailingtilde >> result && test_cmp expect result ' cat >expect <<\EOF /dev/null foo~ EOF test_expect_success NOT_MINGW 'get --path copes with unset $HOME' ' ( unset HOME; test_must_fail git config --get --path path.home \ >result 2>msg && git config --get --path path.normal >>result && git config --get --path path.trailingtilde >>result ) && grep "[Ff]ailed to expand.*~/" msg && test_cmp expect result ' cat > expect << EOF [quote] leading = " test" ending = "test " semicolon = "test;test" hash = "test#test" EOF test_expect_success 'quoting' ' rm -f .git/config && git config quote.leading " test" && git config quote.ending "test " && git config quote.semicolon "test;test" && git config quote.hash "test#test" && test_cmp expect .git/config ' test_expect_success 'key with newline' ' test_must_fail git config "key.with newline" 123' test_expect_success 'value with newline' 'git config key.sub value.with\\\ newline' cat > .git/config <<\EOF [section] ; comment \ continued = cont\ inued noncont = not continued ; \ quotecont = "cont;\ inued" EOF cat > expect <<\EOF section.continued=continued section.noncont=not continued section.quotecont=cont;inued EOF test_expect_success 'value continued on next line' ' git config --list > result && cmp result expect ' cat > .git/config <<\EOF [section "sub=section"] val1 = foo=bar val2 = foo\nbar val3 = \n\n val4 = val5 EOF cat > expect <<\EOF section.sub=section.val1 foo=barQsection.sub=section.val2 foo barQsection.sub=section.val3 Qsection.sub=section.val4 Qsection.sub=section.val5Q EOF test_expect_success '--null --list' ' git config --null --list | nul_to_q >result && echo >>result && test_cmp expect result ' test_expect_success '--null --get-regexp' ' git config --null --get-regexp "val[0-9]" | nul_to_q >result && echo >>result && test_cmp expect result ' test_expect_success 'inner whitespace kept verbatim' ' git config section.val "foo bar" && test "z$(git config section.val)" = "zfoo bar" ' test_expect_success SYMLINKS 'symlinked configuration' ' ln -s notyet myconfig && GIT_CONFIG=myconfig git config test.frotz nitfol && test -h myconfig && test -f notyet && test "z$(GIT_CONFIG=notyet git config test.frotz)" = znitfol && GIT_CONFIG=myconfig git config test.xyzzy rezrov && test -h myconfig && test -f notyet && test "z$(GIT_CONFIG=notyet git config test.frotz)" = znitfol && test "z$(GIT_CONFIG=notyet git config test.xyzzy)" = zrezrov ' test_expect_success 'nonexistent configuration' ' ( GIT_CONFIG=doesnotexist && export GIT_CONFIG && test_must_fail git config --list && test_must_fail git config test.xyzzy ) ' test_expect_success SYMLINKS 'symlink to nonexistent configuration' ' ln -s doesnotexist linktonada && ln -s linktonada linktolinktonada && ( GIT_CONFIG=linktonada && export GIT_CONFIG && test_must_fail git config --list && GIT_CONFIG=linktolinktonada && test_must_fail git config --list ) ' test_expect_success 'check split_cmdline return' " git config alias.split-cmdline-fix 'echo \"' && test_must_fail git split-cmdline-fix && echo foo > foo && git add foo && git commit -m 'initial commit' && git config branch.master.mergeoptions 'echo \"' && test_must_fail git merge master " test_expect_success 'git -c "key=value" support' ' test "z$(git -c core.name=value config core.name)" = zvalue && test "z$(git -c foo.CamelCase=value config foo.camelcase)" = zvalue && test "z$(git -c foo.flag config --bool foo.flag)" = ztrue && test_must_fail git -c name=value config core.name ' test_expect_success 'key sanity-checking' ' test_must_fail git config foo=bar && test_must_fail git config foo=.bar && test_must_fail git config foo.ba=r && test_must_fail git config foo.1bar && test_must_fail git config foo."ba z".bar && test_must_fail git config . false && test_must_fail git config .foo false && test_must_fail git config foo. false && test_must_fail git config .foo. false && git config foo.bar true && git config foo."ba =z".bar false ' test_expect_success 'git -c works with aliases of builtins' ' git config alias.checkconfig "-c foo.check=bar config foo.check" && echo bar >expect && git checkconfig >actual && test_cmp expect actual ' test_expect_success 'git -c does not split values on equals' ' echo "value with = in it" >expect && git -c core.foo="value with = in it" config core.foo >actual && test_cmp expect actual ' test_expect_success 'git -c dies on bogus config' ' test_must_fail git -c core.bare=foo rev-parse ' test_expect_success 'git -c complains about empty key' ' test_must_fail git -c "=foo" rev-parse ' test_expect_success 'git -c complains about empty key and value' ' test_must_fail git -c "" rev-parse ' test_expect_success 'git config --edit works' ' git config -f tmp test.value no && echo test.value=yes >expect && GIT_EDITOR="echo [test]value=yes >" git config -f tmp --edit && git config -f tmp --list >actual && test_cmp expect actual ' test_expect_success 'git config --edit respects core.editor' ' git config -f tmp test.value no && echo test.value=yes >expect && test_config core.editor "echo [test]value=yes >" && git config -f tmp --edit && git config -f tmp --list >actual && test_cmp expect actual ' # malformed configuration files test_expect_success 'barf on syntax error' ' cat >.git/config <<-\EOF && # broken section line [section] key garbage EOF test_must_fail git config --get section.key >actual 2>error && grep " line 3 " error ' test_expect_success 'barf on incomplete section header' ' cat >.git/config <<-\EOF && # broken section line [section key = value EOF test_must_fail git config --get section.key >actual 2>error && grep " line 2 " error ' test_expect_success 'barf on incomplete string' ' cat >.git/config <<-\EOF && # broken section line [section] key = "value string EOF test_must_fail git config --get section.key >actual 2>error && grep " line 3 " error ' test_done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
You can’t perform that action at this time.