Go to file
Jacob Keller 09d7b6c6fa sequencer: pass absolute GIT_DIR to exec commands
When we replaced the old shell script based interactive rebase in
commmit 18633e1a22 ("rebase -i: use the rebase--helper builtin",
2017-02-09) we introduced a regression of functionality in that the
GIT_DIR would be sent to the environment of the exec command as-is.

This generally meant that it would be passed as "GIT_DIR=.git", which
causes problems for any exec command that wants to run git commands in
a subdirectory.

This isn't a very large regression, since it is not that likely that the
exec command will run a git command, and even less likely that it will
need to do so in a subdir. This regression was discovered by a build
system which uses git-describe to find the current version of the build
system, and happened to do so from the src/ sub directory of the
project.

Fix this by passing in the absolute path of the git directory into the
child environment.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-11-02 10:53:23 +09:00
Documentation Merge branch 'bw/attr' 2017-02-27 13:57:14 -08:00
block-sha1
builtin Merge branch 'js/rebase-helper' 2017-02-27 13:57:14 -08:00
ci
compat Merge branch 'js/mingw-isatty' 2017-02-16 14:45:13 -08:00
contrib Merge branch 'sg/completion' 2017-02-27 13:57:14 -08:00
ewah
git-gui
gitk-git Merge git://ozlabs.org/~paulus/gitk 2017-01-18 10:27:59 -08:00
gitweb
mergetools Merge branch 'da/mergetool-xxdiff-hotkey' into maint 2017-01-17 15:11:05 -08:00
perl Merge branch 'svn-escape-backslash' of git://bogomips.org/git-svn 2017-02-20 22:01:59 -08:00
po l10n: zh_CN: for git v2.12.0 l10n round 2 2017-02-25 00:19:14 +08:00
ppc
refs Merge branch 'mh/ref-remove-empty-directory' 2017-02-27 13:57:12 -08:00
t sequencer: pass absolute GIT_DIR to exec commands 2017-11-02 10:53:23 +09:00
templates
vcs-svn
xdiff Merge branch 'jc/retire-compaction-heuristics' 2017-01-10 15:24:27 -08:00
.gitattributes
.gitignore rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
.mailmap Merge branch 'ps/urlmatch-wildcard' 2017-02-27 13:57:12 -08:00
.travis.yml travis-ci: fix Perforce install on macOS 2017-01-23 10:55:00 -08:00
COPYING
GIT-VERSION-GEN Git 2.12 2017-02-24 10:49:58 -08:00
INSTALL
LGPL-2.1
Makefile Merge branch 'js/rebase-helper' 2017-02-27 13:57:14 -08:00
README.md README: replace gmane link with public-inbox 2016-12-15 09:30:09 -08:00
RelNotes Almost ready for 2.11.1 2017-01-17 15:19:11 -08:00
abspath.c Merge branch 'rs/absolute-pathdup' 2017-02-02 13:36:55 -08:00
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
apply.c apply: use SWAP macro 2017-01-30 14:07:52 -08:00
apply.h
archive-tar.c
archive-zip.c archive-zip: load userdiff config 2017-01-07 18:49:30 -08:00
archive.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
archive.h
argv-array.c
argv-array.h
attr.c attr: reformat git_attr_set_direction() function 2017-02-01 13:46:53 -08:00
attr.h attr: reformat git_attr_set_direction() function 2017-02-01 13:46:53 -08:00
base85.c
bisect.c
bisect.h
blob.c
blob.h
branch.c refs: add option core.logAllRefUpdates = always 2017-01-31 10:01:24 -08:00
branch.h
builtin.h rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
bulk-checkin.c
bulk-checkin.h
bundle.c
bundle.h
cache-tree.c
cache-tree.h
cache.h Merge branch 'mh/ref-remove-empty-directory' 2017-02-27 13:57:12 -08:00
check-builtins.sh
check-racy.c
check_bindir
color.c Merge branch 'nd/log-graph-configurable-colors' 2017-02-02 13:36:58 -08:00
color.h
column.c
column.h
combine-diff.c
command-list.txt relink: retire the command 2017-01-25 14:42:37 -08:00
commit-slab.h
commit.c commit.c: use strchrnul() to scan for one line 2017-02-01 13:46:51 -08:00
commit.h
common-main.c attr: use hashmap for attribute dictionary 2017-02-01 13:46:53 -08:00
config.c Merge branch 'nd/config-misc-fixes' into maint 2017-01-31 13:32:06 -08:00
config.mak.in
config.mak.uname
configure.ac
connect.c
connect.h
connected.c
connected.h
convert.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
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: use SWAP macro 2017-01-30 14:23:00 -08:00
diff.c Merge branch 'rs/swap' 2017-02-15 12:54:19 -08:00
diff.h
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir-iterator.c
dir-iterator.h
dir.c dir: avoid allocation in fill_directory() 2017-02-08 13:38:41 -08:00
dir.h submodule: add absorb-git-dir function 2016-12-12 15:15:07 -08:00
editor.c
entry.c
environment.c refs: add option core.logAllRefUpdates = always 2017-01-31 10:01:24 -08:00
exec_cmd.c Merge branch 'js/exec-path-coverity-workaround' into maint 2017-01-31 13:32:10 -08:00
exec_cmd.h
fast-import.c Merge branch 'mh/fast-import-notes-fix-new' into maint 2017-01-31 13:32:05 -08:00
fetch-pack.c fetch-pack: cache results of for_each_alternate_ref 2017-02-08 15:39:55 -08:00
fetch-pack.h
fmt-merge-msg.h
fsck.c fsck: lazily load types under --connectivity-only 2017-01-26 10:51:09 -08:00
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl Merge branch 'rt/align-add-i-help-text' 2017-02-24 10:48:08 -08:00
git-archimport.perl
git-bisect.sh
git-compat-util.h Merge branch 'rs/swap' 2017-02-15 12:54:19 -08:00
git-cvsexportcommit.perl
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-filter-branch.sh
git-instaweb.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh mergetool: fix running in subdir when rerere enabled 2017-01-10 13:22:51 -08:00
git-p4.py Merge branch 'ls/p4-path-encoding' 2017-02-16 14:45:12 -08:00
git-parse-remote.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh rebase -i: use the rebase--helper builtin 2017-02-09 14:55:40 -08:00
git-rebase--merge.sh
git-rebase.sh Merge branch 'nd/rebase-forget' 2016-12-19 14:45:35 -08:00
git-remote-testgit.sh
git-request-pull.sh request-pull: drop old USAGE stuff 2017-01-15 16:23:23 -08:00
git-send-email.perl i18n: send-email: mark composing message for translation 2016-12-14 11:00:06 -08:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'va/i18n-even-more' 2016-12-27 00:11:45 -08:00
git-stash.sh Merge branch 'jk/stash-disable-renames-internally' into maint 2017-01-17 14:49:30 -08:00
git-submodule.sh Merge branch 'sb/submodule-update-initial-runs-custom-script' 2017-02-03 11:25:19 -08:00
git-svn.perl
git-web--browse.sh
git.c rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
git.rc
gpg-interface.c
gpg-interface.h gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
graph.c Merge branch 'rs/swap' 2017-02-15 12:54:19 -08:00
graph.h
grep.c grep: add submodules as a grep source type 2016-12-22 11:47:33 -08:00
grep.h grep: add submodules as a grep source type 2016-12-22 11:47:33 -08:00
hashmap.c
hashmap.h
help.c help: improve is_executable() on Windows 2017-01-30 09:04:17 -08:00
help.h
hex.c
http-backend.c
http-fetch.c
http-push.c
http-walker.c Merge branch 'jk/http-walker-limit-redirect-2.9' 2016-12-19 14:45:32 -08:00
http.c Merge branch 'jk/http-walker-limit-redirect' into maint 2017-01-17 14:49:29 -08:00
http.h Merge branch 'jk/http-walker-limit-redirect' into maint 2017-01-17 14:49:29 -08:00
ident.c
imap-send.c
iterator.h
khash.h
kwset.c
kwset.h
levenshtein.c
levenshtein.h
line-log.c
line-log.h
line-range.c use SWAP macro 2017-01-30 14:17:00 -08:00
line-range.h
list-objects.c
list-objects.h
list.h
ll-merge.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
ll-merge.h
lockfile.c
lockfile.h lockfile: move REPORT_ON_ERROR bit elsewhere 2016-12-27 09:12:09 -08:00
log-tree.c
log-tree.h
mailinfo.c Merge branch 'jt/mailinfo-fold-in-body-headers' into maint 2017-01-17 15:11:06 -08:00
mailinfo.h
mailmap.c
mailmap.h
match-trees.c
merge-blobs.c
merge-blobs.h
merge-recursive.c Merge branch 'mm/merge-rename-delete-message' 2017-02-27 13:57:12 -08:00
merge-recursive.h
merge.c
mergesort.c
mergesort.h
mru.c
mru.h
name-hash.c
notes-cache.c
notes-cache.h
notes-merge.c
notes-merge.h
notes-utils.c
notes-utils.h
notes.c
notes.h
object.c use SWAP macro 2017-01-30 14:17:00 -08:00
object.h fetch-pack: cache results of for_each_alternate_ref 2017-02-08 15:39:55 -08:00
oidset.c add oidset API 2017-02-08 15:39:55 -08:00
oidset.h add oidset API 2017-02-08 15:39:55 -08:00
pack-bitmap-write.c
pack-bitmap.c
pack-bitmap.h
pack-check.c
pack-objects.c
pack-objects.h pack-objects: enforce --depth limit in reused deltas 2017-01-27 16:24:44 -08:00
pack-revindex.c use SWAP macro 2017-01-30 14:17:00 -08:00
pack-revindex.h
pack-write.c
pack.h
pager.c
parse-options-cb.c
parse-options.c parse-options: print "fatal:" before usage_msg_opt() 2016-12-14 09:58:09 -08:00
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c Merge branch 'js/normalize-path-copy-ceil' into maint 2017-01-17 15:11:03 -08:00
pathspec.c pathspec: don't error out on all-exclusionary pathspec patterns 2017-02-10 13:19:40 -08:00
pathspec.h pathspec: copy and free owned memory 2017-01-08 18:04:17 -08:00
pkt-line.c
pkt-line.h
preload-index.c
pretty.c
prio-queue.c use SWAP macro 2017-01-30 14:17:00 -08:00
prio-queue.h
progress.c
progress.h
prompt.c
prompt.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c Merge branch 'sb/in-core-index-doc' 2017-01-31 13:14:59 -08:00
ref-filter.c Merge branch 'kn/ref-filter-branch-list' 2017-02-27 13:57:13 -08:00
ref-filter.h Merge branch 'kn/ref-filter-branch-list' 2017-02-27 13:57:13 -08:00
reflog-walk.c
reflog-walk.h
refs.c refs: add option core.logAllRefUpdates = always 2017-01-31 10:01:24 -08:00
refs.h refs: add option core.logAllRefUpdates = always 2017-01-31 10:01:24 -08:00
remote-curl.c Merge branch 'dt/smart-http-detect-server-going-away' into maint 2017-01-17 15:19:03 -08:00
remote-testsvn.c
remote.c Merge branch 'km/branch-get-push-while-detached' into maint 2017-01-31 13:32:08 -08:00
remote.h remote rename: more carefully determine whether a remote is configured 2017-01-19 14:04:23 -08:00
replace_object.c
rerere.c
rerere.h
resolve-undo.c
resolve-undo.h
revision.c
revision.h
run-command.c Merge branch 'js/mingw-hooks-with-exe-suffix' 2017-02-02 13:36:57 -08:00
run-command.h execv_dashed_external: wait for child on signal death 2017-01-09 13:41:40 -08:00
send-pack.c
send-pack.h
sequencer.c sequencer: pass absolute GIT_DIR to exec commands 2017-11-02 10:53:23 +09:00
sequencer.h sequencer (rebase -i): learn about the 'verbose' mode 2017-01-09 14:57:29 -08:00
server-info.c
setup.c cache.h: expose the dying procedure for reading gitlinks 2017-01-26 11:00:58 -08:00
sh-i18n--envsubst.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
sha1_file.c Merge branch 'mh/ref-remove-empty-directory' 2017-02-27 13:57:12 -08:00
sha1_name.c
shallow.c Merge branch 'nd/shallow-fixup' into maint 2017-01-17 15:11:05 -08:00
shell.c
shortlog.h shortlog: group by committer information 2016-12-15 16:19:13 -08:00
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
split-index.c
split-index.h
strbuf.c
strbuf.h use SWAP macro 2017-01-30 14:17:00 -08:00
streaming.c
streaming.h
string-list.c string-list: use QSORT_S in string_list_sort() 2017-01-23 11:02:38 -08:00
string-list.h
submodule-config.c Merge branch 'bw/push-submodule-only' 2017-01-31 13:14:56 -08:00
submodule-config.h Merge branch 'bw/grep-recurse-submodules' 2017-01-18 15:12:11 -08:00
submodule.c submodule absorbing: fix worktree/gitdir pointers recursively for non-moves 2017-01-26 11:01:04 -08:00
submodule.h Merge branch 'bw/push-submodule-only' 2017-01-31 13:14:56 -08:00
symlinks.c
tag.c gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag 2017-01-17 16:10:22 -08:00
tag.h
tar.h
tempfile.c tempfile: avoid "ferror | fclose" trick 2017-02-16 14:15:55 -08:00
tempfile.h
thread-utils.c
thread-utils.h
tmp-objdir.c tmp-objdir: quote paths we add to alternates 2016-12-12 15:10:46 -08:00
tmp-objdir.h
trace.c
trace.h
trailer.c
trailer.h
transport-helper.c push options: pass push options to the transport helper 2017-02-08 15:45:01 -08:00
transport.c for_each_alternate_ref: replace transport code with for-each-ref 2017-02-08 15:39:55 -08:00
transport.h for_each_alternate_ref: pass name/oid instead of ref struct 2017-02-08 15:39:55 -08:00
tree-diff.c
tree-walk.c grep: enable recurse-submodules to work on <tree> objects 2016-12-22 11:47:33 -08:00
tree-walk.h
tree.c
tree.h
unicode_width.h unicode_width.h: update the width tables to Unicode 9.0 2016-12-14 09:48:07 -08:00
unimplemented.sh
unix-socket.c
unix-socket.h
unpack-trees.c Merge branch 'sb/unpack-trees-super-prefix' 2017-02-03 11:25:18 -08:00
unpack-trees.h
upload-pack.c
url.c
url.h
urlmatch.c urlmatch: allow globbing for the URL host part 2017-02-01 13:22:50 -08:00
urlmatch.h urlmatch: include host in urlmatch ranking 2017-02-01 13:22:46 -08:00
usage.c Merge branch 'jk/vreport-sanitize' 2017-01-31 13:14:56 -08:00
userdiff.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
userdiff.h
utf8.c
utf8.h
varint.c
varint.h
version.c
version.h
versioncmp.c versioncmp: generalize version sort suffix reordering 2017-01-12 12:25:24 -08:00
walker.c
walker.h
wildmatch.c
wildmatch.h
worktree.c Merge branch 'rs/absolute-pathdup' 2017-02-02 13:36:55 -08:00
worktree.h worktree: check if a submodule uses worktrees 2016-12-12 15:15:07 -08:00
wrap-for-bin.sh
wrapper.c
write_or_die.c
ws.c attr: convert git_check_attrs() callers to use the new API 2017-02-01 13:46:52 -08:00
wt-status.c Merge branch 'rs/object-id' 2017-02-03 11:25:19 -08:00
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

README.md

Git - fast, scalable, distributed revision control system

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.

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

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-.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).

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 https://public-inbox.org/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.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (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