Code

git.git
13 years agomailmap: xcalloc mailmap_info
Marc-André Lureau [Thu, 17 Nov 2011 01:25:06 +0000 (02:25 +0100)]
mailmap: xcalloc mailmap_info

This is to avoid reaching free of uninitialized members.

With an invalid .mailmap (and perhaps in other cases), it can reach
free(mi->name) with garbage for example.

Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd map_user() and clear_mailmap() to mailmap
Marius Storm-Olsen [Sun, 8 Feb 2009 14:34:29 +0000 (15:34 +0100)]
Add map_user() and clear_mailmap() to mailmap

map_user() allows to lookup and replace both email and
name of a user, based on a new style mailmap file.

The possible mailmap definitions are now:

  proper_name <commit_email>                             # Old style
  <proper_email> <commit_email>                          # New style
  proper_name <proper_email> <commit_email>              # New style
  proper_name <proper_email> commit_name <commit_email>  # New style

map_email() operates the same as before, with the
exception that it also will to try to match on a name
passed in through the name return buffer.

clear_mailmap() is needed to now clear the more complex
mailmap structure.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd find_insert_index, insert_at_index and clear_func functions to string_list
Marius Storm-Olsen [Sun, 8 Feb 2009 14:34:28 +0000 (15:34 +0100)]
Add find_insert_index, insert_at_index and clear_func functions to string_list

string_list_find_insert_index() and string_list_insert_at_index()
enables you to see if an item is in the string_list, and to
insert at the appropriate index in the list, if not there.
This is usefull if you need to manipulate an existing item,
if present, and insert a new item if not.

Future mailmap code will use this construct to enable
complex (old_name, old_email) -> (new_name, new_email)
lookups.

The string_list_clear_func() allows to call a custom
cleanup function on each item in a string_list, which is
useful is the util member points to a complex structure.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd mailmap.file as configurational option for mailmap location
Marius Storm-Olsen [Sun, 8 Feb 2009 14:34:27 +0000 (15:34 +0100)]
Add mailmap.file as configurational option for mailmap location

This allows us to augment the repo mailmap file, and to use
mailmap files elsewhere than the repository root. Meaning
that the entries in mailmap.file will override the entries
in "./.mailmap", should they match.

Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'jc/fsck' (early part)
Junio C Hamano [Thu, 5 Feb 2009 00:40:15 +0000 (16:40 -0800)]
Merge branch 'jc/fsck' (early part)

* 'jc/fsck' (early part):
  fsck: check loose objects from alternate object stores by default
  fsck: HEAD is part of refs

15 years agogit-bundle doc: update examples
Nanako Shiraishi [Wed, 4 Feb 2009 09:15:29 +0000 (18:15 +0900)]
git-bundle doc: update examples

This rewrites the example part of the bundle doucmentation to follow
the suggestion made by Junio during a recent discussion (gmane 108030).

Instead of just showing different ways to create and use bundles in a
disconnected fashion, the rewritten example first shows the simplest
"full cycle" of sneakernet workflow, and then introduces various
variations.

The words are mostly taken from Junio's outline. I only reformatted
them and proofread to make sure the end result flows naturally.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoReplace deprecated dashed git commands in usage
Alexander Potashev [Sun, 4 Jan 2009 18:39:27 +0000 (21:39 +0300)]
Replace deprecated dashed git commands in usage

Signed-off-by: Alexander Potashev <aspotashev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-show-branch doc: show -g as synonym to --reflog in the list
jidanni@jidanni.org [Tue, 6 Jan 2009 03:14:02 +0000 (11:14 +0800)]
git-show-branch doc: show -g as synonym to --reflog in the list

Signed-off-by: jidanni <jidanni@jidanni.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocontrib git-resurrect: find traces of a branch name and resurrect it
Thomas Rast [Wed, 4 Feb 2009 10:04:18 +0000 (11:04 +0100)]
contrib git-resurrect: find traces of a branch name and resurrect it

Add a tool 'git-resurrect.sh <branch>' that tries to find traces of
the <branch> in the HEAD reflog and, optionally, all merge commits in
the repository.  It can then resurrect the branch, pointing it at the
most recent of all candidate commits found.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Wed, 4 Feb 2009 21:07:09 +0000 (13:07 -0800)]
Merge branch 'maint'

* maint:
  urls.txt: document optional port specification in git URLS
  builtin-mv.c: check for unversionned files before looking at the destination.
  Add a testcase for "git mv -f" on untracked files.
  Missing && in t/t7001.sh.

15 years agoMerge branch 'wp/add-patch-find'
Junio C Hamano [Wed, 4 Feb 2009 21:07:06 +0000 (13:07 -0800)]
Merge branch 'wp/add-patch-find'

* wp/add-patch-find:
  add -p: trap Ctrl-D in 'goto' mode
  add -p: change prompt separator for 'g'
  In add --patch, Handle K,k,J,j slightly more gracefully.
  Add / command in add --patch
  git-add -i/-p: Change prompt separater from slash to comma

15 years agoMerge branch 'ns/am-slacker'
Junio C Hamano [Wed, 4 Feb 2009 21:07:02 +0000 (13:07 -0800)]
Merge branch 'ns/am-slacker'

* ns/am-slacker:
  git-am: Add --ignore-date option
  am: Add --committer-date-is-author-date option

Conflicts:
git-am.sh

15 years agourls.txt: document optional port specification in git URLS
Stefan Naewe [Wed, 4 Feb 2009 20:49:35 +0000 (21:49 +0100)]
urls.txt: document optional port specification in git URLS

Signed-off-by: Stefan Naewe <stefan.naewe+git@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Wed, 4 Feb 2009 19:49:07 +0000 (11:49 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  builtin-mv.c: check for unversionned files before looking at the destination.
  Add a testcase for "git mv -f" on untracked files.
  Missing && in t/t7001.sh.

15 years agobuiltin-mv.c: check for unversionned files before looking at the destination.
Matthieu Moy [Wed, 4 Feb 2009 09:32:08 +0000 (10:32 +0100)]
builtin-mv.c: check for unversionned files before looking at the destination.

The previous code was failing in the case where one moves an
unversionned file to an existing destination, with mv -f: the
"existing destination" was checked first, and the error was cancelled
by the force flag.

We now check the unrecoverable error first, which fixes the bug.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd a testcase for "git mv -f" on untracked files.
Matthieu Moy [Wed, 4 Feb 2009 09:32:07 +0000 (10:32 +0100)]
Add a testcase for "git mv -f" on untracked files.

This currently fails with:
git: builtin-mv.c:217: cmd_mv: Assertion `pos >= 0' failed.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMissing && in t/t7001.sh.
Matthieu Moy [Wed, 4 Feb 2009 09:32:06 +0000 (10:32 +0100)]
Missing && in t/t7001.sh.

Without this, the exit status is only the one of the last line.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoadd -p: trap Ctrl-D in 'goto' mode
Thomas Rast [Mon, 2 Feb 2009 21:46:29 +0000 (22:46 +0100)]
add -p: trap Ctrl-D in 'goto' mode

If the user hit Ctrl-D (EOF) while the script was in 'go to hunk?'
mode, it threw an undefined variable error.  Explicitly test for EOF
and have it re-enter the goto prompt loop.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoadd -p: change prompt separator for 'g'
Thomas Rast [Mon, 2 Feb 2009 21:46:28 +0000 (22:46 +0100)]
add -p: change prompt separator for 'g'

57886bc (git-add -i/-p: Change prompt separater from slash to comma,
2008-11-27) changed the prompt separator to ',', but forgot to adapt
the 'g' (goto) command.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Wed, 4 Feb 2009 08:12:19 +0000 (00:12 -0800)]
Merge branch 'maint'

* maint:
  User-manual: "git stash <comment>" form is long gone
  add test-dump-cache-tree in Makefile
  fix typo in Documentation
  apply: fix access to an uninitialized mode variable, found by valgrind

Conflicts:
Makefile

15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Wed, 4 Feb 2009 07:50:09 +0000 (23:50 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  User-manual: "git stash <comment>" form is long gone
  add test-dump-cache-tree in Makefile
  fix typo in Documentation
  apply: fix access to an uninitialized mode variable, found by valgrind

15 years agoUser-manual: "git stash <comment>" form is long gone
William Pursell [Tue, 3 Feb 2009 22:41:14 +0000 (22:41 +0000)]
User-manual: "git stash <comment>" form is long gone

These days you must explicitly say "git stash save <comment>".

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoadd test-dump-cache-tree in Makefile
Guanqun Lu [Wed, 4 Feb 2009 21:00:41 +0000 (05:00 +0800)]
add test-dump-cache-tree in Makefile

5c5ba73 (Makefile: Use generic rule to build test programs,
2007-05-31) tried to use generic rule to build test programs, but it
misses the file 'dump-cache-tree.c', since its name is not prefixed by
'test-'.  This commit solves this little problem by renaming this file
instead of carrying out an explicit rule in Makefile.

Signed-off-by: Guanqun Lu <guanqun.lu@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofix typo in Documentation
Guanqun Lu [Wed, 4 Feb 2009 21:00:40 +0000 (05:00 +0800)]
fix typo in Documentation

Signed-off-by: Guanqun Lu <guanqun.lu@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobash: offer to show (un)staged changes
Thomas Rast [Tue, 3 Feb 2009 09:20:54 +0000 (10:20 +0100)]
bash: offer to show (un)staged changes

Add a bit of code to __git_ps1 that lets it append '*' to the branch
name if there are any unstaged changes, and '+' if there are any
staged changes.

Since this is a rather expensive operation and will force a lot of
data into the cache whenever you first enter a repository, you have to
enable it manually by setting GIT_PS1_SHOWDIRTYSTATE to a nonempty
value.  The configuration variable bash.showDirtyState can then be
used to disable it again for some repositories.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoapply: fix access to an uninitialized mode variable, found by valgrind
Johannes Schindelin [Wed, 4 Feb 2009 01:50:15 +0000 (02:50 +0100)]
apply: fix access to an uninitialized mode variable, found by valgrind

When 'tpatch' was initialized successfully, st_mode was already taken
from the previous diff.  We should not try to override it with data
from an lstat() that was never called.

This is a companion patch to 7a07841(git-apply: handle a patch that
touches the same path more than once better).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotests: fix test_commit() for case insensitive filesystems
Junio C Hamano [Wed, 4 Feb 2009 05:46:33 +0000 (21:46 -0800)]
tests: fix test_commit() for case insensitive filesystems

Brian Gernhardt noticed that t3411 was broken recently on case insensitive
filesystems.

0088496 (test-lib.sh: introduce test_commit() and test_merge() helpers,
2009-01-27) used a tag and a file with the same name, only different in
case, and converted many existing tests that needed only a file (or a
tag).

Some tests may want to refer to a rev or a file, but on a filesystem that
loses cases, referring to either without disambiguation mark ("--") on the
command line now triggers an error (t3411 was the only one such test).

Fix it by using a filename that is different from the tagname each step
creates.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot3412: further simplify setting of GIT_EDITOR
Junio C Hamano [Wed, 4 Feb 2009 05:07:07 +0000 (21:07 -0800)]
t3412: further simplify setting of GIT_EDITOR

2182896 (t3412: clean up GIT_EDITOR usage, 2009-01-30) tried to clean up
the script's use of GIT_EDITOR, but it can further be simplified, because
that is how test-lib.sh sets things up already.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Tue, 3 Feb 2009 08:32:34 +0000 (00:32 -0800)]
Merge branch 'maint'

* maint:
  grep: pass -I (ignore binary) down to external grep

15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Tue, 3 Feb 2009 08:32:29 +0000 (00:32 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  grep: pass -I (ignore binary) down to external grep

15 years agoMerge branch 'jc/maint-add-u-remove-conflicted'
Junio C Hamano [Tue, 3 Feb 2009 08:26:17 +0000 (00:26 -0800)]
Merge branch 'jc/maint-add-u-remove-conflicted'

* jc/maint-add-u-remove-conflicted:
  add -u: do not fail to resolve a path as deleted

15 years agoMerge branch 'jk/maint-cleanup-after-exec-failure'
Junio C Hamano [Tue, 3 Feb 2009 08:26:12 +0000 (00:26 -0800)]
Merge branch 'jk/maint-cleanup-after-exec-failure'

* jk/maint-cleanup-after-exec-failure:
  git: use run_command() to execute dashed externals
  run_command(): help callers distinguish errors
  run_command(): handle missing command errors more gracefully
  git: s/run_command/run_builtin/

15 years agogrep: pass -I (ignore binary) down to external grep
Junio C Hamano [Mon, 2 Feb 2009 18:58:20 +0000 (10:58 -0800)]
grep: pass -I (ignore binary) down to external grep

We forgot to pass this option to the external grep process.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoIn add --patch, Handle K,k,J,j slightly more gracefully.
William Pursell [Thu, 27 Nov 2008 04:08:03 +0000 (04:08 +0000)]
In add --patch, Handle K,k,J,j slightly more gracefully.

Instead of printing the help menu, this will print "No next hunk" and then
process the given hunk again.

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAdd / command in add --patch
William Pursell [Thu, 27 Nov 2008 04:07:57 +0000 (04:07 +0000)]
Add / command in add --patch

This command allows the user to skip hunks that don't match the specified
regex.

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-add -i/-p: Change prompt separater from slash to comma
William Pursell [Thu, 27 Nov 2008 04:07:52 +0000 (04:07 +0000)]
git-add -i/-p: Change prompt separater from slash to comma

Otherwise the find command '/' soon to be introduced will be hard to see.

Signed-off-by: William Pursell <bill.pursell@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot3412: use log|name-rev instead of log --graph
Thomas Rast [Fri, 30 Jan 2009 22:47:01 +0000 (23:47 +0100)]
t3412: use log|name-rev instead of log --graph

Replace all 'git log --graph' calls for history verification with the
combination of 'git log ...| git name-rev' first introduced by a6c7a27
(rebase -i: correctly remember --root flag across --continue,
2009-01-26).  This should be less susceptible to format changes than
the --graph code.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: Update README that gitweb works better with PATH_INFO
Jakub Narebski [Sun, 1 Feb 2009 21:37:45 +0000 (22:37 +0100)]
gitweb: Update README that gitweb works better with PATH_INFO

One had to configure gitweb for it to find static files (stylesheets,
images) when using path_info URLs.  Now that it is not necessary
thanks to adding BASE element to HTML head if needed, update README to
reflect this fact.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomailinfo: cleanup extra spaces for complex 'From:'
Kirill Smelkov [Sun, 1 Feb 2009 17:45:05 +0000 (20:45 +0300)]
mailinfo: cleanup extra spaces for complex 'From:'

currently for cases like

    From: A U Thor <a.u.thor@example.com> (Comment)

mailinfo extracts the following 'Author:' field:

    Author: A U Thor   (Comment)
                     ^^
which has two extra spaces left in there after removed email part.

I think this is wrong so here is a fix.

Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'ks/maint-mailinfo-folded'
Junio C Hamano [Sun, 1 Feb 2009 02:09:17 +0000 (18:09 -0800)]
Merge branch 'ks/maint-mailinfo-folded'

* ks/maint-mailinfo-folded:
  mailinfo: tests for RFC2047 examples
  mailinfo: add explicit test for mails like '<a.u.thor@example.com> (A U Thor)'
  mailinfo: 'From:' header should be unfold as well
  mailinfo: correctly handle multiline 'Subject:' header

15 years agoMerge branch 'jc/maint-apply-fix'
Junio C Hamano [Sun, 1 Feb 2009 02:08:58 +0000 (18:08 -0800)]
Merge branch 'jc/maint-apply-fix'

* jc/maint-apply-fix:
  builtin-apply.c: do not set bogus mode in check_preimage() for deleted path

15 years agoMerge branch 'am/maint-push-doc'
Junio C Hamano [Sun, 1 Feb 2009 02:08:31 +0000 (18:08 -0800)]
Merge branch 'am/maint-push-doc'

* am/maint-push-doc:
  Documentation: rework src/dst description in git push
  Documentation: more git push examples
  Documentation: simplify refspec format description

15 years agoMerge branch 'jc/maint-allow-uninteresting-missing'
Junio C Hamano [Sun, 1 Feb 2009 02:08:22 +0000 (18:08 -0800)]
Merge branch 'jc/maint-allow-uninteresting-missing'

* jc/maint-allow-uninteresting-missing:
  revision traversal: allow UNINTERESTING objects to be missing

15 years agoMerge branch 'jg/tag-contains'
Junio C Hamano [Sun, 1 Feb 2009 02:07:59 +0000 (18:07 -0800)]
Merge branch 'jg/tag-contains'

* jg/tag-contains:
  git-tag: Add --contains option
  Make has_commit() non-static
  Make opt_parse_with_commit() non-static

15 years agoMerge branch 'js/maint-rebase-i-submodule'
Junio C Hamano [Sun, 1 Feb 2009 02:07:55 +0000 (18:07 -0800)]
Merge branch 'js/maint-rebase-i-submodule'

* js/maint-rebase-i-submodule:
  Fix submodule squashing into unrelated commit
  rebase -i squashes submodule changes into unrelated commit

15 years agoMerge branch 'jc/maint-split-diff-metainfo'
Junio C Hamano [Sun, 1 Feb 2009 02:07:42 +0000 (18:07 -0800)]
Merge branch 'jc/maint-split-diff-metainfo'

* jc/maint-split-diff-metainfo:
  diff.c: output correct index lines for a split diff

15 years agoMerge branch 'sp/runtime-prefix'
Junio C Hamano [Sun, 1 Feb 2009 01:43:59 +0000 (17:43 -0800)]
Merge branch 'sp/runtime-prefix'

* sp/runtime-prefix:
  Windows: Revert to default paths and convert them by RUNTIME_PREFIX
  Compute prefix at runtime if RUNTIME_PREFIX is set
  Modify setup_path() to only add git_exec_path() to PATH
  Add calls to git_extract_argv0_path() in programs that call git_config_*
  git_extract_argv0_path(): Move check for valid argv0 from caller to callee
  Refactor git_set_argv0_path() to git_extract_argv0_path()
  Move computation of absolute paths from Makefile to runtime (in preparation for RUNTIME_PREFIX)

15 years agoMerge branch 'jk/signal-cleanup'
Junio C Hamano [Sun, 1 Feb 2009 01:43:56 +0000 (17:43 -0800)]
Merge branch 'jk/signal-cleanup'

* jk/signal-cleanup:
  t0005: use SIGTERM for sigchain test
  pager: do wait_for_pager on signal death
  refactor signal handling for cleanup functions
  chain kill signals for cleanup functions
  diff: refactor tempfile cleanup handling
  Windows: Fix signal numbers

15 years agoMerge branch 'jg/mergetool'
Junio C Hamano [Sun, 1 Feb 2009 01:43:28 +0000 (17:43 -0800)]
Merge branch 'jg/mergetool'

* jg/mergetool:
  mergetool: Don't repeat merge tool candidates

15 years agoMerge branch 'maint'
Junio C Hamano [Sun, 1 Feb 2009 01:42:26 +0000 (17:42 -0800)]
Merge branch 'maint'

* maint:
  merge: fix out-of-bounds memory access

15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Sun, 1 Feb 2009 01:42:17 +0000 (17:42 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  merge: fix out-of-bounds memory access

15 years agocontrib/difftool: Don't repeat merge tool candidates
David Aguilar [Sat, 31 Jan 2009 20:27:56 +0000 (12:27 -0800)]
contrib/difftool: Don't repeat merge tool candidates

git difftool listed some candidates for mergetools twice, depending on
the environment.

This slightly changes the behavior when both KDE_FULL_SESSION and
GNOME_DESKTOP_SESSION_ID are set at the same time; in such a case
meld is used in favor of kdiff3 (the old code favored kdiff3 in such a
case), but it should not matter in practice.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocontrib/difftool: add support for Kompare
Markus Heidelberg [Fri, 30 Jan 2009 23:19:29 +0000 (00:19 +0100)]
contrib/difftool: add support for Kompare

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomerge: fix out-of-bounds memory access
René Scharfe [Sat, 31 Jan 2009 14:39:10 +0000 (15:39 +0100)]
merge: fix out-of-bounds memory access

The parameter n of unpack_callback() can have a value of up to
MAX_UNPACK_TREES.  The check at the top of unpack_trees() (its only
(indirect) caller) makes sure it cannot exceed this limit.

unpack_callback() passes it and the array src to unpack_nondirectories(),
which has this loop:

for (i = 0; i < n; i++) {
/* ... */
src[i + o->merge] = o->df_conflict_entry;

o->merge can be 0 or 1, so unpack_nondirectories() potentially accesses
the array src at index MAX_UNPACK_TREES.  This patch makes it big enough.

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: René Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot3412: clean up GIT_EDITOR usage
Thomas Rast [Fri, 30 Jan 2009 22:47:00 +0000 (23:47 +0100)]
t3412: clean up GIT_EDITOR usage

a6c7a27 (rebase -i: correctly remember --root flag across --continue,
2009-01-26) introduced a more portable GIT_EDITOR usage, but left the
old tests unchanged.

Since we never use the editor (all tests run the rebase script as
proposed by rebase -i), just disable it outright, which simplifies the
tests.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-shortlog.txt: fix example about .mailmap
Michele Ballabio [Fri, 30 Jan 2009 16:55:24 +0000 (17:55 +0100)]
git-shortlog.txt: fix example about .mailmap

In the example, Joe Developer has <joe@example.com> as his email,
but in the .mailmap is <joe@random.com>. Use example.com instead.

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-cvsserver: run post-update hook *after* update.
Stefan Karpinski [Thu, 29 Jan 2009 21:58:02 +0000 (13:58 -0800)]
git-cvsserver: run post-update hook *after* update.

CVS server was running the hook before the update action was
actually done. This performs the update before the hook is called.

The original commit that introduced the current incorrect behavior
was 394d66d "git-cvsserver runs hooks/post-update". The error in
ordering of the hook call appears to have gone unnoticed, but since
git-cvsserver is supposed to emulate receive-pack, it stands to
reason that the hook should be run *after* the update. Since this
behavior is inconsistent with recieve-pack, users are either:

  1) not using post-update hooks with git-cvsserver;
  2) using post-update hooks that don't care whether they are
     called before or after the actual update occurs;
  3) using post-update hooks *only* with git-cvsserver, and
     relying on the hook being called just before the update.

This patch would affect only users in case 3. These users are
depending on fairly obviously wrong behavior, and moreover they can
simply change their current post-update into post-recieve hooks,
and their systems will work correctly again.

Signed-off-by: Stefan Karpinski <stefan.karpinski@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix 'git diff --no-index' with a non-existing symlink target
Johannes Schindelin [Thu, 29 Jan 2009 16:30:51 +0000 (17:30 +0100)]
Fix 'git diff --no-index' with a non-existing symlink target

When trying to find out mode changes, we should not access the symlink
targets using stat(); instead we use lstat() so that the diff does
not fail trying to find a non-existing symlink target.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: align comments to code
Giuseppe Bilotta [Sat, 31 Jan 2009 01:31:52 +0000 (02:31 +0100)]
gitweb: align comments to code

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: webserver config for PATH_INFO
Giuseppe Bilotta [Sat, 31 Jan 2009 01:31:51 +0000 (02:31 +0100)]
gitweb: webserver config for PATH_INFO

Document some possible Apache configurations when the path_info feature
is enabled in gitweb.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: make static files accessible with PATH_INFO
Giuseppe Bilotta [Sat, 31 Jan 2009 01:31:50 +0000 (02:31 +0100)]
gitweb: make static files accessible with PATH_INFO

Gitweb links to a number of static files such as CSS stylesheets,
favicon or the git logo. When, such as with the default Makefile, the
paths to these files are relative (i.e. doesn't start with a "/"), the
files become inaccessible in any view other tha project list and summary
page if gitweb is invoked with a non-empty PATH_INFO.

Fix this by adding a <base> element pointing to the script's own URL,
which ensure that all relative paths will be resolved correctly.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-cvsserver: handle CVS 'noop' command.
Stefan Karpinski [Fri, 30 Jan 2009 01:12:27 +0000 (17:12 -0800)]
git-cvsserver: handle CVS 'noop' command.

The CVS protocol documentation, found at

  http://www.wandisco.com/techpubs/cvs-protocol.pdf

states the following about the 'noop' command:

  Response expected: yes. This request is a null command
  in the sense that it doesn't do anything, but merely
  (as with any other requests expecting a response) sends
  back any responses pertaining to pending errors, pending
  Notified responses, etc.

In accordance with this, the correct way to handle the 'noop'
command, when issued by a client, is to call req_EMPTY.

The 'noop' command is called by some CVS clients, notably
TortoiseCVS, thus making it desirable for git-cvsserver to
respond to the command rather than choking on it as unknown.

Signed-off-by: Stefan Karpinski <stefan.karpinski@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofsck: check loose objects from alternate object stores by default
Junio C Hamano [Fri, 30 Jan 2009 08:50:54 +0000 (00:50 -0800)]
fsck: check loose objects from alternate object stores by default

"git fsck" used to validate only loose objects that are local and nothing
else by default.  This is not just too little when a repository is
borrowing objects from other object stores, but also caused the
connectivity check to mistakenly declare loose objects borrowed from them
to be missing.

The rationale behind the default mode that validates only loose objects is
because these objects are still young and more unlikely to have been
pushed to other repositories yet.  That holds for loose objects borrowed
from alternate object stores as well.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agofsck: HEAD is part of refs
Junio C Hamano [Fri, 30 Jan 2009 08:33:00 +0000 (00:33 -0800)]
fsck: HEAD is part of refs

By default we looked at all refs but not HEAD.  The only thing that made
fsck not lose sight of commits that are only reachable from a detached
HEAD was the reflog for the HEAD.

This fixes it, with a new test.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot0005: use SIGTERM for sigchain test
Jeff King [Fri, 30 Jan 2009 08:21:01 +0000 (03:21 -0500)]
t0005: use SIGTERM for sigchain test

The signal tests consists of checking that each of our
handlers is executed, and that the test program was killed
by the final signal. We arbitrarily used SIGINT as the kill
signal.

However, some platforms (notably Solaris) will default
SIGINT to SIG_IGN if there is no controlling terminal. In
that case, we don't end up killing the program with the
final signal and the test fails.

This is a problem since the test script should not depend
on outside factors; let's use SIGTERM instead, which should
behave consistently.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoUpdate draft release notes to 1.6.2
Junio C Hamano [Thu, 29 Jan 2009 08:57:42 +0000 (00:57 -0800)]
Update draft release notes to 1.6.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoSync with 1.6.1.2
Junio C Hamano [Thu, 29 Jan 2009 08:32:52 +0000 (00:32 -0800)]
Sync with 1.6.1.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoGIT 1.6.1.2 v1.6.1.2
Junio C Hamano [Thu, 29 Jan 2009 08:12:52 +0000 (00:12 -0800)]
GIT 1.6.1.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'jc/maint-format-patch-o-relative' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:56:13 +0000 (23:56 -0800)]
Merge branch 'jc/maint-format-patch-o-relative' into maint

* jc/maint-format-patch-o-relative:
  Teach format-patch to handle output directory relative to cwd

Conflicts:
t/t4014-format-patch.sh

15 years agoMerge branch 'bs/maint-rename-populate-filespec' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:42:57 +0000 (23:42 -0800)]
Merge branch 'bs/maint-rename-populate-filespec' into maint

* bs/maint-rename-populate-filespec:
  Rename detection: Avoid repeated filespec population

15 years agoMerge branch 'mh/maint-commit-color-status' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:42:53 +0000 (23:42 -0800)]
Merge branch 'mh/maint-commit-color-status' into maint

* mh/maint-commit-color-status:
  git-status -v: color diff output when color.ui is set
  git-commit: color status output when color.ui is set

15 years agoMerge branch 'nd/grep-assume-unchanged' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:42:41 +0000 (23:42 -0800)]
Merge branch 'nd/grep-assume-unchanged' into maint

* nd/grep-assume-unchanged:
  grep: grep cache entries if they are "assume unchanged"
  grep: support --no-ext-grep to test builtin grep

15 years agoMerge branch 'jc/maint-ls-tree' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:42:15 +0000 (23:42 -0800)]
Merge branch 'jc/maint-ls-tree' into maint

* jc/maint-ls-tree:
  Document git-ls-tree --full-tree
  ls-tree: add --full-tree option

15 years agoMerge branch 'np/no-loosen-prune-expire-now' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:42:10 +0000 (23:42 -0800)]
Merge branch 'np/no-loosen-prune-expire-now' into maint

* np/no-loosen-prune-expire-now:
  objects to be pruned immediately don't have to be loosened

15 years agoMerge branch 'mc/cd-p-pwd' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:41:56 +0000 (23:41 -0800)]
Merge branch 'mc/cd-p-pwd' into maint

* mc/cd-p-pwd:
  git-sh-setup: Fix scripts whose PWD is a symlink to a work-dir on OS X

15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Thu, 29 Jan 2009 07:41:28 +0000 (23:41 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  avoid 31-bit truncation in write_loose_object

15 years agoavoid 31-bit truncation in write_loose_object
Jeff King [Thu, 29 Jan 2009 05:56:34 +0000 (00:56 -0500)]
avoid 31-bit truncation in write_loose_object

The size of the content we are adding may be larger than
2.1G (i.e., "git add gigantic-file"). Most of the code-path
to do so uses size_t or unsigned long to record the size,
but write_loose_object uses a signed int.

On platforms where "int" is 32-bits (which includes x86_64
Linux platforms), we end up passing malloc a negative size.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoSimplify t3412
Johannes Schindelin [Tue, 27 Jan 2009 22:35:09 +0000 (23:35 +0100)]
Simplify t3412

Use the newly introduced test_commit() and test_merge() helpers.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoSimplify t3411
Johannes Schindelin [Tue, 27 Jan 2009 22:35:05 +0000 (23:35 +0100)]
Simplify t3411

Use test_commit() and test_merge().  This way, it is harder to forget to
tag, or to call test_tick before committing.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoSimplify t3410
Johannes Schindelin [Tue, 27 Jan 2009 22:34:54 +0000 (23:34 +0100)]
Simplify t3410

Use test_commit() and test_merge(), reducing the code while making the
intent clearer.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotest-lib.sh: introduce test_commit() and test_merge() helpers
Johannes Schindelin [Tue, 27 Jan 2009 22:34:48 +0000 (23:34 +0100)]
test-lib.sh: introduce test_commit() and test_merge() helpers

Often we just need to add a commit with a given (short) name, that will
be tagged with the same name.  Now, relatively complicated graphs can be
constructed easily and in a clear fashion:

test_commit A &&
test_commit B &&
git checkout A &&
test_commit C &&
test_merge D B

will construct this graph:

A - B
  \   \
    C - D

For simplicity, files whose name is the lower case version of the commit
message (to avoid a warning about ambiguous names) will be committed, with
the corresponding commit messages as contents.

If you need to provide a different file/different contents, you can use
the more explicit form

test_commit $MESSAGE $FILENAME $CONTENTS

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agolib-rebase.sh: Document what set_fake_editor() does
Johannes Schindelin [Tue, 27 Jan 2009 22:34:35 +0000 (23:34 +0100)]
lib-rebase.sh: Document what set_fake_editor() does

Make it easy for other authors to use rebase tests' fake-editor.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot3404 & t3411: undo copy&paste
Johannes Schindelin [Tue, 27 Jan 2009 22:34:29 +0000 (23:34 +0100)]
t3404 & t3411: undo copy&paste

Rather than copying and pasting, which is prone to lead to fixes
missing in one version, move the fake-editor generator to t/t3404/.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoadd -u: do not fail to resolve a path as deleted
Junio C Hamano [Wed, 28 Jan 2009 22:24:53 +0000 (14:24 -0800)]
add -u: do not fail to resolve a path as deleted

After you resolve a conflicted merge to remove the path, "git add -u"
failed to record the removal.  Instead it errored out by saying that the
removed path is not found in the work tree, but that is what the user
already knows, and the wanted to record the removal as the resolution,
so the error does not make sense.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobuiltin-apply.c: do not set bogus mode in check_preimage() for deleted path
Junio C Hamano [Mon, 26 Jan 2009 07:41:26 +0000 (23:41 -0800)]
builtin-apply.c: do not set bogus mode in check_preimage() for deleted path

If it is deleted, it is deleted.  Do not set the current mode to it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomailinfo: tests for RFC2047 examples
Kirill Smelkov [Mon, 12 Jan 2009 22:21:04 +0000 (01:21 +0300)]
mailinfo: tests for RFC2047 examples

Also as suggested by Junio, in order to try to catch other MIME
problems, test cases from the "8. Examples" section of RFC2047 are added
to t5100 testsuite as well.

Signed-off-by: Kirill Smelkov <kirr@landau.phys.spbu.ru>
15 years agomailinfo: add explicit test for mails like '<a.u.thor@example.com> (A U Thor)'
Kirill Smelkov [Tue, 13 Jan 2009 09:33:48 +0000 (12:33 +0300)]
mailinfo: add explicit test for mails like '<a.u.thor@example.com> (A U Thor)'

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
15 years agoMerge branch 'tr/previous-branch'
Junio C Hamano [Wed, 28 Jan 2009 23:00:27 +0000 (15:00 -0800)]
Merge branch 'tr/previous-branch'

* tr/previous-branch:
  t1505: remove debugging cruft
  Simplify parsing branch switching events in reflog
  Introduce for_each_recent_reflog_ent().
  interpret_nth_last_branch(): plug small memleak
  Fix reflog parsing for a malformed branch switching entry
  Fix parsing of @{-1}@{1}
  interpret_nth_last_branch(): avoid traversing the reflog twice
  checkout: implement "-" abbreviation, add docs and tests
  sha1_name: support @{-N} syntax in get_sha1()
  sha1_name: tweak @{-N} lookup
  checkout: implement "@{-N}" shortcut name for N-th last branch

Conflicts:
sha1_name.c

15 years agoFix submodule squashing into unrelated commit
Johannes Schindelin [Tue, 27 Jan 2009 11:42:31 +0000 (12:42 +0100)]
Fix submodule squashing into unrelated commit

Actually, I think the issue is pretty independent of submodules; when
"git commit" gets an empty parameter, it misinterprets it as a file.

So avoid passing an empty parameter to "git commit".

Actually, this is a nice cleanup, as MSG_FILE and EDIT_COMMIT were mutually
exclusive; use one variable instead

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agorebase -i squashes submodule changes into unrelated commit
Junio C Hamano [Tue, 27 Jan 2009 09:07:31 +0000 (01:07 -0800)]
rebase -i squashes submodule changes into unrelated commit

Attempting to rebase three-commit series (two regular changes, followed by
one commit that changes what commit is bound for a submodule path) to
squash the first two results in a failure; not just the first two commits
squashed, but the change to the submodule is also included in the result.

This failure causes the subsequent step to "pick" the change that actually
changes the submodule to be applied, because there is no change left to be
applied.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: check if-modified-since for feeds
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:16 +0000 (12:50 +0100)]
gitweb: check if-modified-since for feeds

Offering Last-modified header for feeds is only half the work, even if
we bail out early on HEAD requests. We should also check that same date
against If-modified-since, and bail out early with 304 Not Modified if
that's the case.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: last-modified time should be commiter, not author
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:15 +0000 (12:50 +0100)]
gitweb: last-modified time should be commiter, not author

The last-modified time header added by RSS to increase cache hits from
readers should be set to the date the repository was last modified. The
author time in this respect is not a good guess because the last commit
might come from a oldish patch.

Use the committer time for the last-modified header to ensure a more
correct guess of the last time the repository was modified.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: rss channel date
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:14 +0000 (12:50 +0100)]
gitweb: rss channel date

The RSS 2.0 specifications defines not one but _two_ dates for its
channel element! Woohoo! Luckily, it seems that consensus seems to be
that if both are present they should be equal, except for some very
obscure and discouraged cases. Since lastBuildDate would make more sense
for us and pubDate seems to be the most commonly used, we defined both
and make them equal.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: rss feed managingEditor
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:13 +0000 (12:50 +0100)]
gitweb: rss feed managingEditor

The RSS 2.0 specification allows an optional managingEditor tag for the
channel, containing the "email address for person responsible for editorial
content", which is basically the project owner.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: feed generator metadata
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:12 +0000 (12:50 +0100)]
gitweb: feed generator metadata

Add <generator> tag to RSS and Atom feed. Versioning info (gitweb/git
core versions, separated by a literal slash) is stored in the
appropriate attribute for the Atom feed, and in the tag content for the
RSS feed.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogitweb: channel image in rss feed
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:11 +0000 (12:50 +0100)]
gitweb: channel image in rss feed

Define the channel image for the rss feed when the logo or favicon are
defined, preferring the former to the latter. As suggested in the RSS
2.0 specifications, the image's title and link as set to the same as the
channel's.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit: use run_command() to execute dashed externals
Jeff King [Wed, 28 Jan 2009 07:38:14 +0000 (02:38 -0500)]
git: use run_command() to execute dashed externals

We used to simply try calling execvp(); if it succeeded, then we were done
and the new program was running. If it didn't, then we knew that it wasn't
a valid command.

Unfortunately, this interacted badly with the new pager handling. Now that
git remains the parent process and the pager is spawned, git has to hang
around until the pager is finished. We install an atexit handler to do
this, but that handler never gets called if we successfully run execvp.

You could see this behavior by running any dashed external using a pager
(e.g., "git -p stash list"). The command finishes running, but the pager
is still going. In the case of less, it then gets an error reading from
the terminal and exits, potentially leaving the terminal in a broken state
(and not showing the output).

This patch just uses run_command() to try running the dashed external. The
parent git process then waits for the external process to complete and
then handles the pager cleanup as it would for an internal command.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agorun_command(): help callers distinguish errors
Jeff King [Wed, 28 Jan 2009 07:36:39 +0000 (02:36 -0500)]
run_command(): help callers distinguish errors

run_command() returns a single integer specifying either an
error code or the exit status of the spawned program. The
only way to tell the difference is that the error codes are
outside of the allowed range of exit status values.

Rather than make each caller implement the test against a
magic limit, let's provide a macro.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agorun_command(): handle missing command errors more gracefully
Jeff King [Wed, 28 Jan 2009 07:35:33 +0000 (02:35 -0500)]
run_command(): handle missing command errors more gracefully

When run_command() was asked to run a non-existant command, its behavior
varied depending on the platform:

  - on POSIX systems, we would fork, and then after the execvp call
    failed, we could call die(), which prints a message to stderr and
    exits with code 128.

  - on Windows, we do a PATH lookup, realize the program isn't there, and
    then return ERR_RUN_COMMAND_FORK

The goal of this patch is to make it clear to callers that the specific
error was a missing command. To do this, we will return the error code
ERR_RUN_COMMAND_EXEC, which is already defined in run-command.h, checked
for in several places, but never actually gets set.

The new behavior is:

  - on POSIX systems, we exit the forked process with code 127 (the same
    as the shell uses to report missing commands). The parent process
    recognizes this code and returns an EXEC error. The stderr message is
    silenced, since the caller may be speculatively trying to run a
    command. Instead, we use trace_printf so that somebody interested in
    debugging can see the error that occured.

  - on Windows, we check errno, which is already set correctly by
    mingw_spawnvpe, and report an EXEC error instead of a FORK error

Thus it is safe to speculatively run a command:

  int r = run_command_v_opt(argv, 0);
  if (r == -ERR_RUN_COMMAND_EXEC)
  /* oops, it wasn't found; try something else */
  else
  /* we failed for some other reason, error is in r */

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: Make 'configure --with-expat=path' actually work
Serge van den Boom [Wed, 28 Jan 2009 20:43:57 +0000 (21:43 +0100)]
Makefile: Make 'configure --with-expat=path' actually work

While the configure script sets the EXPATDIR environment variable to
whatever value was passed to its option --with-expat as the prefix of
the location of the expat library and headers, the Makefile ignored it.
This patch fixes this bug.

Signed-off-by: Serge van den Boom <svdb@stack.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>