Go to file
SZEDER Gábor b7be4366ea completion: respect $GIT_DIR
The __gitdir() helper function finds out the path of the git
repository by running 'git rev-parse --git-dir'.  However, it has a
shortcut first to avoid the overhead of running a git command in a
subshell when the current directory is at the top of the work tree,
i.e. when it contains a '.git' subdirectory.

If the 'GIT_DIR' environment variable is set then it specifies the
path to the git repository, and the autodetection of the '.git'
directory is not necessary.  However, $GIT_DIR is only taken into
acocunt by 'git rev-parse --git-dir', and the check for the '.git'
subdirectory is performed first, so it wins over the path given in
$GIT_DIR.

There are several completion (helper) functions that depend on
__gitdir(), and when the above case triggers the completion script
will do weird things, like offering refs, aliases, or stashes from a
different repository, or displaying wrong or broken prompt, etc.

So check first whether $GIT_DIR is set, and only proceed with checking
the '.git' directory in the current directory if it isn't.  'git
rev-parse' would also check whether the path in $GIT_DIR is a proper
'.git' directory, i.e. 'HEAD', 'refs/', and 'objects/' are present and
accessible, but we don't have to be that thorough for the bash prompt.
And we've lived with an equally permissive check for '.git' in the
current working directory for years anyway.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-06-19 15:48:12 -07:00
Documentation Update draft release notes to 1.7.11 (11th batch) 2012-05-11 11:40:43 -07:00
block-sha1
builtin Merge branch 'ef/checkout-empty' 2012-05-11 11:34:17 -07:00
compat remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
contrib completion: respect $GIT_DIR 2012-06-19 15:48:12 -07:00
git-gui
git_remote_helpers
gitk-git
gitweb Merge branch 'kk/gitweb-omit-expensive' 2012-04-29 17:52:00 -07:00
mergetools
perl
po l10n: Update German translation 2012-05-02 07:46:35 +08:00
ppc
t completion: respect $GIT_DIR 2012-06-19 15:48:12 -07:00
templates
vcs-svn remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
xdiff Merge branch 'jc/diff-algo-cleanup' into maint 2012-05-11 11:19:27 -07:00
.gitattributes
.gitignore Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
.mailmap
COPYING
GIT-VERSION-GEN Git 1.7.10.2 2012-05-11 11:25:28 -07:00
INSTALL
LGPL-2.1
Makefile Merge branch 'jc/install-no-hardlinks' 2012-05-10 10:49:18 -07:00
README
RelNotes Start preparing for 1.7.10.2 2012-05-07 13:24:32 -07:00
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c archive-tar: stream large blobs to tar file 2012-05-03 10:22:56 -07:00
archive-zip.c archive-zip: streaming for deflated files 2012-05-03 10:22:57 -07:00
archive.c archive: delegate blob reading to backend 2012-05-03 10:22:56 -07:00
archive.h archive: delegate blob reading to backend 2012-05-03 10:22:56 -07:00
argv-array.c
argv-array.h
attr.c
attr.h
base85.c
bisect.c bisect: copy filename string obtained from git_path() 2012-05-03 13:15:35 -07:00
bisect.h
blob.c
blob.h
branch.c
branch.h
builtin.h Add column layout skeleton and git-column 2012-04-27 09:26:37 -07:00
bulk-checkin.c
bulk-checkin.h
bundle.c Merge branch 'nd/i18n' 2012-05-02 13:51:35 -07:00
bundle.h
cache-tree.c
cache-tree.h
cache.h Merge branch 'ct/advise-push-default' into maint 2012-05-11 11:18:43 -07:00
check-builtins.sh
check-racy.c
check_bindir
color.c
color.h
column.c column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
column.h column: support piping stdout to external git-column process 2012-04-27 09:26:38 -07:00
combine-diff.c Merge branch 'rs/combine-diff-zero-context-at-the-beginning' into maint 2012-04-26 10:35:26 -07:00
command-list.txt Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
commit.c commit: remove commit_list_reverse() 2012-04-25 14:51:21 -07:00
commit.h Merge branch 'jk/maint-reflog-walk-count-vs-time' 2012-05-11 11:30:08 -07:00
config.c Merge branch 'mm/include-userpath' into maint 2012-05-10 10:33:05 -07:00
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 i18n: mark relative dates for translation 2012-04-24 14:55:48 -07:00
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c
diff-no-index.c diff --no-index: use strbuf for temporary pathnames 2012-04-26 09:13:29 -07:00
diff.c Merge branch 'jc/diff-algo-cleanup' into maint 2012-05-11 11:19:27 -07:00
diff.h Merge branch 'jc/diff-algo-cleanup' into maint 2012-05-11 11:19:27 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir.c Merge branch 'rs/maint-dir-strbuf' into rs/dir-strbuf 2012-05-08 09:43:40 -07:00
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 remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
fsck.h
generate-cmdlist.sh i18n: help: mark strings for translation 2012-04-24 14:55:48 -07:00
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh Merge branch 'jc/am-report-3way' 2012-04-20 15:49:37 -07:00
git-archimport.perl
git-bisect.sh
git-compat-util.h
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh difftool: teach difftool to handle directory diffs 2012-04-23 11:59:34 -07:00
git-difftool.perl difftool: print list of valid tools with '--tool-help' 2012-04-23 12:00:42 -07:00
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 p4: submit files with wildcards 2012-04-30 16:00:08 -07:00
git-parse-remote.sh
git-pull.sh
git-quiltimport.sh
git-rebase--am.sh git-rebase: add keep_empty flag 2012-04-24 15:24:14 -07:00
git-rebase--interactive.sh Merge branch 'nl/rebase-i-cheat-sheet' into maint 2012-05-10 10:29:14 -07:00
git-rebase--merge.sh
git-rebase.sh git-rebase: add keep_empty flag 2012-04-24 15:24:14 -07:00
git-relink.perl Consistently use perl from /usr/bin/ for scripts 2012-05-01 13:32:17 -07:00
git-remote-testgit.py git-remote-testgit: fix race when spawning fast-import 2012-04-24 14:54:24 -07:00
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 Merge branch 'rj/submodule-mswin-path' 2012-04-23 13:01:49 -07:00
git-svn.perl Merge branch 'jk/maint-gitweb-test-use-sane-perl' into maint 2012-05-07 13:17:31 -07:00
git-web--browse.sh
git.c Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
git.spec.in
gpg-interface.c
gpg-interface.h
graph.c
graph.h
grep.c Merge branch 'ah/maint-grep-double-init' into maint 2012-05-11 11:16:09 -07:00
grep.h
hash.c
hash.h
help.c Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
help.h Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
hex.c
http-backend.c
http-fetch.c
http-push.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
http-walker.c
http.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
http.h
ident.c
imap-send.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
kwset.c
kwset.h
levenshtein.c
levenshtein.h
list-objects.c
list-objects.h
ll-merge.c remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
ll-merge.h
lockfile.c
log-tree.c Merge branch 'jk/maint-reflog-walk-count-vs-time' 2012-05-11 11:30:08 -07:00
log-tree.h
mailmap.c
mailmap.h
match-trees.c
merge-file.c
merge-file.h
merge-recursive.c Merge branch 'jc/diff-algo-cleanup' into maint 2012-05-11 11:19:27 -07:00
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 remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
object.h
pack-check.c
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c
pack.h
pager.c Stop starting pager recursively 2012-04-27 09:26:38 -07:00
parse-options-cb.c
parse-options.c
parse-options.h Merge branch 'nd/columns' 2012-05-03 15:13:31 -07:00
patch-delta.c
patch-ids.c
patch-ids.h
path.c
pkt-line.c
pkt-line.h
preload-index.c
pretty.c Merge branch 'jk/maint-reflog-walk-count-vs-time' 2012-05-11 11:30:08 -07:00
progress.c
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c Merge branch 'jc/index-v4' 2012-05-02 13:51:13 -07:00
reflog-walk.c Merge branch 'jk/maint-reflog-walk-count-vs-time' 2012-05-11 11:30:08 -07:00
reflog-walk.h Merge branch 'jk/maint-reflog-walk-count-vs-time' 2012-05-11 11:30:08 -07:00
refs.c Merge branch 'mh/ref-api-lazy-loose' 2012-05-10 10:49:08 -07:00
refs.h
remote-curl.c Merge branch 'jk/maint-push-progress' into maint 2012-05-10 10:08:54 -07:00
remote.c
remote.h
replace_object.c
rerere.c
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'rs/commit-list-append' 2012-04-29 17:51:30 -07:00
revision.h Merge branch 'cb/cherry-pick-rev-path-confusion' 2012-04-27 13:58:02 -07:00
run-command.c Merge branch 'jk/run-command-eacces' into maint 2012-04-26 10:51:41 -07:00
run-command.h
send-pack.h
sequencer.c Merge branch 'nh/empty-rebase' 2012-05-07 13:29:16 -07:00
sequencer.h git-cherry-pick: Add keep-redundant-commits option 2012-04-24 14:52:12 -07:00
server-info.c
setup.c
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c remove blank filename in error message 2012-04-30 15:45:54 -07:00
sha1_name.c
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c strbuf: convenience format functions with \n automatically appended 2012-04-24 14:55:48 -07:00
strbuf.h strbuf: convenience format functions with \n automatically appended 2012-04-24 14:55:48 -07:00
streaming.c streaming: void pointer instead of char pointer 2012-05-03 10:22:56 -07:00
streaming.h streaming: void pointer instead of char pointer 2012-05-03 10:22:56 -07:00
string-list.c
string-list.h
submodule.c
submodule.h Merge branch 'hv/submodule-recurse-push' 2012-04-24 14:40:20 -07:00
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-credential.c
test-ctype.c
test-date.c i18n: mark relative dates for translation 2012-04-24 14:55:48 -07:00
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-revision-walking.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 remove superfluous newlines in error messages 2012-04-30 15:45:51 -07:00
transport.c Merge branch 'ct/advise-push-default' into maint 2012-05-11 11:18:43 -07:00
transport.h Merge branch 'hv/submodule-recurse-push' 2012-04-24 14:40:20 -07:00
tree-diff.c
tree-walk.c
tree-walk.h
tree.c
tree.h
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Merge branch 'pw/message-cleanup' 2012-05-02 13:53:35 -07:00
unpack-trees.h
upload-pack.c
url.c
url.h
usage.c
userdiff.c
userdiff.h
utf8.c
utf8.h
varint.c
varint.h
walker.c
walker.h
wrap-for-bin.sh
wrapper.c
write_or_die.c
ws.c
wt-status.c Merge branch 'jk/maint-status-porcelain-z-b' into HEAD 2012-05-08 04:55:35 -04:00
wt-status.h status: refactor colopts handling 2012-05-08 04:57:42 -04:00
xdiff-interface.c
xdiff-interface.h
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.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.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://marc.theaimsgroup.com/?l=git and other archival
sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.