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
5ec11ab
Documentation
block-sha1
builtin
compat
contrib
git-gui
git_remote_helpers
gitk-git
gitweb
mergetools
perl
po
ppc
t
Git-SVN
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-bash.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
t0062-revision-walking.sh
t0063-string-list.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
t1306-xdg-files.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
t1512-rev-parse-disambiguation.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
t3006-ls-files-long.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
t3910-mac-os-precompose.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
t4053-diff-no-index.sh
t4054-diff-bogus-tree.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
t4108-apply-threeway.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
t5528-push-default.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
t5709-clone-refspec.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
t7409-submodule-detached-worktree.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
t7512-status-help.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
t9002-column.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
t9163-git-svn-reset-clears-caches.sh
t9164-git-svn-dcommit-concrrent.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
t9811-git-p4-label-import.sh
t9812-git-p4-wildcards.sh
t9813-git-p4-preserve-users.sh
t9814-git-p4-rename.sh
t9815-git-p4-submit-fail.sh
t9901-git-web--browse.sh
t9902-completion.sh
t9903-bash-prompt.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
column.c
column.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-p4.py
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
mergesort.c
mergesort.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-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-mergesort.c
test-mktemp.c
test-parse-options.c
test-path-utils.c
test-regex.c
test-revision-walking.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-list.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
varint.c
varint.h
version.c
version.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
/
t7800-difftool.sh
Blame
Blame
Latest commit
History
History
executable file
·
388 lines (304 loc) · 9.89 KB
Breadcrumbs
git
/
t
/
t7800-difftool.sh
Top
File metadata and controls
Code
Blame
executable file
·
388 lines (304 loc) · 9.89 KB
Raw
#!/bin/sh # # Copyright (c) 2009, 2010 David Aguilar # test_description='git-difftool Testing basic diff tool invocation ' . ./test-lib.sh remove_config_vars() { # Unset all config variables used by git-difftool git config --unset diff.tool git config --unset diff.guitool git config --unset difftool.test-tool.cmd git config --unset difftool.prompt git config --unset merge.tool git config --unset mergetool.test-tool.cmd git config --unset mergetool.prompt return 0 } restore_test_defaults() { # Restores the test defaults used by several tests remove_config_vars unset GIT_DIFF_TOOL unset GIT_DIFFTOOL_PROMPT unset GIT_DIFFTOOL_NO_PROMPT git config diff.tool test-tool && git config difftool.test-tool.cmd 'cat $LOCAL' git config difftool.bogus-tool.cmd false } prompt_given() { prompt="$1" test "$prompt" = "Launch 'test-tool' [Y/n]: branch" } stdin_contains() { grep >/dev/null "$1" } stdin_doesnot_contain() { ! stdin_contains "$1" } # Create a file on master and change it on branch test_expect_success PERL 'setup' ' echo master >file && git add file && git commit -m "added file" && git checkout -b branch master && echo branch >file && git commit -a -m "branch changed file" && git checkout master ' # Configure a custom difftool.<tool>.cmd and use it test_expect_success PERL 'custom commands' ' restore_test_defaults && git config difftool.test-tool.cmd "cat \$REMOTE" && diff=$(git difftool --no-prompt branch) && test "$diff" = "master" && restore_test_defaults && diff=$(git difftool --no-prompt branch) && test "$diff" = "branch" ' # Ensures that a custom difftool.<tool>.cmd overrides built-ins test_expect_success PERL 'custom commands override built-ins' ' restore_test_defaults && git config difftool.defaults.cmd "cat \$REMOTE" && diff=$(git difftool --tool defaults --no-prompt branch) && test "$diff" = "master" && git config --unset difftool.defaults.cmd ' # Ensures that git-difftool ignores bogus --tool values test_expect_success PERL 'difftool ignores bad --tool values' ' diff=$(git difftool --no-prompt --tool=bad-tool branch) test "$?" = 1 && test "$diff" = "" ' test_expect_success PERL 'difftool forwards arguments to diff' ' >for-diff && git add for-diff && echo changes>for-diff && git add for-diff && diff=$(git difftool --cached --no-prompt -- for-diff) && test "$diff" = "" && git reset -- for-diff && rm for-diff ' test_expect_success PERL 'difftool honors --gui' ' git config merge.tool bogus-tool && git config diff.tool bogus-tool && git config diff.guitool test-tool && diff=$(git difftool --no-prompt --gui branch) && test "$diff" = "branch" && restore_test_defaults ' test_expect_success PERL 'difftool --gui last setting wins' ' git config diff.guitool bogus-tool && git difftool --no-prompt --gui --no-gui && git config merge.tool bogus-tool && git config diff.tool bogus-tool && git config diff.guitool test-tool && diff=$(git difftool --no-prompt --no-gui --gui branch) && test "$diff" = "branch" && restore_test_defaults ' test_expect_success PERL 'difftool --gui works without configured diff.guitool' ' git config diff.tool test-tool && diff=$(git difftool --no-prompt --gui branch) && test "$diff" = "branch" && restore_test_defaults ' # Specify the diff tool using $GIT_DIFF_TOOL test_expect_success PERL 'GIT_DIFF_TOOL variable' ' test_might_fail git config --unset diff.tool && GIT_DIFF_TOOL=test-tool && export GIT_DIFF_TOOL && diff=$(git difftool --no-prompt branch) && test "$diff" = "branch" && restore_test_defaults ' # Test the $GIT_*_TOOL variables and ensure # that $GIT_DIFF_TOOL always wins unless --tool is specified test_expect_success PERL 'GIT_DIFF_TOOL overrides' ' git config diff.tool bogus-tool && git config merge.tool bogus-tool && GIT_DIFF_TOOL=test-tool && export GIT_DIFF_TOOL && diff=$(git difftool --no-prompt branch) && test "$diff" = "branch" && GIT_DIFF_TOOL=bogus-tool && export GIT_DIFF_TOOL && diff=$(git difftool --no-prompt --tool=test-tool branch) && test "$diff" = "branch" && restore_test_defaults ' # Test that we don't have to pass --no-prompt to difftool # when $GIT_DIFFTOOL_NO_PROMPT is true test_expect_success PERL 'GIT_DIFFTOOL_NO_PROMPT variable' ' GIT_DIFFTOOL_NO_PROMPT=true && export GIT_DIFFTOOL_NO_PROMPT && diff=$(git difftool branch) && test "$diff" = "branch" && restore_test_defaults ' # git-difftool supports the difftool.prompt variable. # Test that GIT_DIFFTOOL_PROMPT can override difftool.prompt = false test_expect_success PERL 'GIT_DIFFTOOL_PROMPT variable' ' git config difftool.prompt false && GIT_DIFFTOOL_PROMPT=true && export GIT_DIFFTOOL_PROMPT && prompt=$(echo | git difftool branch | tail -1) && prompt_given "$prompt" && restore_test_defaults ' # Test that we don't have to pass --no-prompt when difftool.prompt is false test_expect_success PERL 'difftool.prompt config variable is false' ' git config difftool.prompt false && diff=$(git difftool branch) && test "$diff" = "branch" && restore_test_defaults ' # Test that we don't have to pass --no-prompt when mergetool.prompt is false test_expect_success PERL 'difftool merge.prompt = false' ' test_might_fail git config --unset difftool.prompt && git config mergetool.prompt false && diff=$(git difftool branch) && test "$diff" = "branch" && restore_test_defaults ' # Test that the -y flag can override difftool.prompt = true test_expect_success PERL 'difftool.prompt can overridden with -y' ' git config difftool.prompt true && diff=$(git difftool -y branch) && test "$diff" = "branch" && restore_test_defaults ' # Test that the --prompt flag can override difftool.prompt = false test_expect_success PERL 'difftool.prompt can overridden with --prompt' ' git config difftool.prompt false && prompt=$(echo | git difftool --prompt branch | tail -1) && prompt_given "$prompt" && restore_test_defaults ' # Test that the last flag passed on the command-line wins test_expect_success PERL 'difftool last flag wins' ' diff=$(git difftool --prompt --no-prompt branch) && test "$diff" = "branch" && restore_test_defaults && prompt=$(echo | git difftool --no-prompt --prompt branch | tail -1) && prompt_given "$prompt" && restore_test_defaults ' # git-difftool falls back to git-mergetool config variables # so test that behavior here test_expect_success PERL 'difftool + mergetool config variables' ' remove_config_vars && git config merge.tool test-tool && git config mergetool.test-tool.cmd "cat \$LOCAL" && diff=$(git difftool --no-prompt branch) && test "$diff" = "branch" && # set merge.tool to something bogus, diff.tool to test-tool git config merge.tool bogus-tool && git config diff.tool test-tool && diff=$(git difftool --no-prompt branch) && test "$diff" = "branch" && restore_test_defaults ' test_expect_success PERL 'difftool.<tool>.path' ' git config difftool.tkdiff.path echo && diff=$(git difftool --tool=tkdiff --no-prompt branch) && git config --unset difftool.tkdiff.path && lines=$(echo "$diff" | grep file | wc -l) && test "$lines" -eq 1 && restore_test_defaults ' test_expect_success PERL 'difftool --extcmd=cat' ' diff=$(git difftool --no-prompt --extcmd=cat branch) && test "$diff" = branch"$LF"master ' test_expect_success PERL 'difftool --extcmd cat' ' diff=$(git difftool --no-prompt --extcmd cat branch) && test "$diff" = branch"$LF"master ' test_expect_success PERL 'difftool -x cat' ' diff=$(git difftool --no-prompt -x cat branch) && test "$diff" = branch"$LF"master ' test_expect_success PERL 'difftool --extcmd echo arg1' ' diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"echo\ \$1\" branch) && test "$diff" = file ' test_expect_success PERL 'difftool --extcmd cat arg1' ' diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$1\" branch) && test "$diff" = master ' test_expect_success PERL 'difftool --extcmd cat arg2' ' diff=$(git difftool --no-prompt --extcmd sh\ -c\ \"cat\ \$2\" branch) && test "$diff" = branch ' # Create a second file on master and a different version on branch test_expect_success PERL 'setup with 2 files different' ' echo m2 >file2 && git add file2 && git commit -m "added file2" && git checkout branch && echo br2 >file2 && git add file2 && git commit -a -m "branch changed file2" && git checkout master ' test_expect_success PERL 'say no to the first file' ' diff=$( (echo n; echo) | git difftool -x cat branch ) && echo "$diff" | stdin_contains m2 && echo "$diff" | stdin_contains br2 && echo "$diff" | stdin_doesnot_contain master && echo "$diff" | stdin_doesnot_contain branch ' test_expect_success PERL 'say no to the second file' ' diff=$( (echo; echo n) | git difftool -x cat branch ) && echo "$diff" | stdin_contains master && echo "$diff" | stdin_contains branch && echo "$diff" | stdin_doesnot_contain m2 && echo "$diff" | stdin_doesnot_contain br2 ' test_expect_success PERL 'difftool --tool-help' ' tool_help=$(git difftool --tool-help) && echo "$tool_help" | stdin_contains tool ' test_expect_success PERL 'setup change in subdirectory' ' git checkout master && mkdir sub && echo master >sub/sub && git add sub/sub && git commit -m "added sub/sub" && echo test >>file && echo test >>sub/sub && git add . && git commit -m "modified both" ' test_expect_success PERL 'difftool -d' ' diff=$(git difftool -d --extcmd ls branch) && echo "$diff" | stdin_contains sub && echo "$diff" | stdin_contains file ' test_expect_success PERL 'difftool --dir-diff' ' diff=$(git difftool --dir-diff --extcmd ls branch) && echo "$diff" | stdin_contains sub && echo "$diff" | stdin_contains file ' test_expect_success PERL 'difftool --dir-diff ignores --prompt' ' diff=$(git difftool --dir-diff --prompt --extcmd ls branch) && echo "$diff" | stdin_contains sub && echo "$diff" | stdin_contains file ' test_expect_success PERL 'difftool --dir-diff from subdirectory' ' ( cd sub && diff=$(git difftool --dir-diff --extcmd ls branch) && echo "$diff" | stdin_contains sub && echo "$diff" | stdin_contains file ) ' 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
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
You can’t perform that action at this time.