A fork of Git containing Microsoft-specific patches.
Перейти к файлу
Junio C Hamano 441981bc85 git: simplify environment save/restore logic
The only code that cares about the value of the global variable
saved_env_before_alias after the previous fix is handle_builtin()
that turns into a glorified no-op when the variable is true, so the
logic could safely be lifted to its caller, i.e. the caller can
refrain from calling it when the variable is set.

This variable tells us if save_env_before_alias() was called (with
or without matching restore_env()), but the sole caller of the
function, handle_alias(), always calls it as the first thing, so we
can consider that the variable essentially keeps track of the fact
that handle_alias() has ever been called.

It turns out that handle_builtin() and handle_alias() are called
only from one function in a way that the value of the variable
matters, which is run_argv(), and it already keeps track of the
fact that it already called handle_alias().

So we can simplify the whole thing by:

- Change handle_builtin() to always make a direct call to the
  builtin implementation it finds, and make sure the caller
  refrains from calling it if handle_alias() has ever been
  called;

- Remove saved_env_before_alias variable, and instead use the
  local "done_alias" variable maintained inside run_argv() to
  make the same decision.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-01-27 15:45:55 -08:00
Documentation Git 2.5.4 2015-09-28 15:34:28 -07:00
block-sha1
builtin Sync with 2.4.10 2015-09-28 15:33:56 -07:00
compat Mingw: verify both ends of the pipe () call 2015-08-28 11:11:50 -07:00
contrib Merge branch 'da/subtree-date-confusion' into maint 2015-08-19 14:41:25 -07:00
ewah Merge branch 'es/osx-header-pollutes-mask-macro' into maint 2015-07-15 11:41:24 -07:00
git-gui
gitk-git
gitweb
mergetools mergetools: add winmerge as a builtin tool 2015-05-20 13:13:44 -07:00
perl
po po/README: Update directions for l10n contributors 2015-08-17 12:12:26 -07:00
ppc
t git: remove an early return from save_env_before_alias() 2016-01-27 15:12:37 -08:00
templates Merge branch 'nd/multiple-work-trees' 2015-05-11 14:23:39 -07:00
vcs-svn
xdiff
.gitattributes
.gitignore Merge branch 'nd/multiple-work-trees' 2015-07-13 14:02:02 -07:00
.mailmap
COPYING
GIT-VERSION-GEN Git 2.5.4 2015-09-28 15:34:28 -07:00
INSTALL
LGPL-2.1
Makefile Merge branch 'sg/help-group' into maint 2015-09-03 19:17:51 -07:00
README
RelNotes Git 2.5.4 2015-09-28 15:34:28 -07:00
abspath.c
aclocal.m4
advice.c
advice.h
alias.c config: silence warnings for command names with invalid keys 2015-08-24 08:52:23 -07:00
alloc.c
archive-tar.c
archive-zip.c Merge branch 'rs/archive-zip-many' into maint 2015-09-03 19:18:01 -07:00
archive.c Merge branch 'bc/object-id' 2015-05-05 21:00:23 -07:00
archive.h
argv-array.c
argv-array.h
attr.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
attr.h
base85.c
bisect.c register_ref(): rewrite to take an object_id argument 2015-05-25 12:19:28 -07:00
bisect.h
blob.c
blob.h
branch.c
branch.h
builtin.h worktree: new place for "git prune --worktrees" 2015-06-29 08:48:44 -07:00
bulk-checkin.c Merge branch 'bc/object-id' 2015-05-05 21:00:23 -07:00
bulk-checkin.h
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cache.h Merge branch 'jk/fix-alias-pager-config-key-warnings' into maint 2015-09-03 19:17:52 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h
column.c
column.h
combine-diff.c Sync with 2.4.10 2015-09-28 15:33:56 -07:00
command-list.txt Merge branch 'nd/multiple-work-trees' 2015-07-13 14:02:02 -07:00
commit-slab.h
commit.c Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
commit.h Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
config.c Merge branch 'ss/fix-config-fd-leak' into maint 2015-09-03 19:17:59 -07:00
config.mak.in
config.mak.uname config.mak.uname: Darwin: define HAVE_GETDELIM for modern OS X releases 2015-06-03 09:38:04 -07:00
configure.ac configure: add getdelim() check 2015-06-03 09:38:19 -07:00
connect.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
connect.h
connected.c
connected.h
convert.c filter_buffer_or_fd(): ignore EPIPE 2015-05-20 10:19:12 -07:00
convert.h
copy.c copy.c: make copy_fd() report its status silently 2015-05-19 14:48:54 -07:00
credential-cache--daemon.c
credential-cache.c
credential-store.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c
daemon.c Merge branch 'jc/daemon-no-ipv6-for-2.4.1' 2015-05-11 14:23:53 -07:00
date.c Merge branch 'jc/epochtime-wo-tz' into maint-2.3 2015-05-11 14:33:58 -07:00
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c Merge branch 'nd/diff-i-t-a' 2015-06-25 10:47:46 -07:00
diff-no-index.c
diff.c Sync with 2.4.10 2015-09-28 15:33:56 -07:00
diff.h Merge branch 'jk/color-diff-plain-is-context' 2015-06-11 09:29:53 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c react to errors in xdi_diff 2015-09-28 14:57:10 -07:00
diffcore-rename.c
diffcore.h
dir.c Merge branch 'dt/untracked-subdir' into maint 2015-09-17 12:12:29 -07:00
dir.h Merge branch 'nd/untracked-cache' 2015-05-26 13:24:46 -07:00
editor.c
entry.c
environment.c Merge branch 'nd/stop-setenv-work-tree' into nd/clear-gitenv-upon-use-of-alias 2015-12-22 13:40:12 -08:00
exec_cmd.c Merge branch 'jk/git-no-more-argv0-path-munging' into maint 2015-05-26 13:49:18 -07:00
exec_cmd.h
fast-import.c fast-import: do less work when given "from" matches current branch head 2015-07-13 09:36:05 -07:00
fetch-pack.c Merge branch 'me/fetch-into-shallow-safety' into maint 2015-07-15 11:41:20 -07:00
fetch-pack.h
fmt-merge-msg.h
fsck.c Merge branch 'jc/fsck-retire-require-eoh' into maint 2015-07-27 12:21:46 -07:00
fsck.h
generate-cmdlist.sh generate-cmdlist: re-implement as shell script 2015-08-25 11:24:31 -07:00
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh Merge branch 'js/maint-am-skip-performance-regression' into maint 2015-09-17 12:03:02 -07:00
git-archimport.perl
git-bisect.sh
git-compat-util.h vreportf: report to arbitrary filehandles 2015-08-11 14:24:50 -07:00
git-cvsexportcommit.perl
git-cvsimport.perl Merge branch 'cn/cvsimport-perl-update' 2015-06-25 11:08:08 -07:00
git-cvsserver.perl
git-difftool--helper.sh
git-difftool.perl
git-filter-branch.sh filter-branch: avoid passing commit message through sed 2015-04-29 10:01:04 -07:00
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh mergetool-lib: fix default tool selection 2015-06-19 11:20:52 -07:00
git-mergetool.sh mergetool--lib: set IFS for difftool and mergetool 2015-05-20 13:13:42 -07:00
git-p4.py Merge branch 'ld/p4-changes-block-size' 2015-06-24 12:21:57 -07:00
git-parse-remote.sh
git-pull.sh pull: pass upload_pack only when it was given 2015-08-25 16:08:58 -07:00
git-quiltimport.sh
git-rebase--am.sh rebase: return non-zero error code if format-patch fails 2015-07-08 15:36:42 -07:00
git-rebase--interactive.sh Merge branch 'js/rebase-i-clean-up-upon-continue-to-skip' into maint 2015-08-03 10:41:34 -07:00
git-rebase--merge.sh
git-rebase.sh Merge branch 'jk/rebase-quiet-noop' into maint 2015-05-26 13:49:23 -07:00
git-relink.perl
git-remote-testgit.sh
git-request-pull.sh
git-send-email.perl send-email: further warn about unsupported sendmail aliases features 2015-06-01 15:53:19 -07:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'nd/multiple-work-trees' 2015-05-11 14:23:39 -07:00
git-stash.sh Merge branch 'jk/stash-require-clean-index' into maint 2015-06-25 23:03:27 -07:00
git-submodule.sh Sync with 2.4.10 2015-09-28 15:33:56 -07:00
git-svn.perl
git-web--browse.sh
git.c git: simplify environment save/restore logic 2016-01-27 15:45:55 -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 Merge branch 'js/sleep-without-select' 2015-06-24 12:21:47 -07:00
help.h
hex.c
http-backend.c Merge branch 'bc/object-id' 2015-06-05 12:17:37 -07:00
http-fetch.c
http-push.c
http-walker.c
http.c Sync with 2.4.10 2015-09-28 15:33:56 -07:00
http.h
ident.c
imap-send.c
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c Sync with 2.3.10 2015-09-28 15:28:31 -07:00
line-log.h
line-range.c
line-range.h
list-objects.c Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
list-objects.h
ll-merge.c Sync with 2.4.10 2015-09-28 15:33:56 -07:00
ll-merge.h
lockfile.c Merge branch 'js/sleep-without-select' 2015-06-24 12:21:47 -07:00
lockfile.h lockfile: allow file locking to be retried with a timeout 2015-05-14 14:51:08 -07:00
log-tree.c add_ref_decoration(): convert local variable original_sha1 to object_id 2015-05-25 12:19:34 -07:00
log-tree.h
mailmap.c
mailmap.h
match-trees.c
merge-blobs.c
merge-blobs.h
merge-recursive.c use file_exists() to check if a file exists in the worktree 2015-05-20 13:49:10 -07:00
merge-recursive.h
merge.c
mergesort.c
mergesort.h
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c Merge branch 'nd/multiple-work-trees' 2015-05-11 14:23:39 -07:00
notes-merge.h
notes-utils.c
notes-utils.h
notes.c Sync with 2.4.9 2015-09-04 10:43:23 -07:00
notes.h
object.c Merge branch 'jk/type-from-string-gently' into maint 2015-05-13 14:05:54 -07:00
object.h
pack-bitmap-write.c
pack-bitmap.c Merge branch 'es/osx-header-pollutes-mask-macro' into maint 2015-07-15 11:41:24 -07:00
pack-bitmap.h
pack-check.c
pack-objects.c
pack-objects.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c Merge branch 'jk/fix-alias-pager-config-key-warnings' into maint 2015-09-03 19:17:52 -07:00
parse-options-cb.c
parse-options.c
parse-options.h parse-options: align curly braces for all options 2015-07-29 13:31:51 -07:00
patch-delta.c
patch-ids.c
patch-ids.h
path.c Merge branch 'pt/xdg-config-path' into maint 2015-06-05 12:00:04 -07:00
pathspec.c
pathspec.h
pkt-line.c
pkt-line.h
preload-index.c
pretty.c
prio-queue.c
prio-queue.h
progress.c progress: treat "no terminal" as being in the foreground 2015-05-19 09:35:14 -07:00
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c add_one_ref(): rewrite to take an object_id argument 2015-05-25 12:19:34 -07:00
reachable.h
read-cache.c Merge branch 'jk/diagnose-config-mmap-failure' into maint 2015-06-25 11:02:11 -07:00
reflog-walk.c
reflog-walk.h
refs.c Merge branch 'mh/reporting-broken-refs-from-for-each-ref' into maint 2015-08-03 10:41:31 -07:00
refs.h each_ref_fn_adapter(): remove adapter 2015-05-25 12:19:39 -07:00
remote-curl.c
remote-testsvn.c
remote.c Merge branch 'bc/object-id' 2015-06-05 12:17:37 -07:00
remote.h remote.c: add branch_get_push 2015-05-22 09:33:08 -07:00
replace_object.c register_replace_ref(): rewrite to take an object_id argument 2015-05-25 12:19:35 -07:00
rerere.c Merge branch 'jk/rerere-forget-check-enabled' into maint 2015-06-05 12:00:25 -07:00
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'jk/log-missing-default-HEAD' into maint 2015-09-03 19:18:04 -07:00
revision.h
run-command.c run-command: don't warn on SIGPIPE deaths 2015-12-29 11:05:11 -08:00
run-command.h Merge branch 'nd/multiple-work-trees' 2015-05-11 14:23:39 -07:00
send-pack.c Merge branch 'bc/object-id' 2015-05-05 21:00:23 -07:00
send-pack.h
sequencer.c
sequencer.h
server-info.c add_info_ref(): rewrite to take an object_id argument 2015-05-25 12:19:35 -07:00
setup.c setup: update the right file in multiple checkouts 2015-08-25 09:39:08 -07:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c Sync with 2.4.9 2015-09-04 10:43:23 -07:00
sha1_name.c Merge branch 'bc/object-id' 2015-06-05 12:17:37 -07:00
shallow.c shallow: rewrite functions to take object_id arguments 2015-05-25 12:19:36 -07:00
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
split-index.c
split-index.h
strbuf.c Merge branch 'jh/strbuf-read-use-read-in-full' into maint 2015-09-03 19:17:50 -07:00
strbuf.h Merge branch 'mh/strbuf-read-file-returns-ssize-t' 2015-07-13 14:00:27 -07:00
streaming.c
streaming.h
string-list.c
string-list.h
submodule.c Merge branch 'bc/object-id' 2015-06-05 12:17:37 -07:00
submodule.h
symlinks.c
tag.c
tag.h
tar.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 commit: don't rewrite shared index unnecessarily 2015-08-31 08:41:07 -07:00
test-dump-untracked-cache.c
test-genrandom.c
test-hashmap.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-prio-queue.c
test-read-cache.c
test-regex.c
test-revision-walking.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1-array.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-list.c
test-subprocess.c
test-svn-fe.c
test-urlmatch-normalization.c
test-wildmatch.c
thread-utils.c
thread-utils.h
trace.c Merge branch 'nd/multiple-work-trees' 2015-05-11 14:23:39 -07:00
trace.h
trailer.c Merge branch 'cc/trailers-corner-case-fix' into maint 2015-09-03 19:18:03 -07:00
trailer.h
transport-helper.c Sync with 2.4.10 2015-09-28 15:33:56 -07:00
transport.c Sync with 2.4.10 2015-09-28 15:33:56 -07:00
transport.h Sync with 2.3.10 2015-09-28 15:28:31 -07:00
tree-diff.c
tree-walk.c tree-walk: learn get_tree_entry_follow_symlinks 2015-05-20 13:45:49 -07:00
tree-walk.h tree-walk: learn get_tree_entry_follow_symlinks 2015-05-20 13:45:49 -07:00
tree.c Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
tree.h Merge branch 'jk/squelch-missing-link-warning-for-unreachable' into maint 2015-06-25 11:02:10 -07:00
unicode_width.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Sync with 2.4.9 2015-09-04 10:43:23 -07:00
unpack-trees.h
update_unicode.sh
upload-pack.c Merge branch 'bc/object-id' 2015-06-05 12:17:37 -07:00
url.c
url.h
urlmatch.c
urlmatch.h
usage.c vreportf: avoid intermediate buffer 2015-08-11 14:29:36 -07:00
userdiff.c
userdiff.h
utf8.c
utf8.h Merge branch 'es/utf8-stupid-compiler-workaround' into maint 2015-07-15 11:41:23 -07:00
varint.c
varint.h
version.c
version.h
versioncmp.c
walker.c mark_complete(): rewrite to take an object_id argument 2015-05-25 12:19:37 -07:00
walker.h
wildmatch.c
wildmatch.h
wrap-for-bin.sh
wrapper.c help.c: wrap wait-only poll() invocation in sleep_millisec() 2015-06-05 15:00:32 -07:00
write_or_die.c
ws.c
wt-status.c Merge branch 'sg/wt-status-header-inclusion' into maint 2015-09-03 19:17:57 -07:00
wt-status.h wt-status: move #include "pathspec.h" to the header 2015-08-21 14:49:27 -07:00
xdiff-interface.c xdiff: reject files larger than ~1GB 2015-09-28 14:57:23 -07:00
xdiff-interface.h xdiff: reject files larger than ~1GB 2015-09-28 14:57:23 -07:00
zlib.c

README

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

	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.