Code

git.git
12 years agoMakefile: add missing header file dependencies
Jonathan Nieder [Fri, 18 Nov 2011 10:02:02 +0000 (04:02 -0600)]
Makefile: add missing header file dependencies

When the streaming filter API was introduced in v1.7.7-rc0~60^2~7
(2011-05-20), we forgot to add its header to LIB_H.  Most translation
units depend on streaming.h via cache.h.

v1.7.5-rc0~48 (Fix sparse warnings, 2011-03-22) introduced undeclared
dependencies by url.o on url.h and thread-utils.o on thread-utils.h.

Noticed by make CHECK_HEADER_DEPENDENCIES=1.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agonotes merge: eliminate OUTPUT macro
Jonathan Nieder [Fri, 18 Nov 2011 01:27:46 +0000 (19:27 -0600)]
notes merge: eliminate OUTPUT macro

The macro is variadic, which breaks support for pre-C99 compilers,
and it hides an "if", which can make code hard to understand on
first reading if some arguments have side-effects.

The OUTPUT macro seems to have been inspired by the "output" function
from merge-recursive.  But that function in merge-recursive exists to
indent output based on the level of recursion and there is no similar
justification for such a function in "notes merge".

Noticed with 'make CC="gcc -std=c89 -pedantic"':

 notes-merge.c:24:22: warning: anonymous variadic macros were introduced in C99 [-Wvariadic-macros]

Encouraged-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodo not let git_path clobber errno when reporting errors
Jonathan Nieder [Wed, 16 Nov 2011 08:03:36 +0000 (02:03 -0600)]
do not let git_path clobber errno when reporting errors

Because git_path() calls vsnprintf(), code like

fd = open(git_path("SQUASH_MSG"), O_WRONLY | O_CREAT, 0666);
die_errno(_("Could not write to '%s'"), git_path("SQUASH_MSG"));

can end up printing an error indicator from vsnprintf() instead of
open() by mistake.  Store the path we are trying to write to in a
temporary variable and pass _that_ to die_errno(), so the messages
written by git cherry-pick/revert and git merge can avoid this source
of confusion.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.8-rc3 v1.7.8-rc3
Junio C Hamano [Thu, 17 Nov 2011 19:06:15 +0000 (11:06 -0800)]
Git 1.7.8-rc3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agopack-object: tolerate broken packs that have duplicated objects
Junio C Hamano [Thu, 17 Nov 2011 06:04:03 +0000 (22:04 -0800)]
pack-object: tolerate broken packs that have duplicated objects

When --reuse-delta is in effect (which is the default), and an existing
pack in the repository has the same object registered twice (e.g. one copy
in a non-delta format and the other copy in a delta against some other
object), an attempt to repack the repository can result in a cyclic delta
dependency, causing write_one() function to infinitely recurse into
itself.

Detect such a case and break the loopy dependency by writing out an object
that is involved in such a loop in the non-delta format.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoreceive-pack, fetch-pack: reject bogus pack that records objects twice
Junio C Hamano [Thu, 17 Nov 2011 06:04:13 +0000 (22:04 -0800)]
receive-pack, fetch-pack: reject bogus pack that records objects twice

When receive-pack & fetch-pack are run and store the pack obtained over
the wire to a local repository, they internally run the index-pack command
with the --strict option. Make sure that we reject incoming packfile that
records objects twice to avoid spreading such a damage.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agorefs: loosen over-strict "format" check
Junio C Hamano [Thu, 17 Nov 2011 00:54:32 +0000 (16:54 -0800)]
refs: loosen over-strict "format" check

The add_extra_ref() interface is used to add an extra-ref that is _not_
our ref for the purpose of helping auto-following of tags and reducing
object transfer from remote repository, and they are typically formatted
as a tagname followed by ^{} to make sure no valid refs match that
pattern. In other words, these entries are deliberately formatted not to
pass check-refname-format test.

A recent series however added a test unconditionally to the add_ref()
function that is called from add_extra_ref(). The check may be sensible
for other two callsites of the add_ref() interface, but definitely is
a wrong thing to do in add_extra_ref(). Disable it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Michael Haggerty <mhagger@alum.mit.edu>
12 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>
12 years agorevert: prettify fatal messages
Ramkumar Ramachandra [Tue, 15 Nov 2011 09:31:32 +0000 (15:01 +0530)]
revert: prettify fatal messages

Some of the fatal messages printed by revert and cherry-pick look ugly
like the following:

  fatal: Could not open .git/sequencer/todo.: No such file or directory

The culprit here is that these callers of the die_errno() function did not
take it into account that the message string they give to it is followed
by ": <strerror>", hence the message typically should not end with the
full-stop.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-compat-util: don't assume value for undefined variable
Ramkumar Ramachandra [Tue, 15 Nov 2011 17:31:09 +0000 (23:01 +0530)]
git-compat-util: don't assume value for undefined variable

Suggested-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosha1_file: don't mix enum with int
Ramkumar Ramachandra [Tue, 15 Nov 2011 16:59:39 +0000 (22:29 +0530)]
sha1_file: don't mix enum with int

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoconvert: don't mix enum with int
Ramkumar Ramachandra [Tue, 15 Nov 2011 16:59:37 +0000 (22:29 +0530)]
convert: don't mix enum with int

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: remove unused function hex()
Ramkumar Ramachandra [Tue, 15 Nov 2011 16:59:36 +0000 (22:29 +0530)]
http: remove unused function hex()

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoname-rev --all: do not even attempt to describe non-commit object
Junio C Hamano [Tue, 15 Nov 2011 23:51:05 +0000 (15:51 -0800)]
name-rev --all: do not even attempt to describe non-commit object

This even dates back to the very beginning of "git name-rev";
it does not make much sense to dump all objects in the repository
and label non-commits as "undefined".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoRevert "upload-archive: use start_command instead of fork"
Junio C Hamano [Tue, 15 Nov 2011 23:39:33 +0000 (15:39 -0800)]
Revert "upload-archive: use start_command instead of fork"

This reverts commit c09cd77ea2fe3580b33918a99fe138d239ac2aaf, expecting a
better version to be rerolled soon.

12 years agoGit 1.7.8-rc2 v1.7.8-rc2
Junio C Hamano [Sun, 13 Nov 2011 06:14:53 +0000 (22:14 -0800)]
Git 1.7.8-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'ly/mktree-using-strbuf'
Junio C Hamano [Sat, 12 Nov 2011 05:34:06 +0000 (21:34 -0800)]
Merge branch 'ly/mktree-using-strbuf'

* ly/mktree-using-strbuf:
  mktree: fix a memory leak in write_tree()

12 years agoMerge "Move 'builtin-*' into a 'builtin/' subdirectory"
Junio C Hamano [Thu, 10 Nov 2011 17:10:51 +0000 (09:10 -0800)]
Merge "Move 'builtin-*' into a 'builtin/' subdirectory"

12 years agoMerge 'build-in git-mktree'
Junio C Hamano [Thu, 10 Nov 2011 17:05:31 +0000 (09:05 -0800)]
Merge 'build-in git-mktree'

* commit '633e3556ccbc': (5835 commits)
  build-in git-mktree
  allow -t abbreviation for --track in git branch
  gitweb: Remove function prototypes (cleanup)
  Documentation: cloning to empty directory is allowed
  Clarify kind of conflict in merge-one-file helper
  git config: clarify --add and --get-color
  archive-tar.c: squelch a type mismatch warning
  Start 1.6.4 development
  Start 1.6.3.1 maintenance series.
  GIT 1.6.3
  t4029: use sh instead of bash
  t4200: convert sed expression which operates on non-text file to perl
  t4200: remove two unnecessary lines
  t/annotate-tests.sh: avoid passing a non-newline terminated file to sed
  t4118: avoid sed invocation on file without terminating newline
  t4118: add missing '&&'
  t8005: use egrep when extended regular expressions are required
  git-clean doc: the command only affects paths under $(cwd)
  improve error message in config.c
  t4018-diff-funcname: add cpp xfuncname pattern to syntax test
  ...

12 years agomktree: fix a memory leak in write_tree()
Liu Yuan [Thu, 10 Nov 2011 08:39:22 +0000 (16:39 +0800)]
mktree: fix a memory leak in write_tree()

We forget to call strbuf_release to release the buf memory.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'sn/complete-bash-wo-process-subst'
Junio C Hamano [Wed, 9 Nov 2011 13:46:39 +0000 (05:46 -0800)]
Merge branch 'sn/complete-bash-wo-process-subst'

* sn/complete-bash-wo-process-subst:
  completion: don't leak variable from the prompt into environment

12 years agocompletion: don't leak variable from the prompt into environment
SZEDER Gábor [Wed, 9 Nov 2011 10:02:50 +0000 (11:02 +0100)]
completion: don't leak variable from the prompt into environment

Commit e5b8eebc (completion: fix issue with process substitution not
working on Git for Windows, 2011-10-26) introduced a new variable in
__git_ps1_show_upstream(), but didn't declare it as local to prevent it
from leaking into the environment.

We may want to rewrite it like the following, but that can wait until the
next cycle.

while read key value
do
...
done <<-EOF
$(git config -z --get-regexp ...)
EOF

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.8
Junio C Hamano [Wed, 9 Nov 2011 00:42:33 +0000 (16:42 -0800)]
Update draft release notes to 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/remote-setbranches-usage-fix'
Junio C Hamano [Wed, 9 Nov 2011 00:40:31 +0000 (16:40 -0800)]
Merge branch 'jc/remote-setbranches-usage-fix'

* jc/remote-setbranches-usage-fix:
  remote: fix set-branches usage

12 years agoMerge branch 'fc/remote-seturl-usage-fix'
Junio C Hamano [Wed, 9 Nov 2011 00:40:27 +0000 (16:40 -0800)]
Merge branch 'fc/remote-seturl-usage-fix'

* fc/remote-seturl-usage-fix:
  remote: fix remote set-url usage

12 years agoSync with 1.7.7.3
Junio C Hamano [Wed, 9 Nov 2011 00:38:14 +0000 (16:38 -0800)]
Sync with 1.7.7.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.7.3 v1.7.7.3
Junio C Hamano [Wed, 9 Nov 2011 00:37:00 +0000 (16:37 -0800)]
Git 1.7.7.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/maint-remove-renamed-ref' into maint
Junio C Hamano [Wed, 9 Nov 2011 00:35:53 +0000 (16:35 -0800)]
Merge branch 'jc/maint-remove-renamed-ref' into maint

* jc/maint-remove-renamed-ref:
  branch -m/-M: remove undocumented RENAMED-REF

Conflicts:
refs.c

12 years agoMerge branch 'jm/maint-gitweb-filter-forks-fix' into maint
Junio C Hamano [Wed, 9 Nov 2011 00:26:50 +0000 (16:26 -0800)]
Merge branch 'jm/maint-gitweb-filter-forks-fix' into maint

* jm/maint-gitweb-filter-forks-fix:
  gitweb: fix regression when filtering out forks

12 years agoMerge branch 'dm/pack-objects-update' into maint
Junio C Hamano [Wed, 9 Nov 2011 00:26:45 +0000 (16:26 -0800)]
Merge branch 'dm/pack-objects-update' into maint

* dm/pack-objects-update:
  pack-objects: don't traverse objects unnecessarily
  pack-objects: rewrite add_descendants_to_write_order() iteratively
  pack-objects: use unsigned int for counter and offset values
  pack-objects: mark add_to_write_order() as inline

12 years agodocs: Update install-doc-quick
Junio C Hamano [Tue, 8 Nov 2011 18:17:40 +0000 (10:17 -0800)]
docs: Update install-doc-quick

The preformatted documentation pages live in their own repositories
these days. Adjust the installation procedure to the updated layout.

Tested-by: Stefan Naewe <stefan.naewe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodocs: don't mention --quiet or --exit-code in git-log(1)
Jeff King [Tue, 8 Nov 2011 21:29:30 +0000 (16:29 -0500)]
docs: don't mention --quiet or --exit-code in git-log(1)

These are diff-options, but they don't actually make sense
in the context of log.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.8-rc1 v1.7.8-rc1
Junio C Hamano [Tue, 8 Nov 2011 00:48:34 +0000 (16:48 -0800)]
Git 1.7.8-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'ss/blame-textconv-fake-working-tree'
Junio C Hamano [Tue, 8 Nov 2011 00:43:19 +0000 (16:43 -0800)]
Merge branch 'ss/blame-textconv-fake-working-tree'

* ss/blame-textconv-fake-working-tree:
  blame.c: Properly initialize strbuf after calling textconv_object(), again

12 years agoblame.c: Properly initialize strbuf after calling textconv_object(), again
Sebastian Schuberth [Mon, 7 Nov 2011 17:33:34 +0000 (18:33 +0100)]
blame.c: Properly initialize strbuf after calling textconv_object(), again

2564aa4 started to initialize buf.alloc, but that should actually be one
more byte than the string length due to the trailing \0. Also, do not
modify buf.alloc out of the strbuf code. Use the existing strbuf_attach
instead.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'ab/i18n-test-fix'
Junio C Hamano [Mon, 7 Nov 2011 05:22:22 +0000 (21:22 -0800)]
Merge branch 'ab/i18n-test-fix'

* ab/i18n-test-fix:
  t/t7508-status.sh: use test_i18ncmp
  t/t6030-bisect-porcelain.sh: use test_i18ngrep

12 years agoMerge branch 'sn/http-auth-with-netrc-fix'
Junio C Hamano [Mon, 7 Nov 2011 05:22:19 +0000 (21:22 -0800)]
Merge branch 'sn/http-auth-with-netrc-fix'

* sn/http-auth-with-netrc-fix:
  http: don't always prompt for password

12 years agoMerge branch 'pw/p4-appledouble-fix'
Junio C Hamano [Mon, 7 Nov 2011 05:21:57 +0000 (21:21 -0800)]
Merge branch 'pw/p4-appledouble-fix'

* pw/p4-appledouble-fix:
  git-p4: ignore apple filetype

12 years agoremote: fix remote set-url usage
Felipe Contreras [Mon, 7 Nov 2011 03:36:57 +0000 (05:36 +0200)]
remote: fix remote set-url usage

Bad copy-paste.

Otherwise the help text for "git remote set-url --help" would show help
for "git remote update" subcommand.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoremote: fix set-branches usage
Junio C Hamano [Mon, 7 Nov 2011 05:12:59 +0000 (21:12 -0800)]
remote: fix set-branches usage

Bad copy-paste.

Otherwise "git remote set-branches" without necessary argument
will result in an error message and help for set-url subcommand.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocast variable in call to free() in builtin/diff.c and submodule.c
Ævar Arnfjörð Bjarmason [Sun, 6 Nov 2011 12:06:23 +0000 (13:06 +0100)]
cast variable in call to free() in builtin/diff.c and submodule.c

Both of these free() calls are freeing a "const unsigned char (*)[20]"
type while free() expects a "void *". This results in the following
warning under clang 2.9:

    builtin/diff.c:185:7: warning: passing 'const unsigned char (*)[20]' to parameter of type 'void *' discards qualifiers
            free(parent);
                 ^~~~~~

    submodule.c:394:7: warning: passing 'const unsigned char (*)[20]' to parameter of type 'void *' discards qualifiers
            free(parents);
                 ^~~~~~~

This free()-ing without a cast was added by Jim Meyering to
builtin/diff.c in v1.7.6-rc3~4 and later by Fredrik Gustafsson in
submodule.c in v1.7.7-rc1~25^2.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoapply: get rid of useless x < 0 comparison on a size_t type
Ævar Arnfjörð Bjarmason [Sun, 6 Nov 2011 12:06:22 +0000 (13:06 +0100)]
apply: get rid of useless x < 0 comparison on a size_t type

According to the C standard size_t is always unsigned, therefore the
comparison "n1 < 0 || n2 < 0" when n1 and n2 are size_t will always be
false.

This was raised by clang 2.9 which throws this warning when compiling
apply.c:

    builtin/apply.c:253:9: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
            if (n1 < 0 || n2 < 0)
                ~~ ^ ~
    builtin/apply.c:253:19: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
            if (n1 < 0 || n2 < 0)
                          ~~ ^ ~

This check was originally added in v1.6.5-rc0~53^2 by Giuseppe Bilotta
while adding an option to git-apply to ignore whitespace differences.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: ignore apple filetype
Pete Wyckoff [Sat, 5 Nov 2011 17:36:07 +0000 (13:36 -0400)]
git-p4: ignore apple filetype

Revert 97a21ca (git-p4: stop ignoring apple filetype, 2011-10-16)
and add a test case.

Reported-by: Michael Wookey <michaelwookey@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/t7508-status.sh: use test_i18ncmp
Ævar Arnfjörð Bjarmason [Sat, 5 Nov 2011 17:28:43 +0000 (17:28 +0000)]
t/t7508-status.sh: use test_i18ncmp

Change a i18n-specific comparison in t/t7508-status.sh to use
test_i18ncmp instead. This was introduced in v1.7.6.3~11^2 and has
been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/t6030-bisect-porcelain.sh: use test_i18ngrep
Ævar Arnfjörð Bjarmason [Sat, 5 Nov 2011 17:28:42 +0000 (17:28 +0000)]
t/t6030-bisect-porcelain.sh: use test_i18ngrep

Change a i18n-specific grep in t/t6030-bisect-porcelain.sh to use
test_i18ngrep instead. This was introduced in v1.7.7.2~5^2~11 and has
been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSupport sizes >=2G in various config options accepting 'g' sizes.
Nick Alcock [Wed, 2 Nov 2011 15:46:23 +0000 (15:46 +0000)]
Support sizes >=2G in various config options accepting 'g' sizes.

The config options core.packedGitWindowSize, core.packedGitLimit,
core.deltaBaseCacheLimit, core.bigFileThreshold, pack.windowMemory and
pack.packSizeLimit all claim to support suffixes up to and including
'g'.  This implies that they should accept sizes >=2G on 64-bit
systems: certainly, specifying a size of 3g should not silently be
translated to zero or transformed into a large negative value due to
integer overflow.  However, due to use of git_config_int() rather than
git_config_ulong(), that is exactly what happens:

% git config core.bigFileThreshold 2g
% git gc --aggressive # with extra debugging code to print out
                      # core.bigfilethreshold after parsing
bigfilethreshold: -2147483648
[...]

This is probably irrelevant for core.deltaBaseCacheLimit, but is
problematic for the other values.  (It is particularly problematic for
core.packedGitLimit, which can't even be set to its default value in
the config file due to this bug.)

This fixes things for 32-bit platforms as well.  They get the usual bad
config error if an overlarge value is specified, e.g.:

fatal: bad config value for 'core.bigfilethreshold' in /home/nix/.gitconfig

This is detected in all cases, even if the 32-bit platform has no size
larger than 'long'.  For signed integral configuration values, we also
detect the case where the value is too large for the signed type but
not the unsigned type.

Signed-off-by: Nick Alcock <nix@esperi.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoCompatibility: declare strtoimax() under NO_STRTOUMAX
Johannes Sixt [Sat, 5 Nov 2011 15:37:34 +0000 (16:37 +0100)]
Compatibility: declare strtoimax() under NO_STRTOUMAX

The previous one introduced an implementation of the function, but forgot
to add a declaration.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: drop "local" member from request struct
Jeff King [Fri, 4 Nov 2011 17:53:33 +0000 (13:53 -0400)]
http: drop "local" member from request struct

This is a FILE pointer in the case that we are sending our
output to a file. We originally used it to run ftell() to
determine whether data had been written to our file during
our last call to curl. However, as of the last patch, we no
longer care about that flag anymore. All uses of this struct
member are now just book-keeping that can go away.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp.c: Rely on select instead of tracking whether data was received
Mika Fischer [Fri, 4 Nov 2011 14:19:27 +0000 (15:19 +0100)]
http.c: Rely on select instead of tracking whether data was received

Since now select is used with the file descriptors of the http connections,
tracking whether data was received recently (and trying to read more in
that case) is no longer necessary. Instead, always call select and rely on
it to return as soon as new data can be read.

Signed-off-by: Mika Fischer <mika.fischer@zoopnet.de>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp.c: Use timeout suggested by curl instead of fixed 50ms timeout
Mika Fischer [Fri, 4 Nov 2011 14:19:26 +0000 (15:19 +0100)]
http.c: Use timeout suggested by curl instead of fixed 50ms timeout

Recent versions of curl can suggest a period of time the library user
should sleep and try again, when curl is blocked on reading or writing
(or connecting). Use this timeout instead of always sleeping for 50ms.

Signed-off-by: Mika Fischer <mika.fischer@zoopnet.de>
Helped-by: Daniel Stenberg <daniel@haxx.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp.c: Use curl_multi_fdset to select on curl fds instead of just sleeping
Mika Fischer [Fri, 4 Nov 2011 14:19:25 +0000 (15:19 +0100)]
http.c: Use curl_multi_fdset to select on curl fds instead of just sleeping

Instead of sleeping unconditionally for a 50ms, when no data can be read
from the http connection(s), use curl_multi_fdset() to obtain the actual
file descriptors of the open connections and use them in the select call.
This way, the 50ms sleep is interrupted when new data arrives.

Signed-off-by: Mika Fischer <mika.fischer@zoopnet.de>
Helped-by: Daniel Stenberg <daniel@haxx.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: don't always prompt for password
Stefan Naewe [Fri, 4 Nov 2011 07:03:08 +0000 (08:03 +0100)]
http: don't always prompt for password

When a username is already specified at the beginning of any HTTP
transaction (e.g. "git push https://user@hosting.example.com/project.git"
or "git ls-remote https://user@hosting.example.com/project.git"), the code
interactively asks for a password before calling into the libcurl library.
It is very likely that the reason why user included the username in the
URL is because the user knows that it would require authentication to
access the resource. Asking for the password upfront would save one
roundtrip to get a 401 response, getting the password and then retrying
the request. This is a reasonable optimization.

HOWEVER.

This is done even when $HOME/.netrc might have a corresponding entry to
access the site, or the site does not require authentication to access the
resource after all. But neither condition can be determined until we call
into libcurl library (we do not read and parse $HOME/.netrc ourselves). In
these cases, the user is forced to respond to the password prompt, only to
give a password that is not used in the HTTP transaction. If the password
is in $HOME/.netrc, an empty input would later let the libcurl layer to
pick up the password from there, and if the resource does not require
authentication, any input would be taken and then discarded without
getting used. It is wasteful to ask this unused information to the end
user.

Reduce the confusion by not trying to optimize for this case and always
incur roundtrip penalty. An alternative might be to document this and keep
this round-trip optimization as-is.

Signed-off-by: Stefan Naewe <stefan.naewe@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoreceive-pack: do not expect object 0{40} to exist
Junio C Hamano [Thu, 3 Nov 2011 19:15:08 +0000 (12:15 -0700)]
receive-pack: do not expect object 0{40} to exist

When pushing to delete a ref, it uses 0{40} as an object name to signal
that the request is a deletion. We shouldn't trigger "deletion of a
corrupt ref" warning in such a case, which was designed to notice that a
ref points at an object that is truly missing from the repository.

Reported-by: Stefan Näwe
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoAdd strtoimax() compatibility function.
Nick Alcock [Wed, 2 Nov 2011 15:46:22 +0000 (15:46 +0000)]
Add strtoimax() compatibility function.

Since systems that omit strtoumax() will likely omit strtomax() too, and
likewise for strtoull() and strtoll(), we arrange for the make variables
NO_STRTOUMAX and NO_STRTOULL to cover both the signed and unsigned
functions, and define compatibility implementations for them.

Signed-off-by: Nick Alcock <nix@esperi.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot3200: add test case for 'branch -m'
Stefan Naewe [Wed, 2 Nov 2011 15:07:05 +0000 (16:07 +0100)]
t3200: add test case for 'branch -m'

Signed-off-by: Stefan Naewe <stefan.naewe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agobranch -m: handle no arg properly
Tay Ray Chuan [Wed, 2 Nov 2011 16:17:12 +0000 (00:17 +0800)]
branch -m: handle no arg properly

Modify the option parsing heuristic to handle all -m (rename) cases,
including the no-arg case.

Previously, this "fell through" to the (argc <= 2) case and caused
segfault.

Reported-by: Stefan Näwe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.8
Junio C Hamano [Tue, 1 Nov 2011 23:37:33 +0000 (16:37 -0700)]
Update draft release notes to 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSync with 1.7.7.2
Junio C Hamano [Tue, 1 Nov 2011 23:20:42 +0000 (16:20 -0700)]
Sync with 1.7.7.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.7.2 v1.7.7.2
Junio C Hamano [Tue, 1 Nov 2011 23:16:36 +0000 (16:16 -0700)]
Git 1.7.7.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'rs/maint-estimate-cache-size' into maint
Junio C Hamano [Tue, 1 Nov 2011 23:41:41 +0000 (16:41 -0700)]
Merge branch 'rs/maint-estimate-cache-size' into maint

* rs/maint-estimate-cache-size:
  t7511: avoid use of reserved filename on Windows.

12 years agoMerge branch 'md/smtp-tls-hello-again' into maint
Junio C Hamano [Tue, 1 Nov 2011 23:12:19 +0000 (16:12 -0700)]
Merge branch 'md/smtp-tls-hello-again' into maint

* md/smtp-tls-hello-again:
  send-email: Honour SMTP domain when using TLS

12 years agoMerge branch 'jk/pull-rebase-with-work-tree' into maint
Junio C Hamano [Tue, 1 Nov 2011 23:11:00 +0000 (16:11 -0700)]
Merge branch 'jk/pull-rebase-with-work-tree' into maint

* jk/pull-rebase-with-work-tree:
  pull,rebase: handle GIT_WORK_TREE better

Conflicts:
git-pull.sh

12 years agoMerge branch 'jc/maint-diffstat-numstat-context' into maint
Junio C Hamano [Tue, 1 Nov 2011 23:10:56 +0000 (16:10 -0700)]
Merge branch 'jc/maint-diffstat-numstat-context' into maint

* jc/maint-diffstat-numstat-context:
  diff: teach --stat/--numstat to honor -U$num

12 years agoMerge branch 'js/bisect-no-checkout' into maint
Junio C Hamano [Tue, 1 Nov 2011 23:03:35 +0000 (16:03 -0700)]
Merge branch 'js/bisect-no-checkout' into maint

* js/bisect-no-checkout:
  bisect: fix exiting when checkout failed in bisect_start()

12 years agoMerge branch 'bc/attr-ignore-case' into maint
Junio C Hamano [Tue, 1 Nov 2011 22:54:45 +0000 (15:54 -0700)]
Merge branch 'bc/attr-ignore-case' into maint

* bc/attr-ignore-case:
  attr.c: respect core.ignorecase when matching attribute patterns
  attr: read core.attributesfile from git_default_core_config
  builtin/mv.c: plug miniscule memory leak
  cleanup: use internal memory allocation wrapper functions everywhere
  attr.c: avoid inappropriate access to strbuf "buf" member

Conflicts:
remote.c

12 years agoMerge branch 'cn/fetch-prune' into maint
Junio C Hamano [Tue, 1 Nov 2011 22:51:01 +0000 (15:51 -0700)]
Merge branch 'cn/fetch-prune' into maint

* cn/fetch-prune:
  fetch: treat --tags like refs/tags/*:refs/tags/* when pruning
  fetch: honor the user-provided refspecs when pruning refs
  remote: separate out the remote_find_tracking logic into query_refspecs
  t5510: add tests for fetch --prune
  fetch: free all the additional refspecs

12 years agoMerge branch 'sp/smart-http-failure' into maint
Junio C Hamano [Tue, 1 Nov 2011 22:45:16 +0000 (15:45 -0700)]
Merge branch 'sp/smart-http-failure' into maint

* sp/smart-http-failure:
  remote-curl: Fix warning after HTTP failure

12 years agoMerge jn/maint-http-error-message
Junio C Hamano [Tue, 1 Nov 2011 22:42:25 +0000 (15:42 -0700)]
Merge jn/maint-http-error-message

* commit 'be22d92eac809ad2bfa2b7c83ad7cad5a15f1c43':
  http: avoid empty error messages for some curl errors
  http: remove extra newline in error message

12 years agoMerge branch 'jk/name-hash-dirent'
Junio C Hamano [Tue, 1 Nov 2011 22:31:12 +0000 (15:31 -0700)]
Merge branch 'jk/name-hash-dirent'

* jk/name-hash-dirent:
  name-hash.c: always initialize dir_next pointer

12 years agoname-hash.c: always initialize dir_next pointer
Johannes Sixt [Tue, 1 Nov 2011 22:21:06 +0000 (23:21 +0100)]
name-hash.c: always initialize dir_next pointer

Test t2021-checkout-overwrite.sh reveals a segfault in 'git add' on a
case-insensitive file system when git is compiled with XMALLOC_POISON
defined. The reason is that 2548183b (fix phantom untracked files when
core.ignorecase is set) added a new member dir_next to struct cache_entry,
but forgot to initialize it in all cases.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'ss/blame-textconv-fake-working-tree'
Junio C Hamano [Tue, 1 Nov 2011 22:20:28 +0000 (15:20 -0700)]
Merge branch 'ss/blame-textconv-fake-working-tree'

* ss/blame-textconv-fake-working-tree:
  (squash) test for previous
  blame.c: Properly initialize strbuf after calling, textconv_object()

Conflicts:
t/t8006-blame-textconv.sh

12 years agoMerge branch 'ef/mingw-upload-archive'
Junio C Hamano [Tue, 1 Nov 2011 22:20:22 +0000 (15:20 -0700)]
Merge branch 'ef/mingw-upload-archive'

* ef/mingw-upload-archive:
  mingw: poll.h is no longer in sys/
  upload-archive: use start_command instead of fork
  compat/win32/poll.c: upgrade from upstream
  mingw: move poll out of sys-folder

12 years agoMerge branch 'dm/pack-objects-update'
Junio C Hamano [Tue, 1 Nov 2011 22:20:07 +0000 (15:20 -0700)]
Merge branch 'dm/pack-objects-update'

* dm/pack-objects-update:
  pack-objects: don't traverse objects unnecessarily
  pack-objects: rewrite add_descendants_to_write_order() iteratively
  pack-objects: use unsigned int for counter and offset values
  pack-objects: mark add_to_write_order() as inline

12 years agoMerge branch 'nd/pretty-commit-log-message'
Junio C Hamano [Tue, 1 Nov 2011 22:20:03 +0000 (15:20 -0700)]
Merge branch 'nd/pretty-commit-log-message'

* nd/pretty-commit-log-message:
  pretty.c: use original commit message if reencoding fails
  pretty.c: free get_header() return value

12 years agosvn: Quote repository root in regex match
Ted Percival [Mon, 31 Oct 2011 22:37:12 +0000 (16:37 -0600)]
svn: Quote repository root in regex match

Fixes a problem matching repository URLs, especially those with a '+' in
the URL, such as svn+ssh:// URLs. Parts of the URL were interpreted as
special characters by the regex matching.

Signed-off-by: Ted Percival <ted.percival@quest.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
12 years agomingw: poll.h is no longer in sys/
Erik Faye-Lund [Tue, 1 Nov 2011 11:56:21 +0000 (12:56 +0100)]
mingw: poll.h is no longer in sys/

Earlier we moved this header file in the code but forgot to
update the Makefile that refers to it.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot7511: avoid use of reserved filename on Windows.
Pat Thoyts [Mon, 31 Oct 2011 14:07:27 +0000 (14:07 +0000)]
t7511: avoid use of reserved filename on Windows.

PRN is a special filename on Windows to send data to the printer. As
this is generated during test 3 substitute an alternate prefix to avoid this.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.8-rc0 v1.7.8-rc0
Junio C Hamano [Mon, 31 Oct 2011 02:14:24 +0000 (19:14 -0700)]
Git 1.7.8-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jk/git-tricks'
Junio C Hamano [Mon, 31 Oct 2011 02:13:13 +0000 (19:13 -0700)]
Merge branch 'jk/git-tricks'

* jk/git-tricks:
  completion: match ctags symbol names in grep patterns
  contrib: add git-jump script
  contrib: add diff highlight script

12 years agoupload-archive: use start_command instead of fork
Erik Faye-Lund [Mon, 24 Oct 2011 16:02:11 +0000 (18:02 +0200)]
upload-archive: use start_command instead of fork

The POSIX-function fork is not supported on Windows. Use our
start_command API instead.

As this is the last call-site that depends on the fork-stub in
compat/mingw.h, remove that as well.

Add an undocumented flag to git-archive that tells it that the
action originated from a remote, so features can be disabled.
Thanks to Jeff King for work on this part.

Remove the NOT_MINGW-prereq for t5000, as git-archive --remote
now works.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocompat/win32/poll.c: upgrade from upstream
Erik Faye-Lund [Mon, 24 Oct 2011 16:02:10 +0000 (18:02 +0200)]
compat/win32/poll.c: upgrade from upstream

poll.c is updated from revision adc3a5b in
git://git.savannah.gnu.org/gnulib.git

The changes are applied with --whitespace=fix to reduce noise.

poll.h is not upgraded, because the most recent version now
contains template-stuff that breaks compilation for us.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomingw: move poll out of sys-folder
Erik Faye-Lund [Mon, 24 Oct 2011 16:02:09 +0000 (18:02 +0200)]
mingw: move poll out of sys-folder

Both XSI and upstream Gnulib versions expects to find poll.h at
the root of some include path, not inside the sys-folder.

This helps us when upgrading Gnulib.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years ago(squash) test for previous
Junio C Hamano [Fri, 28 Oct 2011 16:36:55 +0000 (09:36 -0700)]
(squash) test for previous

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoblame.c: Properly initialize strbuf after calling, textconv_object()
Sebastian Schuberth [Fri, 28 Oct 2011 15:28:28 +0000 (17:28 +0200)]
blame.c: Properly initialize strbuf after calling, textconv_object()

For a plain string where only the length is known, strbuf.alloc needs to
be initialized to the length. Otherwise strbuf.alloc is 0 and a later
call to strbuf_setlen() will fail.

This bug surfaced when calling git blame under Windows on a *.doc file.
The *.doc file is converted to plain text by antiword via the textconv
mechanism. However, the plain text returned by antiword contains DOS line
endings instead of Unix line endings which triggered the strbuf_setlen()
which previous to this patch failed.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.8
Junio C Hamano [Thu, 27 Oct 2011 19:06:44 +0000 (12:06 -0700)]
Update draft release notes to 1.7.8

Getting very close to -rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'sn/complete-bash-wo-process-subst'
Junio C Hamano [Thu, 27 Oct 2011 19:04:28 +0000 (12:04 -0700)]
Merge branch 'sn/complete-bash-wo-process-subst'

* sn/complete-bash-wo-process-subst:
  completion: fix issue with process substitution not working on Git for Windows

12 years agoMerge branch 'rj/gitweb-clean-js'
Junio C Hamano [Thu, 27 Oct 2011 19:04:21 +0000 (12:04 -0700)]
Merge branch 'rj/gitweb-clean-js'

* rj/gitweb-clean-js:
  gitweb/Makefile: Remove static/gitweb.js in the clean target

12 years agoMerge branch 'js/grep-mutex'
Junio C Hamano [Thu, 27 Oct 2011 19:04:02 +0000 (12:04 -0700)]
Merge branch 'js/grep-mutex'

* js/grep-mutex:
  builtin/grep: simplify lock_and_read_sha1_file()
  builtin/grep: make lock/unlock into static inline functions
  git grep: be careful to use mutexes only when they are initialized

12 years agoMerge branch 'maint'
Junio C Hamano [Thu, 27 Oct 2011 19:03:37 +0000 (12:03 -0700)]
Merge branch 'maint'

* maint:
  clone: Quote user supplied path in a single quote pair
  read-cache.c: fix index memory allocation

12 years agoMerge branch 'rs/maint-estimate-cache-size' into maint
Junio C Hamano [Thu, 27 Oct 2011 19:03:16 +0000 (12:03 -0700)]
Merge branch 'rs/maint-estimate-cache-size' into maint

* rs/maint-estimate-cache-size:
  read-cache.c: fix index memory allocation

12 years agoclone: Quote user supplied path in a single quote pair
Richard Hartmann [Thu, 27 Oct 2011 16:46:53 +0000 (18:46 +0200)]
clone: Quote user supplied path in a single quote pair

Without this patch,

    $ git clone foo .

results in this:

    Cloning into ....
    done.

With it:

    Cloning into '.'...
    done.

Signed-off-by: Richard Hartmann <richih.mailinglist@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agounpack_object_header_buffer(): clear the size field upon error
Junio C Hamano [Thu, 27 Oct 2011 18:42:57 +0000 (11:42 -0700)]
unpack_object_header_buffer(): clear the size field upon error

The callers do not use the returned size when the function says
it did not use any bytes and sets the type to OBJ_BAD, so this
should not matter in practice, but it is a good code hygiene
anyway.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agotree_entry_interesting: make use of local pointer "item"
Nguyễn Thái Ngọc Duy [Mon, 24 Oct 2011 06:36:12 +0000 (17:36 +1100)]
tree_entry_interesting: make use of local pointer "item"

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agotree_entry_interesting(): give meaningful names to return values
Nguyễn Thái Ngọc Duy [Mon, 24 Oct 2011 06:36:10 +0000 (17:36 +1100)]
tree_entry_interesting(): give meaningful names to return values

It is a basic code hygiene to avoid magic constants that are unnamed.
Besides, this helps extending the value later on for "interesting, but
cannot decide if the entry truely matches yet" (ie. prefix matches)

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoread_directory_recursive: reduce one indentation level
Nguyễn Thái Ngọc Duy [Mon, 24 Oct 2011 06:36:11 +0000 (17:36 +1100)]
read_directory_recursive: reduce one indentation level

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoget_tree_entry(): do not call find_tree_entry() on an empty tree
Junio C Hamano [Thu, 27 Oct 2011 18:18:40 +0000 (11:18 -0700)]
get_tree_entry(): do not call find_tree_entry() on an empty tree

We know we will find nothing.

This incidentally squelches false warning from gcc about potentially
uninitialized usage of t.entry fields. For an empty tree, it is true that
init_tree_desc() does not call decode_tree_entry() and the tree_desc is
left uninitialized, but find_tree_entry() only calls tree_entry_extract()
that uses the tree_desc while it has more things to read from the tree, so
the uninitialized t.entry fields are never used in such a case anyway.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agotree-walk.c: do not leak internal structure in tree_entry_len()
Nguyễn Thái Ngọc Duy [Mon, 24 Oct 2011 06:36:09 +0000 (17:36 +1100)]
tree-walk.c: do not leak internal structure in tree_entry_len()

tree_entry_len() does not simply take two random arguments and return
a tree length. The two pointers must point to a tree item structure,
or struct name_entry. Passing random pointers will return incorrect
value.

Force callers to pass struct name_entry instead of two pointers (with
hope that they don't manually construct struct name_entry themselves)

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Wed, 26 Oct 2011 23:24:55 +0000 (16:24 -0700)]
Merge branch 'maint'

* maint:
  make the sample pre-commit hook script reject names with newlines, too

12 years agoUpdate draft release notes to 1.7.8
Junio C Hamano [Wed, 26 Oct 2011 23:23:26 +0000 (16:23 -0700)]
Update draft release notes to 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'tc/submodule-clone-name-detection'
Junio C Hamano [Wed, 26 Oct 2011 23:16:32 +0000 (16:16 -0700)]
Merge branch 'tc/submodule-clone-name-detection'

* tc/submodule-clone-name-detection:
  submodule::module_clone(): silence die() message from module_name()
  submodule: whitespace fix