git/git.git
8 years agoMerge branch 'rh/maint-gitweb-highlight-ext' into maint
Junio C Hamano [Wed, 28 Nov 2012 20:05:30 +0000 (12:05 -0800)]
Merge branch 'rh/maint-gitweb-highlight-ext' into maint

Syntax highlighting in "gitweb" was not quite working.

* rh/maint-gitweb-highlight-ext:
  gitweb.perl: fix %highlight_ext mappings

8 years agoMerge branch 'pw/maint-p4-rcs-expansion-newline' into maint
Junio C Hamano [Wed, 28 Nov 2012 20:04:32 +0000 (12:04 -0800)]
Merge branch 'pw/maint-p4-rcs-expansion-newline' into maint

"git p4" used to try expanding malformed "$keyword$" that spans
across multiple lines.

* pw/maint-p4-rcs-expansion-newline:
  git p4: RCS expansion should not span newlines

8 years agocompletion: add options --single-branch and --branch to "git clone"
Ralf Thielow [Wed, 28 Nov 2012 18:27:02 +0000 (19:27 +0100)]
completion: add options --single-branch and --branch to "git clone"

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'nd/maint-compat-fnmatch-fix' into maint
Junio C Hamano [Tue, 27 Nov 2012 21:29:00 +0000 (13:29 -0800)]
Merge branch 'nd/maint-compat-fnmatch-fix' into maint

* nd/maint-compat-fnmatch-fix:
  compat/fnmatch: fix off-by-one character class's length check

8 years agoMerge branch 'jh/update-ref-d-through-symref' into maint
Junio C Hamano [Tue, 27 Nov 2012 21:28:45 +0000 (13:28 -0800)]
Merge branch 'jh/update-ref-d-through-symref' into maint

* jh/update-ref-d-through-symref:
  Fix failure to delete a packed ref through a symref
  t1400-update-ref: Add test verifying bug with symrefs in delete_ref()

8 years agoMerge branch 'esr/maint-doc-fast-import' into maint
Junio C Hamano [Tue, 27 Nov 2012 21:28:31 +0000 (13:28 -0800)]
Merge branch 'esr/maint-doc-fast-import' into maint

* esr/maint-doc-fast-import:
  doc/fast-import: clarify how content states are built

8 years agoMerge branch 'wtk/submodule-doc-fixup' into maint
Junio C Hamano [Tue, 27 Nov 2012 21:28:18 +0000 (13:28 -0800)]
Merge branch 'wtk/submodule-doc-fixup' into maint

* wtk/submodule-doc-fixup:
  git-submodule: wrap branch option with "<>" in usage strings.

8 years agoDocumentation: improve phrasing in git-push.txt
Mark Szepieniec [Tue, 27 Nov 2012 01:37:34 +0000 (01:37 +0000)]
Documentation: improve phrasing in git-push.txt

The current version contains the sentence:

Further suppose that the other person already pushed changes leading to
A back to the original repository you two obtained the original commit
X.

which doesn't parse for me; I've changed it to

Further suppose that the other person already pushed changes leading to
A back to the original repository from which you two obtained the
original commit X.

Signed-off-by: Mark Szepieniec <mszepien@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoFix typo in remote set-head usage
Antoine Pelisse [Mon, 26 Nov 2012 19:21:54 +0000 (20:21 +0100)]
Fix typo in remote set-head usage

parenthesis are not matching in `builtin_remote_sethead_usage`
as a square bracket is closing something never opened.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMakefile: hide stderr of curl-config test
Paul Gortmaker [Thu, 22 Nov 2012 03:19:57 +0000 (22:19 -0500)]
Makefile: hide stderr of curl-config test

You will get

    $ make distclean 2>&1 | grep curl
    /bin/sh: curl-config: not found
    /bin/sh: curl-config: not found
    /bin/sh: curl-config: not found
    /bin/sh: curl-config: not found
    /bin/sh: curl-config: not found
    $

if you don't have a curl development package installed.

The intent is not to alarm the user, but just to test if there is
a new enough curl installed.  However, if you look at search engine
suggested completions, the above "error" messages are confusing
people into thinking curl is a hard requirement.

Redirect this error output to /dev/null as it is not necessary to be
shown to the end users.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoGit 1.8.0.1 v1.8.0.1
Junio C Hamano [Mon, 26 Nov 2012 02:40:34 +0000 (18:40 -0800)]
Git 1.8.0.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jk/checkout-out-of-unborn' into maint
Junio C Hamano [Mon, 26 Nov 2012 02:35:50 +0000 (18:35 -0800)]
Merge branch 'jk/checkout-out-of-unborn' into maint

* jk/checkout-out-of-unborn:
  checkout: print a message when switching unborn branches

8 years agoMerge branch 'cn/config-missing-path' into maint
Junio C Hamano [Mon, 26 Nov 2012 02:35:46 +0000 (18:35 -0800)]
Merge branch 'cn/config-missing-path' into maint

* cn/config-missing-path:
  config: don't segfault when given --path with a missing value

8 years agoMerge branch 'jk/maint-gitweb-xss' into maint
Junio C Hamano [Mon, 26 Nov 2012 02:35:41 +0000 (18:35 -0800)]
Merge branch 'jk/maint-gitweb-xss' into maint

Fixes an XSS vulnerability in gitweb.

* jk/maint-gitweb-xss:
  gitweb: escape html in rss title

8 years agoCompletion must sort before using uniq
Marc Khouzam [Fri, 23 Nov 2012 14:02:22 +0000 (09:02 -0500)]
Completion must sort before using uniq

The user can be presented with invalid completion results
when trying to complete a 'git checkout' command.  This can happen
when using a branch name prefix that matches multiple remote branches.

For example, if available branches are:
  master
  remotes/GitHub/maint
  remotes/GitHub/master
  remotes/origin/maint
  remotes/origin/master

When performing completion on 'git checkout ma' the user will be
given the choices:
  maint
  master

However, 'git checkout maint' will fail in this case, although
completion previously said 'maint' was valid.  Furthermore, when
performing completion on 'git checkout mai', no choices will be
suggested.  So, the user is first told that the branch name
'maint' is valid, but when trying to complete 'mai' into 'maint',
that completion is no longer valid.

The completion results should never propose 'maint' as a valid
branch name, since 'git checkout' will refuse it.

The reason for this bug is that the uniq program only
works with sorted input.  The man page states
"uniq prints the unique lines in a sorted file".

When __git_refs uses the guess heuristic employed by checkout for
tracking branches it wants to consider remote branches but only if
the branch name is unique.  To do that, it calls 'uniq -u'.  However
the input given to 'uniq -u' is not sorted.

Therefore, in the above example, when dealing with 'git checkout ma',
"__git_refs '' 1" will find the following list:
  master
  maint
  master
  maint
  master

which, when passed to 'uniq -u' will remain the same.  Therefore
'maint' will be wrongly suggested as a valid option.

When dealing with 'git checkout mai', the list will be:
  maint
  maint

which happens to be sorted and will be emptied by 'uniq -u',
properly ignoring 'maint'.

A solution for preventing the completion script from suggesting
such invalid branch names is to first call 'sort' and then 'uniq -u'.

Signed-off-by: Marc Khouzam <marc.khouzam@gmail.com>
Reviewed-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocompat/fnmatch: fix off-by-one character class's length check
Nguyễn Thái Ngọc Duy [Sun, 11 Nov 2012 10:13:57 +0000 (17:13 +0700)]
compat/fnmatch: fix off-by-one character class's length check

Character class "xdigit" is the only one that hits 6 character limit
defined by CHAR_CLASS_MAX_LENGTH. All other character classes are 5
character long and therefore never caught by this.

This should make xdigit tests in t3070 pass on Windows.

Reported-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoFurther preparation for 1.8.0.1
Junio C Hamano [Tue, 20 Nov 2012 18:16:14 +0000 (10:16 -0800)]
Further preparation for 1.8.0.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'mg/maint-pull-suggest-upstream-to' into maint
Junio C Hamano [Tue, 20 Nov 2012 18:15:09 +0000 (10:15 -0800)]
Merge branch 'mg/maint-pull-suggest-upstream-to' into maint

* mg/maint-pull-suggest-upstream-to:
  push/pull: adjust missing upstream help text to changed interface

8 years agoMerge branch 'mm/maint-doc-commit-edit' into maint
Junio C Hamano [Tue, 20 Nov 2012 18:14:55 +0000 (10:14 -0800)]
Merge branch 'mm/maint-doc-commit-edit' into maint

* mm/maint-doc-commit-edit:
  Document 'git commit --no-edit' explicitly

8 years agoMerge branch 'as/maint-doc-fix-no-post-rewrite' into maint
Junio C Hamano [Tue, 20 Nov 2012 18:14:46 +0000 (10:14 -0800)]
Merge branch 'as/maint-doc-fix-no-post-rewrite' into maint

* as/maint-doc-fix-no-post-rewrite:
  commit: fixup misplacement of --no-post-rewrite description

8 years agoMerge branch 'rs/lock-correct-ref-during-delete' into maint
Junio C Hamano [Tue, 20 Nov 2012 18:14:41 +0000 (10:14 -0800)]
Merge branch 'rs/lock-correct-ref-during-delete' into maint

* rs/lock-correct-ref-during-delete:
  refs: lock symref that is to be deleted, not its target

8 years agoMerge branch 'rf/maint-mailmap-off-by-one' into maint
Junio C Hamano [Tue, 20 Nov 2012 18:14:28 +0000 (10:14 -0800)]
Merge branch 'rf/maint-mailmap-off-by-one' into maint

* rf/maint-mailmap-off-by-one:
  mailmap: avoid out-of-bounds memory access

8 years agoMerge branch 'jk/maint-diff-grep-textconv' into maint
Junio C Hamano [Tue, 20 Nov 2012 18:03:12 +0000 (10:03 -0800)]
Merge branch 'jk/maint-diff-grep-textconv' into maint

"git diff -G<pattern>" did not honor textconv filter when looking
for changes.

* jk/maint-diff-grep-textconv:
  diff_grep: use textconv buffers for add/deleted files

8 years agoMerge branch 'js/format-2047' into maint
Junio C Hamano [Tue, 20 Nov 2012 17:57:44 +0000 (09:57 -0800)]
Merge branch 'js/format-2047' into maint

Various rfc2047 quoting issues around a non-ASCII name on the From:
line in the output from format-patch have been corrected.

* js/format-2047:
  format-patch tests: check quoting/encoding in To: and Cc: headers
  format-patch: fix rfc2047 address encoding with respect to rfc822 specials
  format-patch: make rfc2047 encoding more strict
  format-patch: introduce helper function last_line_length()
  format-patch: do not wrap rfc2047 encoded headers too late
  format-patch: do not wrap non-rfc2047 headers too early
  utf8: fix off-by-one wrapping of text

8 years agoStart preparing for 1.8.0.1
Junio C Hamano [Mon, 19 Nov 2012 03:47:19 +0000 (19:47 -0800)]
Start preparing for 1.8.0.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'sz/maint-curl-multi-timeout' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:44:36 +0000 (19:44 -0800)]
Merge branch 'sz/maint-curl-multi-timeout' into maint

Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call.  A
workaround has been added for this.

* sz/maint-curl-multi-timeout:
  Fix potential hang in https handshake

8 years agoMerge branch 'po/maint-refs-replace-docs' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:34:09 +0000 (19:34 -0800)]
Merge branch 'po/maint-refs-replace-docs' into maint

The refs/replace hierarchy was not mentioned in the
repository-layout docs.

* po/maint-refs-replace-docs:
  Doc repository-layout: Show refs/replace

8 years agoMerge branch 'ph/pull-rebase-detached' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:33:45 +0000 (19:33 -0800)]
Merge branch 'ph/pull-rebase-detached' into maint

"git pull --rebase" run while the HEAD is detached tried to find
the upstream branch of the detached HEAD (which by definition
does not exist) and emitted unnecessary error messages.

* ph/pull-rebase-detached:
  git-pull: Avoid merge-base on detached head

8 years agoMerge branch 'mm/maint-doc-remote-tracking' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:33:20 +0000 (19:33 -0800)]
Merge branch 'mm/maint-doc-remote-tracking' into maint

Update "remote tracking branch" in the documentation to
"remote-tracking branch".

* mm/maint-doc-remote-tracking:
  Documentation: remote tracking branch -> remote-tracking branch

8 years agoMerge branch 'rs/branch-del-symref' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:32:58 +0000 (19:32 -0800)]
Merge branch 'rs/branch-del-symref' into maint

A symbolic ref refs/heads/SYM was not correctly removed with "git
branch -d SYM"; the command removed the ref pointed by SYM instead.

* rs/branch-del-symref:
  branch: show targets of deleted symrefs, not sha1s
  branch: skip commit checks when deleting symref branches
  branch: delete symref branch, not its target
  branch: factor out delete_branch_config()
  branch: factor out check_branch_commit()

8 years agoMerge branch 'nd/grep-true-path' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:32:30 +0000 (19:32 -0800)]
Merge branch 'nd/grep-true-path' into maint

"git grep -e pattern <tree>" asked the attribute system to read
"<tree>:.gitattributes" file in the working tree, which was
nonsense.

* nd/grep-true-path:
  grep: stop looking at random places for .gitattributes

8 years agoMerge branch 'jc/grep-pcre-loose-ends' (early part) into maint
Junio C Hamano [Mon, 19 Nov 2012 03:32:11 +0000 (19:32 -0800)]
Merge branch 'jc/grep-pcre-loose-ends' (early part) into maint

"git log -F -E --grep='<ere>'" failed to use the given <ere>
pattern as extended regular expression, and instead looked for the
string literally.

* 'jc/grep-pcre-loose-ends' (early part):
  log --grep: use the same helper to set -E/-F options as "git grep"
  revisions: initialize revs->grep_filter using grep_init()
  grep: move pattern-type bits support to top-level grep.[ch]
  grep: move the configuration parsing logic to grep.[ch]
  builtin/grep.c: make configuration callback more reusable

8 years agoMerge branch 'da/mergetools-p4' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:31:40 +0000 (19:31 -0800)]
Merge branch 'da/mergetools-p4' into maint

"git mergetool" feeds /dev/null as a common ancestor when dealing
with an add/add conflict, but p4merge backend cannot handle it. Work
it around by passing a temporary empty file.

* da/mergetools-p4:
  mergetools/p4merge: Handle "/dev/null"

8 years agoMerge branch 'jc/test-say-color-avoid-echo-escape' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:31:13 +0000 (19:31 -0800)]
Merge branch 'jc/test-say-color-avoid-echo-escape' into maint

The "say" function in the test scaffolding incorrectly allowed
"echo" to interpret "\a" as if it were a C-string asking for a BEL
output.

* jc/test-say-color-avoid-echo-escape:
  test-lib: Fix say_color () not to interpret \a\b\c in the message

8 years agoMerge branch 'bw/config-lift-variable-name-length-limit' into maint
Junio C Hamano [Mon, 19 Nov 2012 03:29:44 +0000 (19:29 -0800)]
Merge branch 'bw/config-lift-variable-name-length-limit' into maint

The configuration parser had an unnecessary hardcoded limit on
variable names that was not checked consistently.

* bw/config-lift-variable-name-length-limit:
  Remove the hard coded length limit on variable names in config files

8 years agoconfig: don't segfault when given --path with a missing value
Carlos Martín Nieto [Thu, 15 Nov 2012 18:10:01 +0000 (10:10 -0800)]
config: don't segfault when given --path with a missing value

When given a variable without a value, such as '[section] var' and
asking git-config to treat it as a path, git_config_pathname returns
an error and doesn't modify its output parameter. show_config assumes
that the call is always successful and sets a variable to indicate
that vptr should be freed. In case of an error however, trying to do
this will cause the program to be killed, as it's pointing to memory
in the stack.

Detect the error and return immediately to avoid freeing or accessing
the uninitialed memory in the stack.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocheckout: print a message when switching unborn branches
Jeff King [Thu, 15 Nov 2012 17:12:33 +0000 (09:12 -0800)]
checkout: print a message when switching unborn branches

When we switch to a new branch using checkout, we usually output a
message indicating what happened. However, when we switch from an unborn
branch to a new branch, we do not print anything, which may leave the
user wondering what happened.

The reason is that the unborn branch is a special case (see abe1998),
and does not follow the usual switch_branches code path. Let's add a
similar informational message to the special case to match the usual
code path.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agogitweb: escape html in rss title
Jeff King [Mon, 12 Nov 2012 21:34:28 +0000 (16:34 -0500)]
gitweb: escape html in rss title

The title of an RSS feed is generated from many components,
including the filename provided as a query parameter, but we
failed to quote it.  Besides showing the wrong output, this
is a vector for XSS attacks.

Signed-off-by: Jeff King <peff@peff.net>
8 years agodoc/fast-import: clarify how content states are built
Eric S. Raymond [Mon, 5 Nov 2012 04:31:01 +0000 (23:31 -0500)]
doc/fast-import: clarify how content states are built

Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Jeff King <peff@peff.net>
8 years agogitweb.perl: fix %highlight_ext mappings
Richard Hubbell [Sun, 4 Nov 2012 17:45:55 +0000 (09:45 -0800)]
gitweb.perl: fix %highlight_ext mappings

When commit 592ea41 refactored the list of extensions for
syntax highlighting, it failed to take into account perl's
operator precedence within lists. As a result, we end up
creating a dictionary of one-to-one elements when the intent
was to map mutliple related types to one main type (e.g.,
bash, ksh, zsh, and sh should all map to sh since they share
similar syntax, but we ended up just mapping "bash" to
"bash" and so forth).

This patch adds parentheses to make the mapping as the
original change intended. It also reorganizes the list to
keep mapped extensions together.

Signed-off-by: Richard Hubbell <richard_hubbe11@lavabit.com>
Signed-off-by: Jeff King <peff@peff.net>
8 years agogit p4: RCS expansion should not span newlines
Pete Wyckoff [Sun, 4 Nov 2012 22:04:02 +0000 (17:04 -0500)]
git p4: RCS expansion should not span newlines

This bug was introduced in cb585a9 (git-p4: keyword
flattening fixes, 2011-10-16).  The newline character
is indeed special, and $File$ expansions should not try
to match across multiple lines.

Based-on-patch-by: Chris Goard <cgoard@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Jeff King <peff@peff.net>
8 years agopush/pull: adjust missing upstream help text to changed interface
Michael J Gruber [Tue, 6 Nov 2012 10:29:01 +0000 (11:29 +0100)]
push/pull: adjust missing upstream help text to changed interface

In case of a missing upstream, the git-parse-remote script suggests:

If you wish to set tracking information for this branch you can do so
with:

    git branch --set-upstream nsiv2 origin/<branch>

But --set-upstream is deprectated. Change the suggestion to:

    git branch --set-upstream-to=origin/<branch> nsiv2

Reported-by: Jeroen van der Ham <vdham@uva.nl>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Jeff King <peff@peff.net>
8 years agocommit: fixup misplacement of --no-post-rewrite description
Andreas Schwab [Fri, 2 Nov 2012 12:26:47 +0000 (13:26 +0100)]
commit: fixup misplacement of --no-post-rewrite description

In e858af6 (commit: document a couple of options) the description of the
--no-post-rewrite option was put inside the paragraph for the --amend
option.  Move it down after the paragraph.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Jeff King <peff@peff.net>
8 years agoDocument 'git commit --no-edit' explicitly
Matthieu Moy [Fri, 2 Nov 2012 10:39:30 +0000 (11:39 +0100)]
Document 'git commit --no-edit' explicitly

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Jeff King <peff@peff.net>
8 years agodiff_grep: use textconv buffers for add/deleted files
Jeff King [Sun, 28 Oct 2012 11:40:00 +0000 (07:40 -0400)]
diff_grep: use textconv buffers for add/deleted files

If you use "-G" to grep a diff, we will apply a configured
textconv filter to the data before generating the diff.
However, if the diff is an addition or deletion, we do not
bother running the diff at all, and just look for the token
in the added (or removed) content. This works because we
know that the diff must contain every line of content.

However, while we used the textconv-derived buffers in the
regular diff, we accidentally passed the original unmodified
buffers to regexec when checking the added or removed
content. This could lead to an incorrect answer.

Worse, in some cases we might have a textconv buffer but no
original buffer (e.g., if we pulled the textconv data from
cache, or if we reused a working tree file when generating
it). In that case, we could actually feed NULL to regexec
and segfault.

Reported-by: Peter Oberndorfer <kumbayo84@arcor.de>
Signed-off-by: Jeff King <peff@peff.net>
8 years agomailmap: avoid out-of-bounds memory access
Romain Francoise [Sat, 27 Oct 2012 22:49:55 +0000 (00:49 +0200)]
mailmap: avoid out-of-bounds memory access

AddressSanitizer (http://clang.llvm.org/docs/AddressSanitizer.html)
complains of a one-byte buffer underflow in parse_name_and_email() while
running the test suite. And indeed, if one of the lines in the mailmap
begins with '<', we dereference the address just before the beginning of
the buffer when looking for whitespace to remove, before checking that
we aren't going too far.

So reverse the order of the tests to make sure that we don't read
outside the buffer.

Signed-off-by: Romain Francoise <romain@orebokech.com>
Signed-off-by: Jeff King <peff@peff.net>
8 years agoDoc repository-layout: Show refs/replace
Philip Oakley [Sun, 21 Oct 2012 20:52:37 +0000 (21:52 +0100)]
Doc repository-layout: Show refs/replace

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Jeff King <peff@peff.net>
8 years agoDocumentation: remote tracking branch -> remote-tracking branch
Matthieu Moy [Tue, 23 Oct 2012 11:34:05 +0000 (13:34 +0200)]
Documentation: remote tracking branch -> remote-tracking branch

This change was already done by 0e615b252f3 (Matthieu Moy, Tue Nov 2
2010, Replace "remote tracking" with "remote-tracking"), but new
instances of remote tracking (without dash) were introduced in the
meantime.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Jeff King <peff@peff.net>
8 years agogit-pull: Avoid merge-base on detached head
Phil Hord [Tue, 23 Oct 2012 20:39:56 +0000 (16:39 -0400)]
git-pull: Avoid merge-base on detached head

git pull --rebase does some clever tricks to find the base
for $upstream, but it forgets that we may not have any
branch at all.  When this happens, git merge-base reports its
"usage" help in the middle of an otherwise successful
rebase operation, because git-merge is called with one too
few parameters.

Since we do not need the merge-base trick in the case of a
detached HEAD, detect this condition and bypass the clever
trick and the usage noise.

Signed-off-by: Phil Hord <hordp@cisco.com>
Signed-off-by: Jeff King <peff@peff.net>
8 years agogit-submodule: wrap branch option with "<>" in usage strings.
W. Trevor King [Tue, 23 Oct 2012 21:00:21 +0000 (17:00 -0400)]
git-submodule: wrap branch option with "<>" in usage strings.

Use "-b <branch>" instead of "-b branch".  This brings the usage
strings in line with other options, e.g. "--reference <repository>".

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Jeff King <peff@peff.net>
8 years agoGit 1.8.0 v1.8.0
Junio C Hamano [Sun, 21 Oct 2012 20:56:23 +0000 (13:56 -0700)]
Git 1.8.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoFix failure to delete a packed ref through a symref
Johan Herland [Sun, 21 Oct 2012 10:40:32 +0000 (12:40 +0200)]
Fix failure to delete a packed ref through a symref

When deleting a ref through a symref (e.g. using 'git update-ref -d HEAD'
to delete refs/heads/master), we would remove the loose ref, but a packed
version of the same ref would remain, the end result being that instead of
deleting refs/heads/master we would appear to reset it to its state as of
the last repack.

This patch fixes the issue, by making sure we pass the correct ref name
when invoking repack_without_ref() from within delete_ref().

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot1400-update-ref: Add test verifying bug with symrefs in delete_ref()
Johan Herland [Sun, 21 Oct 2012 10:40:31 +0000 (12:40 +0200)]
t1400-update-ref: Add test verifying bug with symrefs in delete_ref()

When deleting a ref through a symref (e.g. using 'git update-ref -d HEAD'
to delete refs/heads/master), we currently fail to remove the packed
version of that ref. This testcase demonstrates the bug.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoFix potential hang in https handshake
Stefan Zager [Fri, 19 Oct 2012 21:04:20 +0000 (14:04 -0700)]
Fix potential hang in https handshake

It has been observed that curl_multi_timeout may return a very long
timeout value (e.g., 294 seconds and some usec) just before
curl_multi_fdset returns no file descriptors for reading.  The
upshot is that select() will hang for a long time -- long enough for
an https handshake to be dropped.  The observed behavior is that
the git command will hang at the terminal and never transfer any
data.

This patch is a workaround for a probable bug in libcurl.  The bug
only seems to manifest around a very specific set of circumstances:

- curl version (from curl/curlver.h):

 #define LIBCURL_VERSION_NUM 0x071307

- git-remote-https running on an ubuntu-lucid VM.
- Connecting through squid proxy running on another VM.

Interestingly, the problem doesn't manifest if a host connects
through squid proxy running on localhost; only if the proxy is on
a separate VM (not sure if the squid host needs to be on a separate
physical machine).  That would seem to suggest that this issue
is timing-sensitive.

This patch is more or less in line with a recommendation in the
curl docs about how to behave when curl_multi_fdset doesn't return
and file descriptors:

http://curl.haxx.se/libcurl/c/curl_multi_fdset.html

Signed-off-by: Stefan Zager <szager@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobranch: show targets of deleted symrefs, not sha1s
René Scharfe [Thu, 18 Oct 2012 12:08:03 +0000 (14:08 +0200)]
branch: show targets of deleted symrefs, not sha1s

git branch reports the abbreviated hash of the head commit of
a deleted branch to make it easier for a user to undo the
operation.  For symref branches this doesn't help.  Print the
symref target instead for them.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobranch: skip commit checks when deleting symref branches
René Scharfe [Thu, 18 Oct 2012 12:07:11 +0000 (14:07 +0200)]
branch: skip commit checks when deleting symref branches

Before a branch is deleted, we check that it points to a valid
commit.  With -d we also check that the commit is a merged; this
check is not done with -D.

The reason for that is that commits pointed to by branches should
never go missing; if they do then something broke and it's better
to stop instead of adding to the mess.  And a non-merged commit
may contain changes that are worth preserving, so we require the
stronger option -D instead of -d to get rid of them.

If a branch consists of a symref, these concerns don't apply.
Deleting such a branch can't make a commit become unreferenced,
so we don't need to check if it is merged, or even if it is
actually a valid commit.  Skip them in that case.  This allows
us to delete dangling symref branches.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobranch: delete symref branch, not its target
René Scharfe [Thu, 18 Oct 2012 12:05:17 +0000 (14:05 +0200)]
branch: delete symref branch, not its target

If a branch that is to be deleted happens to be a symref to another
branch, the current code removes the targeted branch instead of the
one it was called for.

Change this surprising behaviour and delete the symref branch
instead.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobranch: factor out delete_branch_config()
René Scharfe [Thu, 18 Oct 2012 12:04:08 +0000 (14:04 +0200)]
branch: factor out delete_branch_config()

Provide a small helper function for deleting branch config sections.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobranch: factor out check_branch_commit()
René Scharfe [Thu, 18 Oct 2012 12:02:51 +0000 (14:02 +0200)]
branch: factor out check_branch_commit()

Move the code to perform checks on the tip commit of a branch
to its own function.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoformat-patch tests: check quoting/encoding in To: and Cc: headers
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:34 +0000 (16:43 +0200)]
format-patch tests: check quoting/encoding in To: and Cc: headers

git-format-patch does currently not parse user supplied extra header
values (e. g., --cc, --add-header) and just replays them. That forces
users to add them RFC 2822/2047 conform in encoded form, e.g.

    --cc '=?UTF-8?q?Jan=20H=2E=20Sch=C3=B6nherr?= <...>'

which is inconvenient. We would want to update git-format-patch to
accept human-readable input

    --cc 'Jan H. Schönherr <...>'

and handle the encoding, wrapping and quoting internally in the future,
similar to what is already done in git-send-email. The necessary code
should mostly exist in the code paths that handle the From: and Subject:
headers.

Whether we want to do this only for the git-format-patch options
--to and --cc (and the corresponding config options) or also for
user supplied headers via --add-header, is open for discussion.

For now, add test_expect_failure tests for To: and Cc: headers as a
reminder and fix tests that would otherwise fail should this get
implemented.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoformat-patch: fix rfc2047 address encoding with respect to rfc822 specials
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:33 +0000 (16:43 +0200)]
format-patch: fix rfc2047 address encoding with respect to rfc822 specials

According to RFC 2047 and RFC 822, rfc2047 encoded words and and rfc822
quoted strings do not mix. Since add_rfc2047() no longer leaves RFC 822
specials behind, the quoting is also no longer necessary to create a
standard-conforming mail.

Remove the quoting, when RFC 2047 encoding takes place. This actually
requires to refactor add_rfc2047() a bit, so that the different cases
can be distinguished.

With this patch, my own name gets correctly decoded as Jan H. Schönherr
(without quotes) and not as "Jan H. Schönherr" (with quotes).

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoformat-patch: make rfc2047 encoding more strict
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:32 +0000 (16:43 +0200)]
format-patch: make rfc2047 encoding more strict

RFC 2047 requires more characters to be encoded than it is currently done.
Especially, RFC 2047 distinguishes between allowed remaining characters
in encoded words in addresses (From, To, etc.) and other headers, such
as Subject.

Make add_rfc2047() and is_rfc2047_special() location dependent and include
all non-allowed characters to hopefully be RFC 2047 conformant.

This especially fixes a problem, where RFC 822 specials (e. g. ".") were
left unencoded in addresses, which was solved with a non-standard-conforming
workaround in the past (which is going to be removed in a follow-up patch).

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoformat-patch: introduce helper function last_line_length()
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:31 +0000 (16:43 +0200)]
format-patch: introduce helper function last_line_length()

Currently, an open-coded loop to calculate the length of the last
line of a string buffer is used in multiple places.

Move that code into a function of its own.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoformat-patch: do not wrap rfc2047 encoded headers too late
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:30 +0000 (16:43 +0200)]
format-patch: do not wrap rfc2047 encoded headers too late

Encoded characters add more than one character at once to an encoded
header. Include all characters that are about to be added in the length
calculation for wrapping.

Additionally, RFC 2047 imposes a maximum line length of 76 characters
if that line contains an rfc2047 encoded word.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoformat-patch: do not wrap non-rfc2047 headers too early
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:29 +0000 (16:43 +0200)]
format-patch: do not wrap non-rfc2047 headers too early

Do not wrap the second and later lines of non-rfc2047-encoded headers
substantially before the 78 character limit.

Instead of passing the remaining length of the first line as wrapping
width, use the correct maximum length and tell strbuf_add_wrapped_bytes()
how many characters of the first line are already used.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoutf8: fix off-by-one wrapping of text
Jan H. Schönherr [Thu, 18 Oct 2012 14:43:28 +0000 (16:43 +0200)]
utf8: fix off-by-one wrapping of text

The wrapping logic in strbuf_add_wrapped_text() does currently not allow
lines that entirely fill the allowed width, instead it wraps the line one
character too early.

For example, the text "This is the sixth commit." formatted via
"%w(11,1,2)" (wrap at 11 characters, 1 char indent of first line, 2 char
indent of following lines) results in four lines: " This is", "  the",
"  sixth", "  commit." This is wrong, because "  the sixth" is exactly
11 characters long, and thus allowed.

Fix this by allowing the (width+1) character of a line to be a valid
wrapping point if it is a whitespace character.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui
Junio C Hamano [Wed, 17 Oct 2012 22:55:46 +0000 (15:55 -0700)]
Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui

git-gui 0.17.0

* tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui:
  git-gui 0.17
  git-gui: Don't prepend the prefix if value looks like a full path
  git-gui: Detect full path when parsing arguments
  git-gui: remove .git/CHERRY_PICK_HEAD after committing
  git-gui: Fix a loose/lose mistake
  git-gui: Fix semi-working shortcuts for unstage and revert
  git-gui: de.po: translate "remote" as "extern"
  git-gui: de.po: translate "bare" as "bloß"
  git-gui: de.po: consistently add untranslated hook names within braces
  git-gui: preserve commit messages in utf-8
  git-gui: open console when using --trace on windows
  git-gui: fix a typo in po/ files
  git-gui: Use PWD if it exists on Mac OS X
  git-gui: fix git-gui crash due to uninitialized variable

8 years agogit-gui 0.17 gitgui-0.17.0
Pat Thoyts [Wed, 17 Oct 2012 20:57:29 +0000 (21:57 +0100)]
git-gui 0.17

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
8 years agogit-gui: Don't prepend the prefix if value looks like a full path
Andrew Wong [Tue, 2 Oct 2012 16:25:15 +0000 (12:25 -0400)]
git-gui: Don't prepend the prefix if value looks like a full path

When argument parsing fails to detect a file name, "git-gui" will try to
use the previously detected "head" as the file name. We should avoid
prepending the prefix if "head" looks like a full path.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
8 years agogit-gui: Detect full path when parsing arguments
Andrew Wong [Tue, 2 Oct 2012 16:25:14 +0000 (12:25 -0400)]
git-gui: Detect full path when parsing arguments

When running "git-gui blame" from a subfolder (which means prefix is
non-empty), if we pass a full path as argument, the argument parsing
will fail to recognize the argument as a file name, because prefix is
prepended to the argument.

This patch handles that scenario by adding an additional branch that
checks the file name without using the prefix.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
8 years agoGit 1.8.0-rc3 v1.8.0-rc3
Junio C Hamano [Wed, 17 Oct 2012 17:39:44 +0000 (10:39 -0700)]
Git 1.8.0-rc3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Wed, 17 Oct 2012 17:37:40 +0000 (10:37 -0700)]
Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
  l10n: vi.po: update from v1.8.0-rc2-4-g42e55
  l10n: Update Swedish translation (1964t0f0u)

8 years agoSync with 1.7.12.4
Junio C Hamano [Wed, 17 Oct 2012 17:37:32 +0000 (10:37 -0700)]
Sync with 1.7.12.4

8 years agoGit 1.7.12.4 v1.7.12.4
Junio C Hamano [Wed, 17 Oct 2012 17:36:01 +0000 (10:36 -0700)]
Git 1.7.12.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jk/maint-http-half-auth-push' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:29:24 +0000 (10:29 -0700)]
Merge branch 'jk/maint-http-half-auth-push' into maint

* jk/maint-http-half-auth-push:
  http: fix segfault in handle_curl_result

8 years agoMerge branch 'rr/git-uri-doc' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:28:56 +0000 (10:28 -0700)]
Merge branch 'rr/git-uri-doc' into maint

* rr/git-uri-doc:
  Git url doc: mark ftp/ftps as read-only and deprecate them

8 years agoMerge branch 'bw/cp-a-is-gnuism' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:28:48 +0000 (10:28 -0700)]
Merge branch 'bw/cp-a-is-gnuism' into maint

* bw/cp-a-is-gnuism:
  tests: "cp -a" is a GNUism

8 years agoMerge branch 'nd/doc-ignore' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:28:42 +0000 (10:28 -0700)]
Merge branch 'nd/doc-ignore' into maint

* nd/doc-ignore:
  gitignore.txt: suggestions how to get literal # or ! at the beginning

8 years agoMerge branch 'jc/doc-long-options' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:28:34 +0000 (10:28 -0700)]
Merge branch 'jc/doc-long-options' into maint

* jc/doc-long-options:
  gitcli: parse-options lets you omit tail of long options

8 years agoMerge branch 'jc/maint-t1450-fsck-order-fix' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:28:19 +0000 (10:28 -0700)]
Merge branch 'jc/maint-t1450-fsck-order-fix' into maint

* jc/maint-t1450-fsck-order-fix:
  t1450: the order the objects are checked is undefined

8 years agoMerge branch 'rr/test-use-shell-path-not-shell' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:27:28 +0000 (10:27 -0700)]
Merge branch 'rr/test-use-shell-path-not-shell' into maint

* rr/test-use-shell-path-not-shell:
  test-lib: use $SHELL_PATH, not $SHELL

8 years agoMerge branch 'rr/test-make-sure-we-have-git' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:27:21 +0000 (10:27 -0700)]
Merge branch 'rr/test-make-sure-we-have-git' into maint

* rr/test-make-sure-we-have-git:
  t/test-lib: make sure Git has already been built

8 years agoMerge branch 'po/maint-docs' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:27:10 +0000 (10:27 -0700)]
Merge branch 'po/maint-docs' into maint

* po/maint-docs:
  Doc branch: show -vv option and alternative
  Doc clean: add See Also link
  Doc add: link gitignore
  Doc: separate gitignore pattern sources
  Doc: shallow clone deepens _to_ new depth

8 years agoMerge branch 'jc/ll-merge-binary-ours' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:26:51 +0000 (10:26 -0700)]
Merge branch 'jc/ll-merge-binary-ours' into maint

* jc/ll-merge-binary-ours:
  ll-merge: warn about inability to merge binary files only when we can't
  attr: "binary" attribute should choose built-in "binary" merge driver
  merge: teach -Xours/-Xtheirs to binary ll-merge driver

8 years agoMerge branch 'db/doc-custom-xmlto' into maint
Junio C Hamano [Wed, 17 Oct 2012 17:25:37 +0000 (10:25 -0700)]
Merge branch 'db/doc-custom-xmlto' into maint

* db/doc-custom-xmlto:
  Documentation/Makefile: Allow custom XMLTO binary

8 years agoMerge branch 'master' of https://github.com/nafmo/git-l10n-sv
Jiang Xin [Wed, 17 Oct 2012 01:38:30 +0000 (09:38 +0800)]
Merge branch 'master' of https://github.com/nafmo/git-l10n-sv

* 'master' of https://github.com/nafmo/git-l10n-sv:
  l10n: Update Swedish translation (1964t0f0u)

8 years agoMerge branch 'master' of git://github.com/vnwildman/git
Jiang Xin [Wed, 17 Oct 2012 01:37:30 +0000 (09:37 +0800)]
Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
  l10n: vi.po: update from v1.8.0-rc2-4-g42e55

8 years agol10n: vi.po: update from v1.8.0-rc2-4-g42e55
Tran Ngoc Quan [Wed, 17 Oct 2012 01:15:28 +0000 (08:15 +0700)]
l10n: vi.po: update from v1.8.0-rc2-4-g42e55

* translate 3 new messages
* review quotes

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
8 years agoDocumentation/RelNotes: remove "updated up to this revision" markers
Thomas Ackermann [Tue, 16 Oct 2012 17:26:23 +0000 (19:26 +0200)]
Documentation/RelNotes: remove "updated up to this revision" markers

These were used to keep track of the last commit a release notes
entry was written for, and should have been removed when cutting
the final release.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoUpdate draft release notes to 1.8.0
Junio C Hamano [Tue, 16 Oct 2012 20:27:23 +0000 (13:27 -0700)]
Update draft release notes to 1.8.0

We are almost there...

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jk/maint-http-half-auth-push'
Junio C Hamano [Tue, 16 Oct 2012 18:44:37 +0000 (11:44 -0700)]
Merge branch 'jk/maint-http-half-auth-push'

Fixes a regression in maint-1.7.11 (v1.7.11.7), maint (v1.7.12.1)
and master (v1.8.0-rc0).

* jk/maint-http-half-auth-push:
  http: fix segfault in handle_curl_result

8 years agorefs: lock symref that is to be deleted, not its target
René Scharfe [Tue, 16 Oct 2012 10:22:15 +0000 (12:22 +0200)]
refs: lock symref that is to be deleted, not its target

When delete_ref is called on a symref then it locks its target and then
either deletes the target or the symref, depending on whether the flag
REF_NODEREF was set in the parameter delopt.

Instead, simply pass the flag to lock_ref_sha1_basic, which will then
either lock the target or the symref, and delete the locked ref.

This reimplements part of eca35a25 (Fix git branch -m for symrefs.).

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agol10n: Update Swedish translation (1964t0f0u)
Peter Krefting [Tue, 16 Oct 2012 07:38:11 +0000 (08:38 +0100)]
l10n: Update Swedish translation (1964t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
8 years agol10n: Update git.pot (3 new, 6 removed messages)
Jiang Xin [Tue, 16 Oct 2012 00:39:10 +0000 (08:39 +0800)]
l10n: Update git.pot (3 new, 6 removed messages)

This po/git.pot update is generated from v1.8.0-rc2-4-g42e55.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
8 years agoMerge branch 'master' of git://github.com/vnwildman/git
Jiang Xin [Tue, 16 Oct 2012 00:31:22 +0000 (08:31 +0800)]
Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
  l10n: vi.po: update translation upto cc76011

8 years agol10n: vi.po: update translation upto cc76011
Tran Ngoc Quan [Mon, 15 Oct 2012 07:35:49 +0000 (14:35 +0700)]
l10n: vi.po: update translation upto cc76011

* translate all new messages (100%)
* review some others

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
8 years agoMerge branch 'maint'
Junio C Hamano [Sun, 14 Oct 2012 06:05:54 +0000 (23:05 -0700)]
Merge branch 'maint'

* maint:
  Fix spelling error in post-receive-email hook

8 years agoFix spelling error in post-receive-email hook
Richard Fearn [Sat, 13 Oct 2012 22:32:50 +0000 (23:32 +0100)]
Fix spelling error in post-receive-email hook

Signed-off-by: Richard Fearn <richardfearn@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'maint'
Junio C Hamano [Fri, 12 Oct 2012 18:36:06 +0000 (11:36 -0700)]
Merge branch 'maint'

* maint:
  gitweb.cgi: fix "comitter_tz" typo in feed

8 years agohttp: fix segfault in handle_curl_result
Jeff King [Fri, 12 Oct 2012 06:22:49 +0000 (02:22 -0400)]
http: fix segfault in handle_curl_result

When we create an http active_request_slot, we can set its
"results" pointer back to local storage. The http code will
fill in the details of how the request went, and we can
access those details even after the slot has been cleaned
up.

Commit 8809703 (http: factor out http error code handling)
switched us from accessing our local results struct directly
to accessing it via the "results" pointer of the slot. That
means we're accessing the slot after it has been marked as
finished, defeating the whole purpose of keeping the results
storage separate.

Most of the time this doesn't matter, as finishing the slot
does not actually clean up the pointer. However, when using
curl's multi interface with the dumb-http revision walker,
we might actually start a new request before handing control
back to the original caller. In that case, we may reuse the
slot, zeroing its results pointer, and leading the original
caller to segfault while looking for its results inside the
slot.

Instead, we need to pass a pointer to our local results
storage to the handle_curl_result function, rather than
relying on the pointer in the slot struct. This matches what
the original code did before the refactoring (which did not
use a separate function, and therefore just accessed the
results struct directly).

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