git.git
14 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()

14 years agorefresh_index: make porcelain output more specific
Jeff King [Fri, 18 Nov 2011 11:13:08 +0000 (06:13 -0500)]
refresh_index: make porcelain output more specific

If you have a deleted file and a porcelain refreshes the
cache, we print:

  Unstaged changes after reset:
  M file

This is technically correct, in that the file is modified,
but it's friendlier to the user if we further differentiate
the case of a deleted file (especially because this output
looks a lot like "diff --name-status", which would also make
the distinction).

Similarly, we can distinguish typechanges ("T") and
intent-to-add files ("A"), both of which appear as just "M"
in the current output.

The plumbing output for all cases remains "needs update" for
historical compatibility.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agorefresh_index: rename format variables
Jeff King [Fri, 18 Nov 2011 11:11:28 +0000 (06:11 -0500)]
refresh_index: rename format variables

When refreshing the index, for modified (or unmerged) files we will print
"needs update" (or "needs merge") for plumbing, or line similar to the
output from "diff --name-status" for porcelain.

The variables holding which type of message to show are named after the
plumbing messages. However, as we begin to differentiate more cases at the
porcelain level (with the plumbing message staying the same), that naming
scheme will become awkward.

Instead, name the variables after which case we found (modified or
unmerged), not what we will output.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agoread-cache: let refresh_cache_ent pass up changed flags
Jeff King [Fri, 18 Nov 2011 11:11:08 +0000 (06:11 -0500)]
read-cache: let refresh_cache_ent pass up changed flags

This will enable refresh_cache to differentiate more cases
of modification (such as typechange) when telling the user
what isn't fresh.

Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Improved-by: Junio C Hamano <redacted>
Signed-off-by: Jonathan Nieder <redacted>
Tested-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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

14 years agoGit 1.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 <redacted>
14 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

14 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

14 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

14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Jonathan Nieder <redacted>
Acked-by: Johan Herland <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agoGit 1.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 <redacted>
14 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 <redacted>
14 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 <redacted>
14 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 <redacted>
Acked-by: Michael Haggerty <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agoAdd built-in diff patterns for MATLAB code
Gustaf Hendeby [Tue, 15 Nov 2011 20:15:03 +0000 (21:15 +0100)]
Add built-in diff patterns for MATLAB code

MATLAB is often used in industry and academia for scientific
computations motivating it being included as a built-in pattern.

Signed-off-by: Gustaf Hendeby <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Ramkumar Ramachandra <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
14 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.

14 years agoConvert many resolve_ref() calls to read_ref*() and ref_exists()
Nguyễn Thái Ngọc Duy [Sun, 13 Nov 2011 10:22:14 +0000 (17:22 +0700)]
Convert many resolve_ref() calls to read_ref*() and ref_exists()

resolve_ref() may return a pointer to a static buffer, which is not
safe for long-term use because if another resolve_ref() call happens,
the buffer may be changed.  Many call sites though do not care about
this buffer. They simply check if the return value is NULL or not.

Convert all these call sites to new wrappers to reduce resolve_ref()
calls from 57 to 34. If we change resolve_ref() prototype later on
to avoid passing static buffer out, this helps reduce changes.

Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agopretty: %G[?GS] placeholders
Junio C Hamano [Sat, 22 Oct 2011 04:06:02 +0000 (21:06 -0700)]
pretty: %G[?GS] placeholders

Add new placeholders related to the GPG signature on signed commits.

 - %GG to show the raw verification message from GPG;
 - %G? to show either "G" for Good, "B" for Bad;
 - %GS to show the name of the signer.

Signed-off-by: Junio C Hamano <redacted>
14 years agotest "commit -S" and "log --show-signature"
Junio C Hamano [Thu, 20 Oct 2011 00:15:05 +0000 (17:15 -0700)]
test "commit -S" and "log --show-signature"

Signed-off-by: Junio C Hamano <redacted>
14 years agolog: --show-signature
Junio C Hamano [Tue, 18 Oct 2011 22:53:23 +0000 (15:53 -0700)]
log: --show-signature

This teaches the "log" family of commands to pass the GPG signature in the
commit objects to "gpg --verify" via the verify_signed_buffer() interface
used to verify signed tag objects. E.g.

    $ git show --show-signature -s HEAD

shows GPG output in the header part of the output.

Signed-off-by: Junio C Hamano <redacted>
14 years agocommit: teach --gpg-sign option
Junio C Hamano [Thu, 6 Oct 2011 00:23:20 +0000 (17:23 -0700)]
commit: teach --gpg-sign option

This uses the gpg-interface.[ch] to allow signing the commit, i.e.

    $ git commit --gpg-sign -m foo
    You need a passphrase to unlock the secret key for
    user: "Junio C Hamano <redacted>"
    4096-bit RSA key, ID 96AFE6CB, created 2011-10-03 (main key ID 713660A7)

    [master 8457d13] foo
     1 files changed, 1 insertions(+), 0 deletions(-)

The lines of GPG detached signature are placed in a new multi-line header
field, instead of tucking the signature block at the end of the commit log
message text (similar to how signed tag is done), for multiple reasons:

 - The signature won't clutter output from "git log" and friends if it is
   in the extra header. If we place it at the end of the log message, we
   would need to teach "git log" and friends to strip the signature block
   with an option.

 - Teaching new versions of "git log" and "gitk" to optionally verify and
   show signatures is cleaner if we structurally know where the signature
   block is (instead of scanning in the commit log message).

 - The signature needs to be stripped upon various commit rewriting
   operations, e.g. rebase, filter-branch, etc. They all already ignore
   unknown headers, but if we place signature in the log message, all of
   these tools (and third-party tools) also need to learn how a signature
   block would look like.

 - When we added the optional encoding header, all the tools (both in tree
   and third-party) that acts on the raw commit object should have been
   fixed to ignore headers they do not understand, so it is not like that
   new header would be more likely to break than extra text in the commit.

A commit made with the above sample sequence would look like this:

    $ git cat-file commit HEAD
    tree 3cd71d90e3db4136e5260ab54599791c4f883b9d
    parent b87755351a47b09cb27d6913e6e0e17e6254a4d4
    author Junio C Hamano <redacted> 1317862251 -0700
    committer Junio C Hamano <redacted> 1317862251 -0700
    gpgsig -----BEGIN PGP SIGNATURE-----
     Version: GnuPG v1.4.10 (GNU/Linux)

     iQIcBAABAgAGBQJOjPtrAAoJELC16IaWr+bL4TMP/RSe2Y/jYnCkds9unO5JEnfG
     ...
     =dt98
     -----END PGP SIGNATURE-----

    foo

but "git log" (unless you ask for it with --pretty=raw) output is not
cluttered with the signature information.

Signed-off-by: Junio C Hamano <redacted>
14 years agocommit-tree: teach -m/-F options to read logs from elsewhere
Junio C Hamano [Wed, 9 Nov 2011 19:54:04 +0000 (11:54 -0800)]
commit-tree: teach -m/-F options to read logs from elsewhere

Just like "git commit" does.

Signed-off-by: Junio C Hamano <redacted>
14 years agoGit 1.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 <redacted>
14 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()

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

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

14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agocommit-tree: update the command line parsing
Junio C Hamano [Wed, 9 Nov 2011 19:33:55 +0000 (11:33 -0800)]
commit-tree: update the command line parsing

We have kept the original "git commit-tree <tree> -p <parent> ..." syntax
forever, but "git commit-tree -p <parent> -p <parent> ... <tree>" would be
more intuitive way to spell it. Dashed flags along with their arguments
come first and then the "thing" argument after the flags.

Signed-off-by: Junio C Hamano <redacted>
14 years agocommit: teach --amend to carry forward extra headers
Junio C Hamano [Tue, 8 Nov 2011 23:38:07 +0000 (15:38 -0800)]
commit: teach --amend to carry forward extra headers

After running "git pull $there for-linus" to merge a signed tag, the
integrator may need to amend the resulting merge commit to fix typoes
in it. Teach --amend option to read the existing extra headers, and
carry them forward.

Signed-off-by: Junio C Hamano <redacted>
14 years agomerge: force edit and no-ff mode when merging a tag object
Junio C Hamano [Tue, 8 Nov 2011 00:29:34 +0000 (16:29 -0800)]
merge: force edit and no-ff mode when merging a tag object

Now that we allow pulling a tag from the remote site to validate the
authenticity, we should give the user the final chance to verify and edit
the merge message. The integrator is expected to leave a meaningful merge
commit log in the history. Disallow fast-forwarding in such a case to
ensure that a merge commit is always recorded.

Signed-off-by: Junio C Hamano <redacted>
14 years agocommit: copy merged signed tags to headers of merge commit
Junio C Hamano [Tue, 8 Nov 2011 00:21:32 +0000 (16:21 -0800)]
commit: copy merged signed tags to headers of merge commit

Now MERGE_HEAD records the tag objects without peeling, we could record
the result of manual conflict resolution via "git commit" without losing
the tag information. Introduce a new "mergetag" multi-line header field to
the commit object, and use it to store the entire contents of each signed
tag merged.

A commit header that has a multi-line payload begins with the header tag
(e.g. "mergetag" in this case), SP, the first line of payload, LF, and all
the remaining lines have a SP inserted at the beginning.

In hindsight, it would have been better to make "merge --continue" as the
way to continue from such an interrupted merge, not "commit", but this is
a backward compatibility baggage we would need to carry around for now.

Signed-off-by: Junio C Hamano <redacted>
14 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

14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agorequest-pull: use the annotated tag contents
Junio C Hamano [Wed, 9 Nov 2011 13:05:00 +0000 (05:05 -0800)]
request-pull: use the annotated tag contents

The integrator tool will start allowing to pull a signed or an annotated
tag, i.e.

    $ git pull $there tags/for-linus

and the description in the tag is used to convey a meaningful message from
the lieutenant to the integrator to justify the history being pulled.

Include the message in the pull request e-mail, as the same information is
useful in this context, too. It would encourage the lieutenants to write
meaningful messages in their signed tags.

Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
14 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

14 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

14 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 <redacted>
14 years agoGit 1.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 <redacted>
14 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

14 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

14 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

14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agomerge: record tag objects without peeling in MERGE_HEAD
Junio C Hamano [Mon, 7 Nov 2011 22:45:10 +0000 (14:45 -0800)]
merge: record tag objects without peeling in MERGE_HEAD

Otherwise, "git commit" wouldn't have a way to tell that we were in the
middle of merging an annotated or signed tag, not a plain commit, after
"git merge" stops to ask the user to resolve conflicts.

Signed-off-by: Junio C Hamano <redacted>
14 years agomerge: make usage of commit->util more extensible
Junio C Hamano [Mon, 7 Nov 2011 21:26:22 +0000 (13:26 -0800)]
merge: make usage of commit->util more extensible

The merge-recursive code uses the commit->util field directly to annotate
the commit objects given from the command line, i.e. the remote heads to
be merged, with a single string to be used to describe it in its trace
messages and conflict markers.

Correct this short-signtedness by redefining the field to be a pointer to
a structure "struct merge_remote_desc" that later enhancements can add
more information. Store the original objects we were told to merge in a
field "obj" in this struct, so that we can recover the tag we were told to
merge.

Signed-off-by: Junio C Hamano <redacted>
14 years agofmt-merge-msg: Add contents of merged tag in the merge message
Junio C Hamano [Sat, 5 Nov 2011 04:06:30 +0000 (21:06 -0700)]
fmt-merge-msg: Add contents of merged tag in the merge message

When a contributor asks the integrator to merge her history, a signed tag
can be a good vehicle to communicate the authenticity of the request while
conveying other information such as the purpose of the topic.

E.g. a signed tag "for-linus" can be created, and the integrator can run:

   $ git pull git://example.com/work.git/ for-linus

This would allow the integrator to run "git verify-tag FETCH_HEAD" to
validate the signed tag.

Update fmt-merge-msg so that it pre-fills the merge message template with
the body (but not signature) of the tag object to help the integrator write
a better merge message, in the same spirit as the existing merge.log summary
lines.

The message that comes from GPG signature validation is also included in
the merge message template to help the integrator verify it, but they are
prefixed with "#" to make them comments.

Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agoGit 1.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 <redacted>
14 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

14 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 <redacted>
Reviewed-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agofmt-merge-msg: package options into a structure
Junio C Hamano [Sat, 5 Nov 2011 00:35:42 +0000 (17:35 -0700)]
fmt-merge-msg: package options into a structure

This way new features can be added more easily

Signed-off-by: Junio C Hamano <redacted>
14 years agofmt-merge-msg: avoid early returns
Junio C Hamano [Sat, 5 Nov 2011 00:00:03 +0000 (17:00 -0700)]
fmt-merge-msg: avoid early returns

In various places in the codepath, the program tries to return early
assuming there is no more work needed. That is generally untrue when
over time new features are added.

Signed-off-by: Junio C Hamano <redacted>
14 years agorefs DWIMmery: use the same rule for both "git fetch" and others
Junio C Hamano [Fri, 4 Nov 2011 21:14:05 +0000 (14:14 -0700)]
refs DWIMmery: use the same rule for both "git fetch" and others

"git log frotz" can DWIM to "refs/remotes/frotz/HEAD", but in the remote
access context, "git fetch frotz" to fetch what the other side happened to
have fetched from what it calls 'frotz' (which may not have any relation
to what we consider is 'frotz') the last time would not make much sense,
so the fetch rules table did not include "refs/remotes/%.*s/HEAD".

When the user really wants to, "git fetch $there remotes/frotz/HEAD" would
let her do so anyway, so this is not about safety or security; it merely
is about confusion avoidance and discouraging meaningless usage.

Specifically, it is _not_ about ambiguity avoidance. A name that would
become ambiguous if we use the same rules table for both fetch and local
rev-parse would be ambiguous locally at the remote side.

So for the same reason as we added rule to allow "git fetch $there v1.0"
instead of "git fetch $there tags/v1.0" in the previous commit, here is a
bit longer rope for the users, which incidentally simplifies our code.

Signed-off-by: Junio C Hamano <redacted>
14 years agofetch: allow "git fetch $there v1.0" to fetch a tag
Junio C Hamano [Fri, 4 Nov 2011 21:05:22 +0000 (14:05 -0700)]
fetch: allow "git fetch $there v1.0" to fetch a tag

You can already do so with "git fetch $there tags/v1.0" but if it is not
ambiguous there is no reason to force users to type more.

Signed-off-by: Junio C Hamano <redacted>
14 years agomerge: notice local merging of tags and keep it unwrapped
Junio C Hamano [Sat, 5 Nov 2011 04:31:28 +0000 (21:31 -0700)]
merge: notice local merging of tags and keep it unwrapped

This also updates the autogenerated merge title message from "merge commit X"
to "merge tag X", and its effect can be seen in the changes to the test suite.

Signed-off-by: Junio C Hamano <redacted>
14 years agopull: introduce a pull.rebase option to enable --rebase
Ævar Arnfjörð Bjarmason [Sun, 6 Nov 2011 09:50:10 +0000 (10:50 +0100)]
pull: introduce a pull.rebase option to enable --rebase

Currently we either need to set branch.<name>.rebase for existing
branches if we'd like "git pull" to mean "git pull --rebase", or have
the forethought of setting "branch.autosetuprebase" before we create
the branch.

Introduce a "pull.rebase" option to globally configure "git pull" to
mean "git pull --rebase" for any branch.

This option will be considered at a lower priority than
branch.<name>.rebase, i.e. we could set pull.rebase=true and
branch.<name>.rebase=false and the latter configuration option would
win.

Reviewed-by: Sverre Rabbelier <redacted>
Reviewed-by: Fernando Vezzosi <redacted>
Reviewed-by: Eric Herman <redacted>
Signed-off-by: Ævar Arnfjörð Bjarmason <redacted>
Liked-by: Johannes Schindelin <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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

14 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

14 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

14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Pete Wyckoff <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agoSplit GPG interface into its own helper library
Junio C Hamano [Thu, 8 Sep 2011 04:19:47 +0000 (21:19 -0700)]
Split GPG interface into its own helper library

This mostly moves existing code from builtin/tag.c (for signing)
and builtin/verify-tag.c (for verifying) to a new gpg-interface.c
file to provide a more generic library interface.

 - sign_buffer() takes a payload strbuf, a signature strbuf, and a signing
   key, runs "gpg" to produce a detached signature for the payload, and
   appends it to the signature strbuf. The contents of a signed tag that
   concatenates the payload and the detached signature can be produced by
   giving the same strbuf as payload and signature strbuf.

 - verify_signed_buffer() takes a payload and a detached signature as
   <ptr, len> pairs, and runs "gpg --verify" to see if the payload matches
   the signature. It can optionally capture the output from GPG to allow
   the callers to pretty-print it in a way more suitable for their
   contexts.

"verify-tag" (aka "tag -v") used to save the whole tag contents as if it
is a detached signature, and fed gpg the payload part of the tag. It
relied on gpg to fail when the given tag is not signed but just is
annotated.  The updated run_gpg_verify() function detects the lack of
detached signature in the input, and errors out without bothering "gpg".

Signed-off-by: Junio C Hamano <redacted>
14 years agofetch: do not store peeled tag object names in FETCH_HEAD
Linus Torvalds [Thu, 3 Nov 2011 02:19:34 +0000 (19:19 -0700)]
fetch: do not store peeled tag object names in FETCH_HEAD

We do not want to record tags as parents of a merge when the user does
"git pull $there tag v1.0" to merge tagged commit, but that is not a good
enough excuse to peel the tag down to commit when storing in FETCH_HEAD.
The caller of underlying "git fetch $there tag v1.0" may have other uses
of information contained in v1.0 tag in mind.

[jc: the test adjustment is to update for the new expectation]

Signed-off-by: Junio C Hamano <redacted>
14 years agogit-gui: don't warn for detached head when rebasing
Bert Wesarg [Sat, 22 Oct 2011 19:39:40 +0000 (21:39 +0200)]
git-gui: don't warn for detached head when rebasing

Signed-off-by: Bert Wesarg <redacted>
Signed-off-by: Pat Thoyts <redacted>
14 years agogit-gui: make config gui.warndetachedcommit a boolean
Bert Wesarg [Sat, 22 Oct 2011 19:39:39 +0000 (21:39 +0200)]
git-gui: make config gui.warndetachedcommit a boolean

Signed-off-by: Bert Wesarg <redacted>
Signed-off-by: Pat Thoyts <redacted>
14 years agogit-gui: add config value gui.diffopts for passing additional diff options
Tilman Vogel [Fri, 21 Jan 2011 10:59:45 +0000 (11:59 +0100)]
git-gui: add config value gui.diffopts for passing additional diff options

Signed-off-by: Tilman Vogel <redacted>
Signed-off-by: Pat Thoyts <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Helped-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Helped-by: Daniel Stenberg <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Helped-by: Daniel Stenberg <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Helped-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 years agogit-gui: sort the numeric ansi codes
Pat Thoyts [Fri, 19 Nov 2010 22:22:20 +0000 (22:22 +0000)]
git-gui: sort the numeric ansi codes

This ensures that underline does not conflict with inverse colors.

Signed-off-by: Pat Thoyts <redacted>
14 years agogit-gui: support underline style when parsing diff output
Pat Thoyts [Fri, 19 Nov 2010 10:00:49 +0000 (10:00 +0000)]
git-gui: support underline style when parsing diff output

Suggested-by: Bert Wesarg <redacted>
Signed-off-by: Pat Thoyts <redacted>
14 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 <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
14 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 <redacted>
Signed-off-by: Junio C Hamano <redacted>
git clone https://git.99rst.org/PROJECT