Go to file
Ben Walton b3e34dddc0 Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd
During the testing of the 1.7.10 rc series on Solaris for OpenCSW, it
was discovered that t7006-pager was failing due to finding a bad "sh"
in PATH after a call to execvp("sh", ...).  This call was setup by
run_command.c:prepare_shell_cmd.

The PATH in use at the time saw /opt/csw/bin given precedence to
traditional Solaris paths such as /usr/bin and /usr/xpg4/bin.  A
package named schilyutils (Joerg Schilling's utilities) was installed
on the build system and it delivered a modified version of the
traditional Solaris /usr/bin/sh as /opt/csw/bin/sh.  This version of
sh suffers from many of the same problems as /usr/bin/sh.

The command-specific pager test failed due to the broken "sh" handling
^ as a pipe character.  It tried to fork two processes when it
encountered "sed s/^/foo:/" as the pager command.  This problem was
entirely dependent on the PATH of the user at runtime.

Possible fixes for this issue are:

1. Use the standard system() or popen() which both launch a POSIX
   shell on Solaris as long as _POSIX_SOURCE is defined.

2. The git wrapper could prepend SANE_TOOL_PATH to PATH thus forcing
   all unqualified commands run to use the known good tools on the
   system.

3. The run_command.c:prepare_shell_command() could use the same
   SHELL_PATH that is in the #! line of all all scripts and not rely
   on PATH to find the sh to run.

Option 1 would preclude opening a bidirectional pipe to a filter
script and would also break git for Windows as cmd.exe is spawned from
system() (cf. v1.7.5-rc0~144^2, "alias: use run_command api to execute
aliases, 2011-01-07).

Option 2 is not friendly to users as it would negate their ability to
use tools of their choice in many cases.  Alternately, injecting
SANE_TOOL_PATH such that it takes precedence over /bin and /usr/bin
(and anything with lower precedence than those paths) as
git-sh-setup.sh does would not solve the problem either as the user
environment could still allow a bad sh to be found.  (Many OpenCSW
users will have /opt/csw/bin leading their PATH and some subset would
have schilyutils installed.)

Option 3 allows us to use a known good shell while still honouring the
users' PATH for the utilities being run.  Thus, it solves the problem
while not negatively impacting either users or git's ability to run
external commands in convenient ways.  Essentially, the shell is a
special case of tool that should not rely on SANE_TOOL_PATH and must
be called explicitly.

With this patch applied, any code path leading to
run_command.c:prepare_shell_cmd can count on using the same sane shell
that all shell scripts in the git suite use.  Both the build system
and run_command.c will default this shell to /bin/sh unless
overridden.

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-03 17:24:20 -07:00
Documentation Git 1.7.10-rc3 2012-03-28 11:18:42 -07:00
block-sha1
…
builtin Merge branch 'maint-1.7.8' into maint 2012-03-20 15:53:30 -07:00
compat Merge branch 'bw/inet-pton-ntop-compat' into maint 2012-02-13 23:26:31 -08:00
contrib correct spelling: an URL -> a URL 2012-03-28 08:47:23 -07:00
git-gui
…
git_remote_helpers
…
gitk-git Merge gitk changes from Paul Mackerras at git://ozlabs.org/~paulus/gitk 2012-03-24 01:30:30 -07:00
gitweb correct a few doubled-word nits in comments and documentation 2012-03-28 11:18:35 -07:00
mergetools mergetools: add a plug-in to support DeltaWalker 2012-03-05 09:31:47 -08:00
perl correct spelling: an URL -> a URL 2012-03-28 08:47:23 -07:00
po correct a few doubled-word nits in comments and documentation 2012-03-28 11:18:35 -07:00
ppc
…
t tests: unset COLUMNS inherited from environment 2012-03-27 07:56:57 -07:00
templates
…
vcs-svn vcs-svn: suppress a -Wtype-limits warning 2012-02-02 11:05:18 -08:00
xdiff Merge branch 'rs/diff-postimage-in-context' 2012-01-29 13:18:55 -08:00
.gitattributes
…
.gitignore Merge branch 'svn-fe' of git://repo.or.cz/git/jrn into jn/svn-fe 2012-01-27 11:20:00 -08:00
.mailmap .mailmap: unify various old mail addresses of gitster 2012-03-23 14:40:39 -07:00
COPYING
…
GIT-VERSION-GEN Git 1.7.10-rc3 2012-03-28 11:18:42 -07:00
INSTALL Fix build problems related to profile-directed optimization 2012-02-06 00:15:12 -08:00
LGPL-2.1
…
Makefile Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd 2012-04-03 17:24:20 -07:00
README README: point to Documentation/SubmittingPatches 2012-02-23 11:35:59 -08:00
RelNotes Git 1.7.9.5 2012-03-26 12:29:25 -07:00
abspath.c
…
aclocal.m4
…
advice.c Merge branch 'nd/clone-detached' 2012-01-31 22:24:23 -08:00
advice.h clone: print advice on checking out detached HEAD 2012-01-16 16:26:27 -08:00
alias.c
…
alloc.c
…
archive-tar.c
…
archive-zip.c
…
archive.c
…
archive.h
…
argv-array.c
…
argv-array.h
…
attr.c
…
attr.h correct a few doubled-word nits in comments and documentation 2012-03-28 11:18:35 -07:00
base85.c
…
bisect.c
…
bisect.h rev-list: fix --verify-objects --quiet becoming --objects 2012-02-28 10:47:30 -08:00
blob.c
…
blob.h
…
branch.c
…
branch.h
…
builtin.h
…
bulk-checkin.c
…
bulk-checkin.h
…
bundle.c Merge branch 'tr/maint-bundle-boundary' into maint 2012-03-12 15:46:54 -07:00
bundle.h
…
cache-tree.c Merge branch 'jc/maint-commit-ignore-i-t-a' into maint 2012-02-16 14:08:00 -08:00
cache-tree.h cache-tree: update API to take abitrary flags 2012-02-07 16:35:43 -08:00
cache.h Merge branch 'jh/threadable-symlink-check' 2012-03-06 14:53:07 -08:00
check-builtins.sh
…
check-racy.c
…
check_bindir
…
color.c
…
color.h
…
combine-diff.c
…
command-list.txt
…
commit.c Merge branch 'nd/index-pack-no-recurse' 2012-01-29 13:18:56 -08:00
commit.h
…
config.c Merge branch 'ms/maint-config-error-at-eol-linecount' into maint 2012-03-26 12:10:05 -07:00
config.mak.in Makefile: introduce CHARSET_LIB to link with -lcharset 2012-02-13 00:11:01 -08:00
configure.ac configure: allow user to prevent $PATH "sanitization" on Solaris 2012-03-09 11:39:51 -08:00
connect.c
…
connected.c fetch/receive: remove over-pessimistic connectivity check 2012-03-15 15:23:17 -07:00
connected.h
…
convert.c Merge branch 'jk/maint-avoid-streaming-filtered-contents' into maint 2012-03-04 22:16:40 -08:00
convert.h teach convert_to_git a "dry run" mode 2012-02-24 14:11:27 -08:00
copy.c
…
credential-cache--daemon.c
…
credential-cache.c credential-cache: ignore "connection refused" errors 2012-01-16 22:15:19 -08:00
credential-store.c
…
credential.c
…
credential.h
…
csum-file.c
…
csum-file.h
…
ctype.c Merge branch 'jc/pickaxe-ignore-case' 2012-03-07 12:12:59 -08:00
daemon.c
…
date.c Merge branch 'jc/parse-date-raw' into maint 2012-02-13 11:42:15 -08:00
decorate.c
…
decorate.h
…
delta.h
…
diff-delta.c
…
diff-lib.c diff-index: enable recursive pathspec matching in unpack_trees 2012-01-18 15:44:02 -08:00
diff-no-index.c
…
diff.c Merge branch 'jc/maint-diff-patch-header' into maint 2012-03-12 15:46:32 -07:00
diff.h Merge branch 'jc/pickaxe-ignore-case' 2012-03-07 12:12:59 -08:00
diffcore-break.c
…
diffcore-delta.c
…
diffcore-order.c
…
diffcore-pickaxe.c pickaxe: allow -i to search in patch case-insensitively 2012-02-28 16:15:29 -08:00
diffcore-rename.c
…
diffcore.h
…
dir.c
…
dir.h
…
editor.c
…
entry.c
…
environment.c
…
exec_cmd.c
…
exec_cmd.h
…
fast-import.c Merge branch 'jn/maint-fast-import-empty-ls' into maint 2012-03-26 12:10:25 -07:00
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 am: officially deprecate -b/--binary option 2012-03-13 12:21:04 -07:00
git-archimport.perl
…
git-bisect.sh
…
git-compat-util.h Merge branch 'jc/pickaxe-ignore-case' 2012-03-07 12:12:59 -08:00
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 mergetool: Provide an empty file when needed 2012-01-23 11:50:22 -08:00
git-parse-remote.sh Make git-{pull,rebase} message without tracking information friendlier 2012-03-04 23:00:57 -08:00
git-pull.sh Make git-{pull,rebase} message without tracking information friendlier 2012-03-04 23:00:57 -08:00
git-quiltimport.sh
…
git-rebase--am.sh
…
git-rebase--interactive.sh
…
git-rebase--merge.sh rebase -m: only call "notes copy" when rewritten exists and is non-empty 2012-02-26 16:32:37 -08:00
git-rebase.sh Make git-{pull,rebase} message without tracking information friendlier 2012-03-04 23:00:57 -08:00
git-relink.perl
…
git-remote-testgit.py
…
git-repack.sh
…
git-request-pull.sh request-pull: explicitly ask tags/$name to be pulled 2012-01-31 21:27:58 -08:00
git-send-email.perl
…
git-sh-i18n.sh i18n: fix auto detection of gettext scheme for shell scripts 2012-03-12 14:41:15 -07:00
git-sh-setup.sh Merge branch 'jc/parse-date-raw' into maint 2012-02-13 11:42:15 -08:00
git-stash.sh
…
git-submodule.sh submodules: fix ambiguous absolute paths under Windows 2012-03-04 21:22:46 -08:00
git-svn.perl git-svn.perl: fix a false-positive in the "already exists" test 2012-02-21 21:37:31 +00:00
git-web--browse.sh
…
git.c
…
git.spec.in git.spec: Workaround localized messages not put in any RPM 2012-02-03 23:06:30 -08:00
gpg-interface.c
…
gpg-interface.h
…
graph.c
…
graph.h
…
grep.c Merge branch 'jc/pickaxe-ignore-case' 2012-03-07 12:12:59 -08:00
grep.h grep: respect diff attributes for binary-ness 2012-02-02 10:36:08 -08:00
hash.c
…
hash.h
…
help.c pager: find out the terminal width before spawning the pager 2012-02-13 15:08:47 -08:00
help.h
…
hex.c
…
http-backend.c
…
http-fetch.c
…
http-push.c
…
http-walker.c
…
http.c correct spelling: an URL -> a URL 2012-03-28 08:47:23 -07:00
http.h correct spelling: an URL -> a URL 2012-03-28 08:47:23 -07:00
ident.c
…
imap-send.c Sync with 1.7.6.6 2012-02-05 23:53:21 -08:00
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 Merge branch 'nd/maint-refname-in-hierarchy-check' 2012-01-29 13:18:51 -08:00
log-tree.h
…
mailmap.c mailmap: always return a plain mail address from map_user() 2012-02-06 14:00:06 -08:00
mailmap.h
…
match-trees.c
…
merge-file.c
…
merge-file.h
…
merge-recursive.c cache-tree: update API to take abitrary flags 2012-02-07 16:35:43 -08:00
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(): remove redundant check 2012-01-17 11:41:41 -08:00
pack-refs.h
…
pack-revindex.c
…
pack-revindex.h
…
pack-write.c
…
pack.h
…
pager.c Merge branches zj/decimal-width, zj/term-columns and jc/diff-stat-scaler 2012-02-24 16:07:04 -08:00
parse-options-cb.c
…
parse-options.c parse-options: typo check for unknown switches 2012-03-04 18:28:59 -08:00
parse-options.h parse-options: remove PARSE_OPT_NEGHELP 2012-02-28 11:48:11 -08:00
patch-delta.c
…
patch-ids.c
…
patch-ids.h
…
path.c standardize and improve lookup rules for external local repos 2012-02-02 16:41:55 -08:00
pkt-line.c
…
pkt-line.h
…
preload-index.c
…
pretty.c
…
progress.c
…
progress.h
…
prompt.c prompt: fall back to terminal if askpass fails 2012-02-03 14:37:04 -08:00
prompt.h
…
quote.c
…
quote.h
…
reachable.c
…
reachable.h
…
read-cache.c refresh_index: do not show unmerged path that is outside pathspec 2012-02-17 10:11:05 -08:00
reflog-walk.c
…
reflog-walk.h
…
refs.c refs: remove the extra_refs API 2012-02-12 19:50:39 -08:00
refs.h refs: remove the extra_refs API 2012-02-12 19:50:39 -08:00
remote-curl.c Merge branch 'sp/smart-http-failure-to-push' into maint 2012-02-05 23:58:43 -08:00
remote.c push: add '--prune' option 2012-02-22 18:17:39 -08:00
remote.h push: add '--prune' option 2012-02-22 18:17:39 -08:00
replace_object.c
…
rerere.c
…
rerere.h
…
resolve-undo.c
…
resolve-undo.h
…
revision.c Merge branch 'jc/pickaxe-ignore-case' 2012-03-07 12:12:59 -08:00
revision.h
…
run-command.c Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd 2012-04-03 17:24:20 -07:00
run-command.h
…
send-pack.h
…
sequencer.c cherry-pick: No advice to commit if --no-commit 2012-02-22 11:13:43 -08:00
sequencer.h
…
server-info.c
…
setup.c standardize and improve lookup rules for external local repos 2012-02-02 16:41:55 -08:00
sh-i18n--envsubst.c
…
sha1-array.c
…
sha1-array.h
…
sha1-lookup.c
…
sha1-lookup.h
…
sha1_file.c Merge branch 'jk/maint-avoid-streaming-filtered-contents' into maint 2012-03-04 22:16:40 -08:00
sha1_name.c
…
shallow.c
…
shell.c
…
shortlog.h
…
show-index.c
…
sideband.c
…
sideband.h
…
sigchain.c
…
sigchain.h
…
strbuf.c Merge branch 'tr/maint-bundle-long-subject' into maint 2012-03-04 22:16:30 -08:00
strbuf.h Merge branch 'tr/maint-bundle-long-subject' into maint 2012-03-04 22:16:30 -08:00
streaming.c
…
streaming.h
…
string-list.c
…
string-list.h
…
submodule.c
…
submodule.h
…
symlinks.c Add threaded versions of functions in symlinks.c. 2012-03-02 23:56:28 -08:00
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 cache-tree: update API to take abitrary flags 2012-02-07 16:35:43 -08:00
test-genrandom.c
…
test-index-version.c
…
test-line-buffer.c
…
test-match-trees.c
…
test-mktemp.c
…
test-parse-options.c test-parse-options: convert to OPT_BOOL() 2012-02-26 15:18:41 -08:00
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 Merge branch 'sp/smart-http-failure-to-push' into maint 2012-03-04 22:16:33 -08:00
transport.c correct spelling: an URL -> a URL 2012-03-28 08:47:23 -07:00
transport.h push: add '--prune' option 2012-02-22 18:17:39 -08: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
…
unpack-trees.h
…
upload-pack.c Merge branch 'jk/parse-object-cached' 2012-01-29 13:18:55 -08:00
url.c
…
url.h
…
usage.c
…
userdiff.c drop odd return value semantics from userdiff_config 2012-02-07 10:44:54 -08:00
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
…

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.