Code

git.git
12 years agoMerge branch 'ab/clang-lints'
Junio C Hamano [Mon, 5 Dec 2011 23:12:34 +0000 (15:12 -0800)]
Merge branch 'ab/clang-lints'

* ab/clang-lints:
  cast variable in call to free() in builtin/diff.c and submodule.c
  apply: get rid of useless x < 0 comparison on a size_t type

12 years agoMerge branch 'nd/prune-progress'
Junio C Hamano [Mon, 5 Dec 2011 23:11:11 +0000 (15:11 -0800)]
Merge branch 'nd/prune-progress'

* nd/prune-progress:
  reachable: per-object progress
  prune: handle --progress/no-progress
  prune: show progress while marking reachable objects

12 years agoMerge branch 'nd/fsck-progress'
Junio C Hamano [Mon, 5 Dec 2011 23:11:07 +0000 (15:11 -0800)]
Merge branch 'nd/fsck-progress'

* nd/fsck-progress:
  fsck: print progress
  fsck: avoid reading every object twice
  verify_packfile(): check as many object as possible in a pack
  fsck: return error code when verify_pack() goes wrong

12 years agoMerge branch 'mf/curl-select-fdset'
Junio C Hamano [Mon, 5 Dec 2011 23:10:28 +0000 (15:10 -0800)]
Merge branch 'mf/curl-select-fdset'

* mf/curl-select-fdset:
  http: drop "local" member from request struct
  http.c: Rely on select instead of tracking whether data was received
  http.c: Use timeout suggested by curl instead of fixed 50ms timeout
  http.c: Use curl_multi_fdset to select on curl fds instead of just sleeping

12 years agoMerge branch 'nd/misc-cleanups'
Junio C Hamano [Mon, 5 Dec 2011 23:10:20 +0000 (15:10 -0800)]
Merge branch 'nd/misc-cleanups'

* nd/misc-cleanups:
  unpack_object_header_buffer(): clear the size field upon error
  tree_entry_interesting: make use of local pointer "item"
  tree_entry_interesting(): give meaningful names to return values
  read_directory_recursive: reduce one indentation level
  get_tree_entry(): do not call find_tree_entry() on an empty tree
  tree-walk.c: do not leak internal structure in tree_entry_len()

12 years agoMerge branch 'maint'
Junio C Hamano [Mon, 5 Dec 2011 23:08:20 +0000 (15:08 -0800)]
Merge branch 'maint'

* maint:
  stripspace: fix outdated comment
  Add MYMETA.yml to perl/.gitignore

12 years agoMerge branch 'maint-1.7.7' into maint
Junio C Hamano [Mon, 5 Dec 2011 23:07:54 +0000 (15:07 -0800)]
Merge branch 'maint-1.7.7' into maint

* maint-1.7.7:
  stripspace: fix outdated comment
  Add MYMETA.yml to perl/.gitignore

12 years agoMerge branch 'maint-1.7.6' into maint-1.7.7
Junio C Hamano [Mon, 5 Dec 2011 23:07:49 +0000 (15:07 -0800)]
Merge branch 'maint-1.7.6' into maint-1.7.7

* maint-1.7.6:
  stripspace: fix outdated comment
  Add MYMETA.yml to perl/.gitignore

12 years agostripspace: fix outdated comment
Jeff King [Mon, 5 Dec 2011 22:29:15 +0000 (17:29 -0500)]
stripspace: fix outdated comment

The comment on top of stripspace() claims that the buffer
will no longer be NUL-terminated. However, this has not been
the case at least since the move to using strbuf in 2007.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: introduce skipSubmitEdit
Pete Wyckoff [Mon, 5 Dec 2011 00:22:45 +0000 (19:22 -0500)]
git-p4: introduce skipSubmitEdit

Add a configuration variable to skip invoking the editor in the
submit path.

The existing variable skipSubmitEditCheck continues to make sure
that the submit template was indeed modified by the editor; but,
it is not considered if skipSubmitEdit is true.

Reported-by: Loren A. Linden Levy <lindenle@gmail.com>
Acked-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoAdd MYMETA.yml to perl/.gitignore
Sebastian Morr [Fri, 2 Dec 2011 22:55:28 +0000 (23:55 +0100)]
Add MYMETA.yml to perl/.gitignore

This file is auto-generated by newer versions of ExtUtils::MakeMaker
(presumably starting with the version shipping with Perl 5.14). It just
contains extra information about the environment and arguments to the
Makefile-building process, and should be ignored.

Signed-off-by: Sebastian Morr <sebastian@morr.cc>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'js/merge-edit-option'
Junio C Hamano [Mon, 5 Dec 2011 19:15:52 +0000 (11:15 -0800)]
Merge branch 'js/merge-edit-option'

* js/merge-edit-option:
  Documentation: fix formatting error in merge-options.txt

12 years agoDocumentation: fix formatting error in merge-options.txt
Jack Nagel [Mon, 5 Dec 2011 07:53:27 +0000 (01:53 -0600)]
Documentation: fix formatting error in merge-options.txt

The first paragraph inside of a list item does not need a preceding line
consisting of a single '+', and in fact this causes the text to be
misrendered. Fix it.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.8 v1.7.8
Junio C Hamano [Fri, 2 Dec 2011 17:31:32 +0000 (09:31 -0800)]
Git 1.7.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.8-rc4 v1.7.8-rc4
Junio C Hamano [Mon, 28 Nov 2011 22:07:13 +0000 (14:07 -0800)]
Git 1.7.8-rc4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agobuiltin-reset: Documentation update
Vincent van Ravesteijn [Wed, 23 Nov 2011 06:44:16 +0000 (07:44 +0100)]
builtin-reset: Documentation update

The second mode of 'git reset' is defined by the --patch
option, while the third mode is defined by the <mode> option.
Hence, these options are mandatory in the description of the
individual modes.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agobuiltin-branch: Fix crash on invalid use of --force
Vincent van Ravesteijn [Wed, 23 Nov 2011 06:31:55 +0000 (07:31 +0100)]
builtin-branch: Fix crash on invalid use of --force

The option --force should not put us in 'create branch' mode. The
fact that this option is only valid in 'create branch' mode is
already caught by the the next 'if' in which we assure that we
are in the correct mode.

Without this patch, "git branch -f" without any other argument ends
up calling create_branch without any branch name.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert --abort: do not leave behind useless sequencer-old directory
Jonathan Nieder [Wed, 23 Nov 2011 10:04:52 +0000 (04:04 -0600)]
revert --abort: do not leave behind useless sequencer-old directory

The "git cherry-pick --abort" command currently renames the
.git/sequencer directory to .git/sequencer-old instead of removing it
on success due to an accident.  cherry-pick --abort is designed to
work in three steps:

 1) find which commit to roll back to
 2) call "git reset --merge <commit>" to move to that commit
 3) remove the .git/sequencer directory

But the careless author forgot step 3 entirely.  The only reason the
command worked anyway is that "git reset --merge <commit>" renames the
.git/sequencer directory as a secondary effect --- after moving to
<commit>, or so the logic goes, it is unlikely but possible that the
caller of git reset wants to continue the series of cherry-picks that
was in progress, so git renames the sequencer state to
.git/sequencer-old to be helpful while allowing the cherry-pick to be
resumed if the caller did not want to end the sequence after all.

By running "git cherry-pick --abort", the operator has clearly
indicated that she is not planning to continue cherry-picking.  Remove
the (renamed) .git/sequencer directory as intended all along.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoFix revert --abort on Windows
Johannes Sixt [Wed, 23 Nov 2011 08:49:38 +0000 (09:49 +0100)]
Fix revert --abort on Windows

On Windows, it is not possible to rename or remove a directory that has
open files. 'revert --abort' renamed .git/sequencer when it still had
.git/sequencer/head open. Close the file as early as possible to allow
the rename operation on Windows.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert: do not pass non-literal string as format to git_path()
Nguyễn Thái Ngọc Duy [Wed, 23 Nov 2011 12:45:36 +0000 (19:45 +0700)]
revert: do not pass non-literal string as format to git_path()

This fixes the following warning.

    CC builtin/revert.o
builtin/revert.c: In function ‘write_cherry_pick_head’:
builtin/revert.c:311: warning: format not a string literal and no format arguments

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUpdate 1.7.8 draft release notes in preparation for rc4
Junio C Hamano [Wed, 23 Nov 2011 02:23:36 +0000 (18:23 -0800)]
Update 1.7.8 draft release notes in preparation for rc4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/revert-quit'
Junio C Hamano [Wed, 23 Nov 2011 02:22:08 +0000 (18:22 -0800)]
Merge branch 'jn/revert-quit'

* jn/revert-quit:
  revert: remove --reset compatibility option
  revert: introduce --abort to cancel a failed cherry-pick
  revert: write REVERT_HEAD pseudoref during conflicted revert
  revert: improve error message for cherry-pick during cherry-pick
  revert: rearrange pick_revisions() for clarity
  revert: rename --reset option to --quit

13 years agorevert: remove --reset compatibility option
Jonathan Nieder [Tue, 22 Nov 2011 11:20:46 +0000 (05:20 -0600)]
revert: remove --reset compatibility option

Remove the "git cherry-pick --reset" option, which has a different
preferred spelling nowadays ("--quit").  Luckily the old --reset name
was not around long enough for anyone to get used to it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert: introduce --abort to cancel a failed cherry-pick
Jonathan Nieder [Wed, 23 Nov 2011 01:27:21 +0000 (19:27 -0600)]
revert: introduce --abort to cancel a failed cherry-pick

After running some ill-advised command like "git cherry-pick
HEAD..linux-next", the bewildered novice may want to return to more
familiar territory.  Introduce a "git cherry-pick --abort" command
that rolls back the entire cherry-pick sequence and places the
repository back on solid ground.

Just like "git merge --abort", this internally uses "git reset
--merge", so local changes not involved in the conflict resolution are
preserved.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert: write REVERT_HEAD pseudoref during conflicted revert
Jonathan Nieder [Tue, 22 Nov 2011 11:17:36 +0000 (05:17 -0600)]
revert: write REVERT_HEAD pseudoref during conflicted revert

When conflicts are encountered while reverting a commit, it can be
handy to have the name of that commit easily available.  For example,
to produce a copy of the patch to refer to while resolving conflicts:

$ git revert 2eceb2a8
error: could not revert 2eceb2a8... awesome, buggy feature
$ git show -R REVERT_HEAD >the-patch
$ edit $(git diff --name-only)

Set a REVERT_HEAD pseudoref when "git revert" does not make a commit,
for cases like this.  This also makes it possible for scripts to
distinguish between a revert that encountered conflicts and other
sources of an unmerged index.

After successfully committing, resetting with "git reset", or moving
to another commit with "git checkout" or "git reset", the pseudoref is
no longer useful, so remove it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert: improve error message for cherry-pick during cherry-pick
Jonathan Nieder [Tue, 22 Nov 2011 11:15:47 +0000 (05:15 -0600)]
revert: improve error message for cherry-pick during cherry-pick

In the spirit of v1.6.3.3~3^2 (refuse to merge during a merge,
2009-07-01), "git cherry-pick" refuses to start a new cherry-pick when
in the middle of an existing conflicted cherry-pick in the following
sequence:

 1. git cherry-pick HEAD..origin
 2. resolve conflicts
 3. git cherry-pick HEAD..origin (instead of "git cherry-pick
    --continue", by mistake)

Good.  However, the error message on attempting step 3 is more
convoluted than necessary:

  $ git cherry-pick HEAD..origin
  error: .git/sequencer already exists.
  error: A cherry-pick or revert is in progress.
  hint: Use --continue to continue the operation
  hint: or --quit to forget about it
  fatal: cherry-pick failed

Clarify by removing the redundant first "error:" message, simplifying
the advice, and using lower-case and no full stops to be consistent
with other commands that prefix their messages with "error:", so it
becomes

  error: a cherry-pick or revert is already in progress
  hint: try "git cherry-pick (--continue | --quit)"
  fatal: cherry-pick failed

The "fatal: cherry-pick failed" line seems unnecessary, too, but
that can be fixed some other day.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert: rearrange pick_revisions() for clarity
Jonathan Nieder [Tue, 22 Nov 2011 11:15:10 +0000 (05:15 -0600)]
revert: rearrange pick_revisions() for clarity

Deal completely with "cherry-pick --quit" and --continue at the
beginning of pick_revisions(), leaving the rest of the function for
the more interesting "git cherry-pick <commits>" case.

No functional change intended.  The impact is just to unindent the
code a little.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorevert: rename --reset option to --quit
Jonathan Nieder [Tue, 22 Nov 2011 11:14:29 +0000 (05:14 -0600)]
revert: rename --reset option to --quit

The option to "git cherry-pick" and "git revert" to discard the
sequencer state introduced by v1.7.8-rc0~141^2~6 (revert: Introduce
--reset to remove sequencer state, 2011-08-04) has a confusing name.
Change it now, while we still have the time.

The new name for "cherry-pick, please get out of my way, since I've
long forgotten about the sequence of commits I was cherry-picking when
you wrote that old .git/sequencer directory" is --quit.  Mnemonic:
this is analagous to quiting a program the user is no longer using ---
we just want to get out of the multiple-command cherry-pick procedure
and not to reset HEAD or rewind any other old state.

The "--reset" option is kept as a synonym to minimize the impact.  We
might consider dropping it for simplicity in a separate patch, though.

Adjust documentation and tests to use the newly preferred name (--quit)
instead of --reset.  While at it, let's clarify the short descriptions
of these operations in "-h" output.

Before:

--reset forget the current operation
--continue continue the current operation

After:

--quit end revert or cherry-pick sequence
--continue resume revert or cherry-pick sequence

Noticed-by: Phil Hord <phil.hord@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Mon, 21 Nov 2011 22:30:45 +0000 (14:30 -0800)]
Merge branch 'maint'

* maint:
  documentation fix: git difftool uses diff tools, not merge tools.

13 years agoMerge branch 'rr/misc-fixes'
Junio C Hamano [Mon, 21 Nov 2011 19:03:20 +0000 (11:03 -0800)]
Merge branch 'rr/misc-fixes'

* rr/misc-fixes:
  convert.c: Fix return type of git_path_check_eol()

13 years agoconvert.c: Fix return type of git_path_check_eol()
Ramsay Jones [Mon, 21 Nov 2011 18:42:09 +0000 (18:42 +0000)]
convert.c: Fix return type of git_path_check_eol()

The git_path_check_eol() function converts a string value to the
corresponding 'enum eol' value. However, the function is currently
declared to return an 'enum crlf_action', which causes sparse to
complain thus:

        SP convert.c
    convert.c:736:50: warning: mixing different enum types
    convert.c:736:50:     int enum crlf_action  versus
    convert.c:736:50:     int enum eol

In order to suppress the warning, we simply correct the return type
in the function declaration.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodocumentation fix: git difftool uses diff tools, not merge tools.
Thomas Hochstein [Mon, 14 Nov 2011 22:55:52 +0000 (23:55 +0100)]
documentation fix: git difftool uses diff tools, not merge tools.

Let the documentation for -t list valid *diff* tools,
not valid *merge* tools.

Signed-off-by: Thomas Hochstein <thh@inter.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconfig.c: Fix a static buffer overwrite bug by avoiding mkpath()
Ramsay Jones [Sat, 19 Nov 2011 19:42:00 +0000 (19:42 +0000)]
config.c: Fix a static buffer overwrite bug by avoiding mkpath()

On cygwin, test number 21 of t3200-branch.sh (git branch -m q q2
without config should succeed) fails. The failure involves the
functions from path.c which parcel out internal static buffers
from the git_path() and mkpath() functions.

In particular, the rename_ref() function calls safe_create_leading\
_directories() with a filename returned by git_path("logs/%s", ref).
safe_create_leading_directories(), in turn, calls stat() on each
element of the path it is given. On cygwin, this leads to a call
to git_config() for each component of the path, since this test
explicitly removes the config file. git_config() calls mkpath(), so
on the fourth component of the path, the original buffer passed
into the function is overwritten with the config filename.

Note that this bug is specific to cygwin and it's schizophrenic
stat() functions (see commits adbc0b67faee6b and 7974843). The
lack of a config file and a path with at least four elements is
also important to trigger the bug.

In order to fix the problem, we replace the call to mkpath() with
a call to mksnpath() and provide our own buffer.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot5501-*.sh: Fix url passed to clone in setup test
Ramsay Jones [Sat, 19 Nov 2011 19:38:54 +0000 (19:38 +0000)]
t5501-*.sh: Fix url passed to clone in setup test

In particular, the url passed to git-clone has an extra '/' given
after the 'file://' schema prefix, thus:

    git clone --reference=original "file:///$(pwd)/original one

Once the prefix is removed, the remainder of the url looks something
like "//home/ramsay/git/t/...", which is then interpreted as an
network path. This then results in a "Permission denied" error, like
so:

    ramsay $ ls //home
    ls: cannot access //home: No such host or network path
    ramsay $ ls //home/ramsay
    ls: cannot access //home/ramsay: Permission denied
    ramsay $

In order to fix the problem, we simply remove the extraneous '/'
character from the url.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoHopefully final update of release notes before 1.7.8 final
Junio C Hamano [Fri, 18 Nov 2011 22:19:45 +0000 (14:19 -0800)]
Hopefully final update of release notes before 1.7.8 final

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'rr/misc-fixes'
Junio C Hamano [Fri, 18 Nov 2011 22:13:48 +0000 (14:13 -0800)]
Merge branch 'rr/misc-fixes'

* rr/misc-fixes:
  git-compat-util: don't assume value for undefined variable
  sha1_file: don't mix enum with int
  convert: don't mix enum with int
  http: remove unused function hex()

13 years agoMakefile: add option to disable automatic dependency generation
Jonathan Nieder [Fri, 18 Nov 2011 09:58:21 +0000 (03:58 -0600)]
Makefile: add option to disable automatic dependency generation

Now that the COMPUTE_HEADER_DEPENDENCIES feature is turned on
automatically for compilers that support it (see v1.7.8-rc0~142^2~1,
2011-08-18), there is no easy way to force it off.  For example,
setting COMPUTE_HEADER_DEPENDENCIES to the empty string in config.mak
just tells the makefile to treat it as undefined and run a test
command to see if the -MMD option is supported.

So allow setting COMPUTE_HEADER_DEPENDENCIES=no to explicitly force
the feature off.  The new semantics:

 - "yes" means to explicitly enable the feature
 - "no" means to disable it
 - "auto" means to autodetect

The default is still "auto".  Any value other than these three will
cause the build to error out with a descriptive message so typos and
stale settings in config.mak don't result in mysterious behavior.

Makefile:1278: *** please set COMPUTE_HEADER_DEPENDENCIES to
yes, no, or auto (not "1").  Stop.

So now when someone using a compiler without -MMD support reports
trouble building git, you can reproduce it by running "make
COMPUTE_HEADER_DEPENDENCIES=no".

Suggested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Improved-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Tested-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoSync with 1.7.7.4
Junio C Hamano [Fri, 18 Nov 2011 19:30:02 +0000 (11:30 -0800)]
Sync with 1.7.7.4

13 years agoGit 1.7.7.4 v1.7.7.4
Junio C Hamano [Fri, 18 Nov 2011 19:28:05 +0000 (11:28 -0800)]
Git 1.7.7.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jc/maint-name-rev-all' into maint
Junio C Hamano [Fri, 18 Nov 2011 19:14:16 +0000 (11:14 -0800)]
Merge branch 'jc/maint-name-rev-all' into maint

* jc/maint-name-rev-all:
  name-rev --all: do not even attempt to describe non-commit object

13 years agoMerge branch 'ml/mailmap' into maint
Junio C Hamano [Fri, 18 Nov 2011 19:14:00 +0000 (11:14 -0800)]
Merge branch 'ml/mailmap' into maint

* ml/mailmap:
  mailmap: xcalloc mailmap_info

Conflicts:
mailmap.c

13 years agoMerge branch 'jn/maint-notes-avoid-va-args' into maint
Junio C Hamano [Fri, 18 Nov 2011 19:11:50 +0000 (11:11 -0800)]
Merge branch 'jn/maint-notes-avoid-va-args' into maint

* jn/maint-notes-avoid-va-args:
  notes merge: eliminate OUTPUT macro

Conflicts:
notes-merge.c

13 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>
13 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>
13 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>
13 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>
13 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>
13 years agomailmap: xcalloc mailmap_info
Marc-André Lureau [Thu, 17 Nov 2011 01:25:06 +0000 (02:25 +0100)]
mailmap: xcalloc mailmap_info

This is to avoid reaching free of uninitialized members.

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

Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 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>
13 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>
13 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>
13 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>
13 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>
13 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>
13 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.

13 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>
13 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()

13 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"

13 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
  ...

13 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>
13 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

13 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>
13 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>
13 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

13 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

13 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>
13 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>
13 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

13 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

13 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

13 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>
13 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>
13 years agoreachable: per-object progress
Jeff King [Tue, 8 Nov 2011 05:37:00 +0000 (00:37 -0500)]
reachable: per-object progress

The current progress code really just counts commits.
This patch makes it count all objects, giving us a "total"
count close to what a repack would show. This is nice when
using "git gc", which will usually have just repacked the
whole repo.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoprune: handle --progress/no-progress
Jeff King [Tue, 8 Nov 2011 05:34:08 +0000 (00:34 -0500)]
prune: handle --progress/no-progress

And have "git gc" pass no-progress when quiet.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoprune: show progress while marking reachable objects
Nguyễn Thái Ngọc Duy [Sat, 5 Nov 2011 12:00:08 +0000 (19:00 +0700)]
prune: show progress while marking reachable objects

prune already shows progress meter while pruning. The marking part may
take a few seconds or more, depending on repository size. Show
progress meter during this time too.

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

13 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>
13 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

13 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

13 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

13 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>
13 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>
13 years agofsck: print progress
Nguyễn Thái Ngọc Duy [Mon, 7 Nov 2011 02:59:26 +0000 (09:59 +0700)]
fsck: print progress

fsck is usually a long process and it would be nice if it prints
progress from time to time.

Progress meter is not printed when --verbose is given because
--verbose prints a lot, there's no need for "alive" indicator.
Progress meter may provide "% complete" information but it would
be lost anyway in the flood of text.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agofsck: avoid reading every object twice
Nguyễn Thái Ngọc Duy [Mon, 7 Nov 2011 02:59:25 +0000 (09:59 +0700)]
fsck: avoid reading every object twice

During verify_pack() all objects are read for SHA-1 check. Then
fsck_sha1() is called on every object, which read the object again
(fsck_sha1 -> parse_object -> read_sha1_file).

Avoid reading an object twice, do fsck_sha1 while we have an object
uncompressed data in verify_pack.

On git.git, with this patch I got:

$ /usr/bin/time ./git fsck >/dev/null
98.97user 0.90system 1:40.01elapsed 99%CPU (0avgtext+0avgdata 616624maxresident)k
0inputs+0outputs (0major+194186minor)pagefaults 0swaps

Without it:

$ /usr/bin/time ./git fsck >/dev/null
231.23user 2.35system 3:53.82elapsed 99%CPU (0avgtext+0avgdata 636688maxresident)k
0inputs+0outputs (0major+461629minor)pagefaults 0swaps

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoverify_packfile(): check as many object as possible in a pack
Nguyễn Thái Ngọc Duy [Mon, 7 Nov 2011 02:59:24 +0000 (09:59 +0700)]
verify_packfile(): check as many object as possible in a pack

verify_packfile() checks for whole pack integerity first, then each
object individually. Once we get past whole pack check, we can
identify all objects in the pack. If there's an error with one object,
we should continue to check the next objects to salvage as many
objects as possible instead of stopping the process.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agofsck: return error code when verify_pack() goes wrong
Nguyễn Thái Ngọc Duy [Mon, 7 Nov 2011 02:59:23 +0000 (09:59 +0700)]
fsck: return error code when verify_pack() goes wrong

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