gitweb.git
get_sha1: teach ":$n:<path>" the same relative path... Junio C Hamano Thu, 9 Dec 2010 21:38:05 +0000 (13:38 -0800)

get_sha1: teach ":$n:<path>" the same relative path logic

We taught the object name parser to take ":./<path>", ":../<path>", etc.
and understand them to be relative to the current working directory.

Given that ":<path>" is just a short-hand for ":0:<path>" (i.e. "take
stage #0 of that path"), we should allow ":$n:<path>" to interpret them
the same way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_sha1: support relative path ":path" syntaxNguyễn Thái Ngọc Duy Sun, 28 Nov 2010 03:37:32 +0000 (10:37 +0700)

get_sha1: support relative path ":path" syntax

Currently :path and ref:path can be used to refer to a specific object
in index or ref respectively. "path" component is absolute path. This
patch allows "path" to be written as "./path" or "../path", which is
relative to user's original cwd.

This does not work in commands for which startup_info is NULL
(i.e. non-builtin ones, it seems none of them needs this anyway).

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make prefix_path() return char* without constNguyễn Thái Ngọc Duy Thu, 11 Nov 2010 14:08:03 +0000 (21:08 +0700)

Make prefix_path() return char* without const

prefix_path() allocates new buffer. There's no reason for it to keep
the buffer for itself and waste memory.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

update-index: migrate to parse-options APIJonathan Nieder Wed, 1 Dec 2010 23:34:06 +0000 (17:34 -0600)

update-index: migrate to parse-options API

--refresh and --really-refresh accept flags (like -q) and modify
an error indicator. It might make sense to make the error
indicator global, but just pass the flags and a pointer to the error
indicator in a struct instead.

--cacheinfo wants 3 arguments. Use the OPTION_LOWLEVEL_CALLBACK
extension to grab them and PARSE_OPT_NOARG to disallow the "sticked"
--cacheinfo=foo form. (The resulting message

$ git update-index --cacheinfo=foo
error: option `cacheinfo' takes no value

is unfortunately incorrect.)

--assume-unchanged and --no-assume-unchanged probably should use the
OPT_UYN feature; but use a callback for now so the existing MARK_FLAG
and UNMARK_FLAG values can be used.

--stdin and --index-info are still constrained to be the last argument
(implemented using the OPTION_LOWLEVEL_CALLBACK extension).

--unresolve and --again consume all arguments that come after them
(also using OPTION_LOWLEVEL_CALLBACK).

The order of options matters. Each path on the command line is
affected only by the options that come before it. A custom
argument-parsing loop with parse_options_step() brings that about.

In exchange for all the fuss, we get the usual perks: support for
un-sticked options, better usage error messages, more useful -h
output, and argument parsing code that should be easier to tweak
in the future.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

setup: save prefix (original cwd relative to toplevel... Nguyễn Thái Ngọc Duy Wed, 1 Dec 2010 23:33:22 +0000 (17:33 -0600)

setup: save prefix (original cwd relative to toplevel) in startup_info

Save the path from the original cwd to the cwd at the end of the
setup procedure in the startup_info struct introduced in e37c1329
(2010-08-05). The value cannot vary from thread to thread anyway,
since the cwd is global.

So now in your builtin command, instead of passing prefix around,
when you want to convert a user-supplied path to a cwd-relative
path, you can use startup_info->prefix directly.

Caveat: As with the return value from setup_git_directory_gently(),
startup_info->prefix would be NULL when the original cwd is not a
subdir of the toplevel.

Longer term, this would allow the prefix to be reused when several
noncooperating functions require access to the same repository (for
example, when accessing configuration before running a builtin).

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: make resuming easier after PARSE_OPT_STO... Jonathan Nieder Wed, 1 Dec 2010 23:32:55 +0000 (17:32 -0600)

parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION

Introduce a PARSE_OPT_NON_OPTION state, so parse_option_step()
callers can easily distinguish between non-options and other
reasons for option parsing termination (like "--").

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: allow git commands to invent new option... Jonathan Nieder Wed, 1 Dec 2010 23:32:16 +0000 (17:32 -0600)

parse-options: allow git commands to invent new option types

parse-options provides a variety of option behaviors, including
OPTION_CALLBACK, which should take care of just about any sane
behavior. All supported behaviors obey the following constraint:

A --foo option can only accept (and base its behavior on)
one argument, which would be the following command-line
argument in the "unsticked" form.

Alas, some existing git commands have options that do not obey that
constraint. For example, update-index --cacheinfo takes three
arguments, and update-index --resolve takes all later parameters as
arguments.

Introduces an OPTION_LOWLEVEL_CALLBACK backdoor to parse-options so
such option types can be supported without tempting inventors of other
commands through mention in the public API. Commands can set the
callback field to a function accepting three arguments: the option
parsing context, the option itself, and a flag indicating whether the
the option was negated. When the option is encountered, that function
is called to take over from get_value(). The return value should be
zero for success, -1 for usage errors.

Thanks to Stephen Boyd for API guidance.

Improved-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: never suppress arghelp if LITERAL_ARGHEL... Jonathan Nieder Wed, 1 Dec 2010 23:31:36 +0000 (17:31 -0600)

parse-options: never suppress arghelp if LITERAL_ARGHELP is set

The PARSE_OPT_LITERAL_ARGHELP flag allows a program to override the
standard "<argument> for mandatory, [argument] for optional" markup in
its help message. Extend it to override the usual "no text for
disallowed", too (for the PARSE_OPT_NOARG | PARSE_OPT_LITERAL_ARGHELP
case, which was previously meaningless), to be more intuitive.

The motivation is to allow update-index to correctly advertise

--cacheinfo <mode> <object> <path>
add the specified entry to the index

while abusing PARSE_OPT_NOARG to disallow the "sticked form"

--cacheinfo=<mode> <object> <path>

Noticed-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: do not infer PARSE_OPT_NOARG from option... Stephen Boyd Wed, 1 Dec 2010 23:30:40 +0000 (17:30 -0600)

parse-options: do not infer PARSE_OPT_NOARG from option type

Simplify the "takes no value" error path by relying on PARSE_OPT_NOARG
being set correctly. That is:

- if the PARSE_OPT_NOARG flag is set, reject --opt=value
regardless of the option type;
- if the PARSE_OPT_NOARG flag is unset, accept --opt=value
regardless of the option type.

This way, the accepted usage more closely matches the usage advertised
with --help-all.

No functional change intended, since the NOARG flag is only used
with "boolean-only" option types in existing parse_options callers.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: sanity check PARSE_OPT_NOARG flagJonathan Nieder Thu, 2 Dec 2010 06:08:57 +0000 (00:08 -0600)

parse-options: sanity check PARSE_OPT_NOARG flag

Some option types cannot use an argument --- boolean options that
would set a bit or flag or increment a counter, for example. If
configured in the flag word to accept an argument anyway, the result
is an argument that is advertised in "program -h" output only to be
rejected by parse-options::get_value.

Luckily all current users of these option types use PARSE_OPT_NOARG
and do not use PARSE_OPT_OPTARG. Add a check to ensure that that
remains true. The check is run once for each invocation of
parse_option_start().

Improved-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: move NODASH sanity checks to parse_optio... Jonathan Nieder Thu, 2 Dec 2010 06:05:05 +0000 (00:05 -0600)

parse-options: move NODASH sanity checks to parse_options_check

A dashless switch (like '(' passed to 'git grep') cannot be negated,
cannot be attached to an argument, and cannot have a long form.
Currently parse-options runs the related sanity checks when the
dashless option is used; better to always check them at the start of
option parsing, so mistakes can be caught more quickly.

The error message at the new call site is less specific about the
nature of the error, for simplicity. On the other hand, it prints
which switch was problematic. Before:

fatal: BUG: dashless options can't be long

After:

error: BUG: switch '(' uses feature not supported for dashless options

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: clearer reporting of API misuseJonathan Nieder Thu, 2 Dec 2010 06:01:18 +0000 (00:01 -0600)

parse-options: clearer reporting of API misuse

The PARSE_OPT_LASTARG_DEFAULT flag is meant for options like
--contains that (1) traditionally had a mandatory argument and
(2) have some better behavior to use when appearing in the final
position. It makes no sense to combine this with OPTARG, so ever
since v1.6.4-rc0~71 (parse-options: add parse_options_check to
validate option specs, 2009-07-09) this mistake is flagged with

error: `--option` uses incompatible flags LASTARG_DEFAULT and OPTARG

and an exit status representing an error in commandline usage.

Unfortunately that which might confuse scripters calling such an
erroneous program into thinking the _script_ contains an error.
Clarify that it is an internal error by dying with a message beginning
"error: BUG: ..." and status 128.

While at it, clean up parse_options_check to prepare for more checks.

Long term, it would be nicer to make such checks happen at compile
time.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options: Don't call parse_options_check() so... Stephen Boyd Mon, 6 Dec 2010 07:57:42 +0000 (23:57 -0800)

parse-options: Don't call parse_options_check() so much

parse_options_check() is being called for each invocation of
parse_options_step which can be quite a bit for some commands. The
commit introducing this function cb9d398 (parse-options: add
parse_options_check to validate option specs., 2009-06-09) had the
correct motivation and explicitly states that parse_options_check()
should be called from parse_options_start(). However, the implementation
differs from the motivation. Fix it.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jl/maint-pull-tags-doc' into maintJunio C Hamano Wed, 24 Nov 2010 20:47:42 +0000 (12:47 -0800)

Merge branch 'jl/maint-pull-tags-doc' into maint

* jl/maint-pull-tags-doc:
pull: Remove --tags option from manpage

Merge branch 'kb/maint-diff-ws-check' into maintJunio C Hamano Wed, 24 Nov 2010 20:47:27 +0000 (12:47 -0800)

Merge branch 'kb/maint-diff-ws-check' into maint

* kb/maint-diff-ws-check:
diff: handle lines containing only whitespace and tabs better
test-lib: extend test_decode_color to handle more color codes

Merge branch 'jm/mailmap' into maintJunio C Hamano Wed, 24 Nov 2010 20:47:18 +0000 (12:47 -0800)

Merge branch 'jm/mailmap' into maint

* jm/mailmap:
t4203: do not let "git shortlog" DWIM based on tty
t4203 (mailmap): stop hardcoding commit ids and dates
mailmap: fix use of freed memory

Merge branch 'tr/maint-git-repack-tmpfile' into maintJunio C Hamano Wed, 24 Nov 2010 20:47:10 +0000 (12:47 -0800)

Merge branch 'tr/maint-git-repack-tmpfile' into maint

* tr/maint-git-repack-tmpfile:
repack: place temporary packs under .git/objects/pack/

Merge branch 'jk/maint-apply-no-binary' into maintJunio C Hamano Wed, 24 Nov 2010 20:47:04 +0000 (12:47 -0800)

Merge branch 'jk/maint-apply-no-binary' into maint

* jk/maint-apply-no-binary:
apply: don't segfault on binary files with missing data

Merge branch 'jn/send-pack-error' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:46 +0000 (12:46 -0800)

Merge branch 'jn/send-pack-error' into maint

* jn/send-pack-error:
send-pack: avoid redundant "pack-objects died with strange error"

Merge branch 'ak/submodule-sync' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:40 +0000 (12:46 -0800)

Merge branch 'ak/submodule-sync' into maint

* ak/submodule-sync:
submodule sync: Update "submodule.<name>.url" for empty directories

Merge branch 'jk/maint-rev-list-nul' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:32 +0000 (12:46 -0800)

Merge branch 'jk/maint-rev-list-nul' into maint

* jk/maint-rev-list-nul:
rev-list: handle %x00 NUL in user format

Merge branch 'cb/diff-fname-optim' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:26 +0000 (12:46 -0800)

Merge branch 'cb/diff-fname-optim' into maint

* cb/diff-fname-optim:
diff: avoid repeated scanning while looking for funcname
do not search functions for patch ID
add rebase patch id tests

Merge branch 'jk/no-textconv-symlink' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:20 +0000 (12:46 -0800)

Merge branch 'jk/no-textconv-symlink' into maint

* jk/no-textconv-symlink:
diff: don't use pathname-based diff drivers for symlinks

Merge branch 'dk/maint-blame-el' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:17 +0000 (12:46 -0800)

Merge branch 'dk/maint-blame-el' into maint

* dk/maint-blame-el:
git-blame.el: Add (require 'format-spec)

Merge branch 'aw/git-p4-deletion' into maintJunio C Hamano Wed, 24 Nov 2010 20:46:14 +0000 (12:46 -0800)

Merge branch 'aw/git-p4-deletion' into maint

* aw/git-p4-deletion:
Fix handling of git-p4 on deleted files

Merge branch 'kf/post-receive-sample-hook' into maintJunio C Hamano Wed, 24 Nov 2010 20:45:39 +0000 (12:45 -0800)

Merge branch 'kf/post-receive-sample-hook' into maint

* kf/post-receive-sample-hook:
post-receive-email: ensure sent messages are not empty

Merge branch 'jk/repack-reuse-object' into maintJunio C Hamano Wed, 24 Nov 2010 20:45:07 +0000 (12:45 -0800)

Merge branch 'jk/repack-reuse-object' into maint

* jk/repack-reuse-object:
Documentation: pack.compression: explain how to recompress
repack: add -F flag to let user choose between --no-reuse-delta/object

Conflicts:
Documentation/git-repack.txt

Merge branch 'bc/fix-cherry-pick-root' into maintJunio C Hamano Wed, 24 Nov 2010 20:44:46 +0000 (12:44 -0800)

Merge branch 'bc/fix-cherry-pick-root' into maint

* bc/fix-cherry-pick-root:
builtin/revert.c: don't dereference a NULL pointer

Merge branch 'uk/fix-author-ident-sed-script' into... Junio C Hamano Wed, 24 Nov 2010 20:44:41 +0000 (12:44 -0800)

Merge branch 'uk/fix-author-ident-sed-script' into maint

* uk/fix-author-ident-sed-script:
get_author_ident_from_commit(): remove useless quoting

Merge branch 'ab/makefile-track-cc' into maintJunio C Hamano Wed, 24 Nov 2010 20:44:35 +0000 (12:44 -0800)

Merge branch 'ab/makefile-track-cc' into maint

* ab/makefile-track-cc:
Makefile: add CC to TRACK_CFLAGS

Merge branch 'mg/reset-doc' into maintJunio C Hamano Wed, 24 Nov 2010 20:44:26 +0000 (12:44 -0800)

Merge branch 'mg/reset-doc' into maint

* mg/reset-doc:
git-reset.txt: make modes description more consistent
git-reset.txt: point to git-checkout
git-reset.txt: use "working tree" consistently
git-reset.txt: reset --soft is not a no-op
git-reset.txt: reset does not change files in target
git-reset.txt: clarify branch vs. branch head

Merge branch 'tr/send-email-refuse-sending-unedited... Junio C Hamano Wed, 24 Nov 2010 20:44:12 +0000 (12:44 -0800)

Merge branch 'tr/send-email-refuse-sending-unedited-cover-letter' into maint

* tr/send-email-refuse-sending-unedited-cover-letter:
send-email: Refuse to send cover-letter template subject

imap-send: link against libcrypto for HMAC and othersDiego Elio Pettenò Wed, 24 Nov 2010 20:03:53 +0000 (21:03 +0100)

imap-send: link against libcrypto for HMAC and others

When using stricter linkers, such as GNU gold or Darwin ld, transitive
dependencies are not counted towards symbol resolution. If we don't link
imap-send to libcrypto, we'll have undefined references to the HMAC_*,
EVP_* and ERR_* functions families.

Signed-off-by: Diego Elio Pettenò <flameeyes@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-send-email.perl: Deduplicate "to:" and "cc:" entrie... Joe Perches Sat, 20 Nov 2010 23:06:05 +0000 (15:06 -0800)

git-send-email.perl: Deduplicate "to:" and "cc:" entries with names

If an email address in the "to:" list is in the style
"First Last <email@domain.tld>", ie: not just a bare
address like "email@domain.tld", and the same named
entry style exists in the "cc:" list, the current
logic will not remove the entry from the "cc:" list.

Add logic to better deduplicate the "cc:" list by also
matching the email address with angle brackets.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mingw: do not set errno to 0 on successErik Faye-Lund Tue, 23 Nov 2010 19:53:08 +0000 (20:53 +0100)

mingw: do not set errno to 0 on success

Currently do_lstat always sets errno to 0 on success. This incorrectly
overwrites previous errors.

Fetch the error-code into a temporary variable instead, and assign that
to errno on failure.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clean: remove redundant variable baselenNguyễn Thái Ngọc Duy Mon, 15 Nov 2010 06:42:44 +0000 (13:42 +0700)

clean: remove redundant variable baselen

baselen used to be the result of common_prefix() when it was made
builtin. Since 1d8842d (Add 'fill_directory()' helper function for
directory traversal - 2009-05-14), its value will always be
zero. Remove it because it's no longer variable.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'mz/maint-rebase-X-fix' into maintJunio C Hamano Wed, 17 Nov 2010 21:18:19 +0000 (13:18 -0800)

Merge branch 'mz/maint-rebase-X-fix' into maint

* mz/maint-rebase-X-fix:
t3402: test "rebase -s<strategy> -X<opt>"

Documentation/git-pull: clarify configurationMartin von Zweigbergk Fri, 12 Nov 2010 18:55:58 +0000 (19:55 +0100)

Documentation/git-pull: clarify configuration

The sentence about 'branch.<name>.rebase' refers to the first sentence
in the paragraph and not to the sentence about avoiding rebasing
non-local changes. Clarify this.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Document that rev-list --graph triggers parent rewriting.Yann Dirson Fri, 12 Nov 2010 08:48:58 +0000 (09:48 +0100)

Document that rev-list --graph triggers parent rewriting.

This may help to understand why --graph causes more comments to
be selected.

Signed-off-by: Yann Dirson <ydirson@altern.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clean: avoid quoting twiceNguyễn Thái Ngọc Duy Mon, 15 Nov 2010 10:12:44 +0000 (17:12 +0700)

clean: avoid quoting twice

qname is the result of quote_path_relative(), which does
quote_c_style_counted() internally. Remove the hard-coded quotes.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

document sigchain apiJeff King Fri, 12 Nov 2010 04:24:56 +0000 (23:24 -0500)

document sigchain api

It's pretty straightforward, but a stripped-down example
never hurts. And we should make clear that it is explicitly
OK to use SIG_DFL and SIG_IGN.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Keep together options controlling the behaviour of... Yann Dirson Wed, 10 Nov 2010 20:27:13 +0000 (21:27 +0100)

Keep together options controlling the behaviour of diffcore-rename.

It makes little sense to have --diff-filter in the middle of them, and
even spares an ifndef::git-format-patch.

Signed-off-by: Yann Dirson <ydirson@altern.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3402: test "rebase -s<strategy> -X<opt>"Junio C Hamano Thu, 11 Nov 2010 21:28:57 +0000 (13:28 -0800)

t3402: test "rebase -s<strategy> -X<opt>"

Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase -X: do not clobber strategyMartin von Zweigbergk Wed, 10 Nov 2010 07:14:26 +0000 (08:14 +0100)

rebase -X: do not clobber strategy

If any strategy options are passed to -X, the strategy will always be
set to 'recursive'. According to the documentation, it should default to
'recursive' if it is not set, but it should be possible to set it to
other values.

This fixes a regression introduced in v1.7.3-rc0~67^2 (2010-07-29).

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: document show -sJonathan Nieder Tue, 9 Nov 2010 17:12:48 +0000 (11:12 -0600)

Documentation: document show -s

Git's diff machinery has supported a -s (silence diff output) option
as far back as v0.99~900 (Silent flag for show-diff, 2005-04-13), but
the option is only advertised in an odd corner of the git diff-tree
manual.

The main use is to retrieve basic metadata about a commit:

git show -s rev

Explain this in the 'git log' manual and provide an example in the
'git show' examples section. This is kind of a cop-out, since it
would be more useful to explain it in the 'git show' manual proper,
which says:

The command takes options applicable to the git
diff-tree command to control how the changes the
commit introduces are shown.

This manual page describes only the most frequently
used options.

Fixing that is a larger task for another day.

Reported-by: Will Hall <will@gnatter.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

dir.c: fix EXC_FLAG_MUSTBEDIR match in sparse checkoutNguyễn Thái Ngọc Duy Sun, 7 Nov 2010 18:04:58 +0000 (01:04 +0700)

dir.c: fix EXC_FLAG_MUSTBEDIR match in sparse checkout

Commit c84de70 (excluded_1(): support exclude files in index -
2009-08-20) tries to work around the fact that there is no
directory/file information in index entries, therefore
EXC_FLAG_MUSTBEDIR match would fail.

Unfortunately the workaround is flawed. This fixes it.

Reported-by: Thomas Rinderknecht <thomasr@sailguy.org>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pull: Remove --tags option from manpageJens Lehmann Wed, 3 Nov 2010 20:55:48 +0000 (21:55 +0100)

pull: Remove --tags option from manpage

"Fetch all tags and merge them" does not make any sense as a request at
the logical level, even though it might be more convenient to type.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-blame.el: Add (require 'format-spec)David Kågedal Tue, 25 May 2010 13:44:15 +0000 (15:44 +0200)

git-blame.el: Add (require 'format-spec)

c5022f57 (git-blame.el: Change how blame information is shown,
2009-09-29) taught the "M-x git-blame" mode to format its output
in a more interesting way, making use of the format-spec function.

format-spec is included in Emacs 23 and is a useful function.
Older emacsen can get it from Gnus. In all emacsen, we need
to 'require it before use to avoid warnings:

git-blame.el:483:1:Warning: the function `format-spec' is not known to be
defined.

Reported-by: Sergei Organov <osv@javad.com>
Reported-by: Kevin Ryde <user42@zip.com.au>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

apply: don't segfault on binary files with missing... Jeff King Mon, 18 Oct 2010 18:39:17 +0000 (14:39 -0400)

apply: don't segfault on binary files with missing data

Usually when applying a binary diff generated without
--binary, it will be rejected early, as we don't even have
the full sha1 of the pre- and post-images.

However, if the diff is generated with --full-index (but not
--binary), then we will actually try to apply it. If we have
the postimage blob, then we can take a shortcut and never
even look at the binary diff at all (e.g., this can happen
when rebasing changes within a repository).

If we don't have the postimage blob, though, we try to look
at the actual fragments, of which there are none, and get a
segfault. This patch checks explicitly for that case and
complains to the user instead of segfaulting. We need to
keep the check at a low level so that the "shortcut" case
above continues to work.

We also add a test that demonstrates the segfault. While
we're at it, let's also explicitly test the shortcut case.

Reported-by: Rafaël Carré <rafael.carre@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix a formatting error in git-merge.txtNathan W. Panike Fri, 29 Oct 2010 15:33:54 +0000 (10:33 -0500)

Fix a formatting error in git-merge.txt

Inside an element of an enumerated list, the second and subsequent
paragraphs need to lose their indent and have to be strung together with a
line with a single '+' on it instead. Otherwise the lines below are shown
in typewriter face, which just looks wrong.

Signed-off-by: Nathan W. Panike <nathan.panike@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix copy-pasted comments related to tree diff handling.Yann Dirson Sun, 24 Oct 2010 21:03:10 +0000 (23:03 +0200)

Fix copy-pasted comments related to tree diff handling.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix handling of git-p4 on deleted filesAndrew Waters Fri, 22 Oct 2010 12:26:02 +0000 (13:26 +0100)

Fix handling of git-p4 on deleted files

Signed-off-by: Andrew Waters <apwaters@googlemail.com>
Tested-by: Thomas Berg <merlin66b@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.3.2 v1.7.3.2Junio C Hamano Fri, 22 Oct 2010 00:14:32 +0000 (17:14 -0700)

Git 1.7.3.2

Merge branch 'sn/doc-opt-notation' into maintJunio C Hamano Thu, 21 Oct 2010 23:26:42 +0000 (16:26 -0700)

Merge branch 'sn/doc-opt-notation' into maint

* sn/doc-opt-notation:
Fix {update,checkout}-index usage strings
Put a space between `<' and argument in pack-objects usage string
Remove stray quotes in --pretty and --format documentation
Use parentheses and `...' where appropriate
Fix odd markup in --diff-filter documentation
Use angles for placeholders consistently

Merge branch 'mg/fix-build-remote-helpers' into maintJunio C Hamano Thu, 21 Oct 2010 23:26:38 +0000 (16:26 -0700)

Merge branch 'mg/fix-build-remote-helpers' into maint

* mg/fix-build-remote-helpers:
remote-helpers: build in platform independent directory

diff: handle lines containing only whitespace and tabs... Kevin Ballard Wed, 20 Oct 2010 22:17:26 +0000 (15:17 -0700)

diff: handle lines containing only whitespace and tabs better

When a line contains nothing but whitespace with at least one tab
and the core.whitespace config option contains blank-at-eol, the
whitespace on the line is being printed twice, once unhighlighted
(unless otherwise matched by one of the other core.whitespace values),
and a second time highlighted for blank-at-eol.

Update the leading indentation check to stop checking when it reaches
the trailing whitespace.

Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib: extend test_decode_color to handle more color... Kevin Ballard Wed, 20 Oct 2010 22:17:25 +0000 (15:17 -0700)

test-lib: extend test_decode_color to handle more color codes

Enhance the test_decode_color function to handle all common color codes,
including background colors and escapes that contain multiple codes.
This change necessitates changing <WHITE> to <BOLD>, so update t4034
as well.

This change is necessary for the next commit in order to test
background colors properly.

Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4203: do not let "git shortlog" DWIM based on ttyJunio C Hamano Wed, 20 Oct 2010 06:32:06 +0000 (23:32 -0700)

t4203: do not let "git shortlog" DWIM based on tty

The "shortlog" command defaults to HEAD only when its standard input is
connected to a terminal; otherwise it acts in the traditional "filter"
mode to read and summarize the "git log" output.

Two new tests added to t4203 assumed that the command always default to
HEAD, but when the standard input is closed (or connected to /dev/null),
it output empty, which is a summary of its empty input, causing the test
to break.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t9001-send-email.sh: fix stderr redirection in 'Inval... Antonio Ospite Tue, 19 Oct 2010 09:50:39 +0000 (11:50 +0200)

t/t9001-send-email.sh: fix stderr redirection in 'Invalid In-Reply-To'

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Clarify and extend the "git diff" format documentationAndreas Gruenbacher Thu, 14 Oct 2010 10:53:11 +0000 (12:53 +0200)

Clarify and extend the "git diff" format documentation

Move the similarity and dissimilarity index header description closer to
where those extended headers are described.

Describe and/or clarify the format used for file modes, pathnames, and
the index header.

Document that all "old" files refer to the state before applying the
*entire* output, and all "new" files refer to the state thereafter.

Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-show-ref.txt: clarify the pattern matchingMichael J Gruber Mon, 18 Oct 2010 11:33:32 +0000 (13:33 +0200)

git-show-ref.txt: clarify the pattern matching

git-show-ref really does not do what one would expect under the name
pattern matching, so describe it.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

documentation: git-config minor cleanupsCliff Frey Mon, 18 Oct 2010 03:10:45 +0000 (20:10 -0700)

documentation: git-config minor cleanups

Change push.default's description to add hyphens between values and
descriptions to make the manpage easier to read. The html version is
readable either way.

Change status.showUntrackedFiles to make item descriptions be
sentences and to use the same asciidoc format as push.default. The
only visual change is the additions of "."

Signed-off-by: Cliff Frey <cliff@meraki.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update test script annotate-tests.sh to handle missing... Kevin Ballard Sat, 16 Oct 2010 11:09:20 +0000 (04:09 -0700)

Update test script annotate-tests.sh to handle missing/extra authors

The current script used by annotate-tests.sh (used by t8001 and t8002) fails
to emit a warning if any of the expected authors never show up in the output
or if authors that show up in the output were never specified as expected.
Update the script to fail in both of these scenarios.

Helped-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Kevin Ballard <kevin@sb.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

repack: place temporary packs under .git/objects/pack/Thomas Rast Tue, 19 Oct 2010 09:50:43 +0000 (11:50 +0200)

repack: place temporary packs under .git/objects/pack/

git-pack-objects is already careful to start out its temporary packs
under .git/objects/pack/ (cf. 8b4eb6b, Do not perform cross-directory
renames when creating packs, 2008-09-22), but git-repack did not
respond in kind so the effort was lost when the filesystem boundary is
exactly at that directory.

Let git-repack pass a path under .git/objects/pack/ as the base for
its temporary packs.

This means we might need the $PACKDIR sooner (before the pack-objects
invocation), so move the mkdir up just to be safe.

Also note that the only use of *.pack is in the find invocation way
before the pack-objects call, so the temporary packs will not suddenly
show up in any wildcards because of the directory change.

Reported-by: Marat Radchenko <marat@slonopotamus.org>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

send-pack: avoid redundant "pack-objects died with... Jonathan Nieder Sat, 16 Oct 2010 17:09:54 +0000 (12:09 -0500)

send-pack: avoid redundant "pack-objects died with strange error"

Saying "pack-objects died with strange error" after "pack-objects died
of signal 13" seems kind of redundant. The latter message was
introduced when the run-command API changed to report abnormal exits
on behalf of the caller (v1.6.5-rc0~86^2~5, 2009-07-04).

Similarly, after a controlled pack-objects failure (detectable as a
normal exit with nonzero status), a "died with strange error" message
would be redundant next to the message from pack-objects itself.

So leave off the "strange error" messages.

The result should look something like this:

$ git push sf master
Counting objects: 21542, done.
Compressing objects: 100% (4179/4179), done.
fatal: Unable to create temporary file: Permission denied
error: pack-objects died of signal 13
error: failed to push some refs to 'ssh://sf.net/gitroot/project/project'
$

Or in the "controlled exit" case (contrived example):

[...]
fatal: delta size changed
error: failed to push some refs to 'ssh://example.com/foo/bar'
$

Improved-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4203 (mailmap): stop hardcoding commit ids and datesJonathan Nieder Fri, 15 Oct 2010 17:12:19 +0000 (12:12 -0500)

t4203 (mailmap): stop hardcoding commit ids and dates

A seemingly innocuous change like adding test_tick somewhere can
completely upset the final mailmap test, since it checks commit
hashes and dates. Make the test less fragile by fuzzing away the
unpredictable parts and leaving in the authors (which is what the
test is about, anyway).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailmap: fix use of freed memoryJim Meyering Mon, 11 Oct 2010 15:41:16 +0000 (17:41 +0200)

mailmap: fix use of freed memory

On an x86_64 system (F13-based), I ran these commands in an empty directory:

git init
printf '%s\n' \
'<jdoe@example.com> <jdoe@example.COM>' \
'John <jdoe@example.com>' > .mailmap
git shortlog < /dev/null

Here's the result:

(reading log message from standard input)
*** glibc detected *** git: free(): invalid pointer: 0x0000000000f53730 ***
======= Backtrace: =========
/lib64/libc.so.6[0x31ba875676]
git[0x48c2a5]
git[0x4b9858]
...
zsh: abort (core dumped) git shortlog

What happened?

Some .mailmap entry is of the <email1> <email2> form,
while a subsequent one looks like "User Name <Email2>,
and the two email addresses on the right are not identical
but are "equal" when using a case-insensitive comparator.

Then, when add_mapping is processing the latter line, new_email is NULL
and we free me->email, yet do not replace it with a new strdup'd string.
Thus, when later we attempt to use the buffer behind that ->email pointer,
we reference freed memory.

The solution is to free ->email and ->name only if we're about to replace them.

[jc: squashed in the tests from Jonathan]

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Better advice on using topic branches for kernel develo... Luck, Tony Fri, 1 Oct 2010 18:57:52 +0000 (11:57 -0700)

Better advice on using topic branches for kernel development

Linus Torvalds wrote:
> The real problem is that maintainers often pick random - and not at
> all stable - points for their development to begin with. They just
> pick some random "this is where Linus -git tree is today", and do
> their development on top of that. THAT is the problem - they are
> unaware that there's some nasty bug in that version.

Maybe they do this because they read it in the Git user-manual.

Fix the manual to give them better guidance.

Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: update implicit "--no-index" behavior... Jonathan Nieder Mon, 11 Oct 2010 16:06:18 +0000 (11:06 -0500)

Documentation: update implicit "--no-index" behavior in "git diff"

Originally "--no-index" mode triggered for untracked files within the
tracked tree, but with v1.5.6-rc1~41 (Merge branch 'jc/diff-no-no-index,
2008-05-26) the command was fixed to only implicitly trigger when paths
outside the tracked tree are mentioned.

Reported-by: Yann Dirson <dirson@bertin.fr>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: expand 'git diff' SEE ALSO sectionJonathan Nieder Mon, 11 Oct 2010 16:05:32 +0000 (11:05 -0500)

Documentation: expand 'git diff' SEE ALSO section

Point in many directions in the hope of helping the reader find what
is needed more quickly.

This commit also removes the summary attached to the SEE ALSO entry
for difftool, to avoid making the SEE ALSO list too verbose. If the
reader wants a summary of the commands referred to, she can always
look to the top of the named pages or to the table of contents on the
main git(1) page.

Suggested-by: Goswin von Brederlow <goswin-v-b@web.de>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: diff can compare blobsJonathan Nieder Mon, 11 Oct 2010 16:04:08 +0000 (11:04 -0500)

Documentation: diff can compare blobs

Meanwhile, there is no plumbing command to compare two blobs.
Strange.

Reported-by: Yann Dirson <dirson@bertin.fr>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: gitrevisions is in section 7Jonathan Nieder Mon, 11 Oct 2010 16:03:32 +0000 (11:03 -0500)

Documentation: gitrevisions is in section 7

Fix references to gitrevisions(1) in the manual pages and HTML
documentation.

In practice, this will not matter much unless someone tries to use a
hard copy of the git reference manual.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-list: handle %x00 NUL in user formatJeff King Thu, 7 Oct 2010 18:25:43 +0000 (14:25 -0400)

rev-list: handle %x00 NUL in user format

The code paths for showing commits in "git log" and "git
rev-list --graph" correctly handle embedded NULs by looking
only at the resulting strbuf's length, and never treating it
as a C string. The code path for regular rev-list, however,
used printf("%s"), which resulted in truncated output. This
patch uses fwrite instead, like the --graph code path.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule sync: Update "submodule.<name>.url" for empty... Andreas Köhler Fri, 8 Oct 2010 01:07:48 +0000 (03:07 +0200)

submodule sync: Update "submodule.<name>.url" for empty directories

If a submodule directory has not been filled by "git submodule update"
yet, then "git submodule sync" must still update the super-project's
configuration for submodule.<name>.url.

This situation occurs when switching between branches with a module from
different urls and other branches without the submodule.

Signed-off-by: Andreas Köhler <andi5.py@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

shell portability: no "export VAR=VAL"Junio C Hamano Wed, 13 Oct 2010 18:36:36 +0000 (11:36 -0700)

shell portability: no "export VAR=VAL"

It is more portable to say "VAR=VAL && export VAR" instead.

Noticed by Ævar.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

CodingGuidelines: reword parameter expansion sectionJunio C Hamano Wed, 13 Oct 2010 18:15:14 +0000 (11:15 -0700)

CodingGuidelines: reword parameter expansion section

Group entries related to parameter substitutions together and avoid
using the word "regexp" to refer to the ${parameter/pattern/string}
substitution (banned), as the pattern there is a shell glob and not
a regular expression.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: update-index: -z applies also to --index... Bert Wesarg Fri, 8 Oct 2010 06:50:20 +0000 (08:50 +0200)

Documentation: update-index: -z applies also to --index-info

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: No argument of ALLOC_GROW should have... Jonathan Nieder Fri, 8 Oct 2010 16:46:59 +0000 (11:46 -0500)

Documentation: No argument of ALLOC_GROW should have side-effects

The explanatory comment before the definition of ALLOC_GROW carefully
lists arguments that will be used more than once and thus cannot have
side-effects; a lazy reader might conclude that the arguments not
listed are used only once and side effects safe.

Correct it to list all three arguments, avoiding this confusion.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix {update,checkout}-index usage stringsŠtěpán Němec Fri, 8 Oct 2010 17:31:20 +0000 (19:31 +0200)

Fix {update,checkout}-index usage strings

The `<file>' argument is optional in both cases (the man pages are
already correct).

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Put a space between `<' and argument in pack-objects... Štěpán Němec Fri, 8 Oct 2010 17:31:19 +0000 (19:31 +0200)

Put a space between `<' and argument in pack-objects usage string

This makes it cosistent with other places (including the
git-pack-objects(1) manpage itself) and avoids possible confusion (I,
for one, mistook `<object-list' for a `<object-list>' typo at first when
preparing this series).

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Remove stray quotes in --pretty and --format documentationŠtěpán Němec Fri, 8 Oct 2010 17:31:18 +0000 (19:31 +0200)

Remove stray quotes in --pretty and --format documentation

Quotes (for emphasis) are used in option explanations, not the
headings.

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use parentheses and `...' where appropriateŠtěpán Němec Fri, 8 Oct 2010 17:31:17 +0000 (19:31 +0200)

Use parentheses and `...' where appropriate

Remove some stray usage of other bracket types and asterisks for the
same purpose.

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix odd markup in --diff-filter documentationŠtěpán Němec Fri, 8 Oct 2010 18:40:32 +0000 (20:40 +0200)

Fix odd markup in --diff-filter documentation

Instead of using the regex-like bracket expression, use grouping to make
it more consistent with other similar places. The brackets now have the
same meaning as in other documentation (i.e., the argument is optional).

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Mentored-and-Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use angles for placeholders consistentlyŠtěpán Němec Fri, 8 Oct 2010 17:31:15 +0000 (19:31 +0200)

Use angles for placeholders consistently

Signed-off-by: Štěpán Němec <stepnem@gmail.com>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t3415: use && where applicable.Yann Dirson Fri, 1 Oct 2010 21:19:19 +0000 (23:19 +0200)

t/t3415: use && where applicable.

Signed-off-by: Yann Dirson <ydirson@altern.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

SubmittingPatches: Document some extra tags used in... Ramkumar Ramachandra Sat, 2 Oct 2010 04:37:43 +0000 (10:07 +0530)

SubmittingPatches: Document some extra tags used in commit messages

Document the meanings of the tags "Reported-by:", "Acked-by:",
"Reviewed-by:" and "Tested-by:" clearly. Also mention that the user is
free to use any custom tags.

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Liked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-clone: describe --mirror more verboselyUwe Kleine-König Mon, 4 Oct 2010 17:28:27 +0000 (19:28 +0200)

Documentation/git-clone: describe --mirror more verbosely

Some people in #linux-rt noticed that describing what "--mirror" option does
with "it mirrors" is way insufficient.

Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Darren 'Some People' Hart <darren@dvhart.com>
Cc: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

do not depend on signed integer overflowErik Faye-Lund Tue, 5 Oct 2010 07:24:10 +0000 (09:24 +0200)

do not depend on signed integer overflow

Signed integer overflow is not defined in C, so do not depend on it.

This fixes a problem with GCC 4.4.0 and -O3 where the optimizer would
consider "consumed_bytes > consumed_bytes + bytes" as a constant
expression, and never execute the die()-call.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

work around buggy S_ISxxx(m) implementationsRené Scharfe Mon, 4 Oct 2010 10:53:11 +0000 (12:53 +0200)

work around buggy S_ISxxx(m) implementations

There are buggy implementations of S_ISxxx(m) macros on some platforms
(e.g. NetBSD). The issue is that NetBSD doesn't take care to wrap its
macro arguments in parentheses, so on Linux and sane systems we have
S_ISREG(m) defined as something like:

(((m) & S_IFMT) == S_IFREG)

But on NetBSD:

((m & _S_IFMT) == _S_IFREG)

Since a caller in builtin/diff.c called our macro as `S_IFREG | 0644'
this bug introduced a logic error on NetBSD, since the precedence of
bit-wise & is higher than | in C.

[jc: took change description from Ævar Arnfjörð Bjarmason's patch]

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

xdiff: cast arguments for ctype functions to unsigned... Jonathan Nieder Mon, 4 Oct 2010 09:09:17 +0000 (04:09 -0500)

xdiff: cast arguments for ctype functions to unsigned char

The ctype functions isspace(), isalnum(), et al take an integer
argument representing an unsigned character, or -1 for EOF. On
platforms with a signed char, it is unsafe to pass a char to them
without casting it to unsigned char first.

Most of git is already shielded against this by the ctype
implementation in git-compat-util.h, but xdiff, which uses libc
ctype.h, ought to be fixed.

Noticed-by: der Mouse <mouse@Rodents-Montreal.ORG>
Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

init: plug tiny one-time memory leakJonathan Nieder Mon, 4 Oct 2010 04:34:27 +0000 (23:34 -0500)

init: plug tiny one-time memory leak

The buffer used to construct paths like ".git/objects/info" and
".git/objects/pack" is allocated on the heap and never freed.

So free it. While at it, factor out the relevant code into its own
function and rename the sha1_dir variable to object_directory (to
match the change in everyday usage after the renaming of
SHA1_FILE_DIRECTORY in v0.99~603^2~7, 2005).

Noticed by valgrind while setting up tests (in test-lib).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diffcore-pickaxe.c: remove unnecessary curly bracesBrandon Casey Mon, 4 Oct 2010 22:51:47 +0000 (17:51 -0500)

diffcore-pickaxe.c: remove unnecessary curly braces

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge early part of git-svn into maintJunio C Hamano Tue, 5 Oct 2010 15:36:10 +0000 (08:36 -0700)

Merge early part of git-svn into maint

* commit 'git-svn/master~1':
git-svn: fix processing of decorated commit hashes
git-svn: check_cherry_pick should exclude commits already in our history
Documentation/git-svn: discourage "noMetadata"

t3020 (ls-files-error-unmatch): remove stray '1' from... Elijah Newren Sun, 3 Oct 2010 20:00:00 +0000 (14:00 -0600)

t3020 (ls-files-error-unmatch): remove stray '1' from end of file

Acked-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

setup: make sure git dir path is in a permanent bufferJonathan Nieder Sat, 2 Oct 2010 08:36:52 +0000 (03:36 -0500)

setup: make sure git dir path is in a permanent buffer

If setup_git_env() is run before the usual repository discovery
sequence and .git is a file with the text

gitdir: <path>

(with <path> any string) then the in-core git_dir variable is set to
the result of converting <path> to an absolute path using
make_absolute_path().

Unfortunately make_absolute_path() returns its result in a static
buffer that is overwritten by later calls. Such a call could cause
later accesses to git_dir (from git_pathdup(), for example) to read
the wrong path, leaving git very confused.

It is not obvious whether any existing code in git will trigger the
problem, but in any case, it is worth a few dozen bytes to copy the
return value from make_absolute_path() for some added peace of mind.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

environment.c: remove unused variableJonathan Nieder Sat, 2 Oct 2010 08:35:29 +0000 (03:35 -0500)

environment.c: remove unused variable

After v1.6.0-rc0~230^2^ (environment.c: remove unused function,
2008-06-19), git_refs_dir is not used any more.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix typo in pack-objects' usageJohannes Schindelin Wed, 29 Sep 2010 22:22:33 +0000 (23:22 +0100)

Fix typo in pack-objects' usage

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make sure that git_getpass() never returns NULLJohannes Schindelin Wed, 29 Sep 2010 22:22:32 +0000 (23:22 +0100)

Make sure that git_getpass() never returns NULL

The result of git_getpass() is used without checking for NULL, so let's
just die() instead of returning NULL.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: avoid repeated scanning while looking for funcnameRené Scharfe Sun, 26 Sep 2010 16:26:56 +0000 (18:26 +0200)

diff: avoid repeated scanning while looking for funcname

For each hunk, xdl_find_func searches the preimage for a function name
until the beginning of the file. If the file does not contain any
function names, this search has complexity O(n^2) in the number of
hunks n.

Instead, inline xdl_find_func() and keep track of up to which line we
have scanned already and the contents of the last funcname line that
we have found.

Noticed and a different approach proposed by Clemens Buchacher.
This alternative solution was done by René Scharfe.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0004 (unwritable files): simplify error handlingJonathan Nieder Tue, 7 Sep 2010 01:50:17 +0000 (20:50 -0500)

t0004 (unwritable files): simplify error handling

Instead of

... normal test script ...
status=$?
... cleanup ...
(exit $status)

set up cleanup commands with test_when_finished. This makes the
test script a little shorter, and more importantly, it ensures errors
during cleanup are reported.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>