git.git
12 years agoMakefile: update scripts when build-time parameters change
Jeff King [Wed, 20 Jun 2012 18:32:16 +0000 (14:32 -0400)]
Makefile: update scripts when build-time parameters change

Currently, running:

  make SHELL_PATH=/bin/bash &&
  make SHELL_PATH=/bin/sh

will not rebuild any shell scripts in the second command,
leading to incorrect results when building from an unclean
working directory.

This patch introduces a new dependency meta-file to notice
the change.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: do not replace @@GIT_VERSION@@ in shell scripts
Jeff King [Wed, 20 Jun 2012 18:32:10 +0000 (14:32 -0400)]
Makefile: do not replace @@GIT_VERSION@@ in shell scripts

No shell script actually uses the replacement (it is used in
some perl scripts, but cmd_munge_script only handles shell
scripts). We can also therefore drop the dependency on
GIT-VERSION-FILE.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: split prefix flags from GIT-CFLAGS
Jeff King [Wed, 20 Jun 2012 18:31:55 +0000 (14:31 -0400)]
Makefile: split prefix flags from GIT-CFLAGS

Most of the build targets do not care about the setting of
$prefix (or its derivative variables), but will be rebuilt
if the prefix changes. For most setups this doesn't matter
(they set prefix once and never change it), but for a setup
which puts each branch or version in its own prefix, this
unnecessarily causes a full rebuild whenever the branc is
changed.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: be silent when only GIT_USER_AGENT changes
Jonathan Nieder [Sat, 7 Jul 2012 04:42:11 +0000 (23:42 -0500)]
Makefile: be silent when only GIT_USER_AGENT changes

To avoid noise during builds, unlike the GIT-CFLAGS rule which prints
"* new build flags or prefix" so the operator knows why all files are
being rebuilt when it changes, GIT-USER-AGENT generation is silent.

If this code breaks and a target depending on GIT-USER-AGENT ends up
being rebuilt when it shouldn't be, the full dependency chain can be
retrieved with "make --debug=b".

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: split GIT_USER_AGENT from GIT-CFLAGS
Jeff King [Wed, 20 Jun 2012 18:31:51 +0000 (14:31 -0400)]
Makefile: split GIT_USER_AGENT from GIT-CFLAGS

The default user-agent depends on the GIT_VERSION, which
means that anytime you switch versions, it causes a full
rebuild. Instead, let's split it out into its own file and
restrict the dependency to version.o.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: do not replace @@GIT_USER_AGENT@@ in scripts
Jeff King [Wed, 20 Jun 2012 18:31:42 +0000 (14:31 -0400)]
Makefile: do not replace @@GIT_USER_AGENT@@ in scripts

No scripts actually care about this replacement. This was
erroneously added by 42dcbb7 (version: add git_user_agent function,
2012-06-02).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: apply dependencies consistently to sparse/asm targets
Jeff King [Wed, 20 Jun 2012 18:31:33 +0000 (14:31 -0400)]
Makefile: apply dependencies consistently to sparse/asm targets

When a C file "foo.c" depends on a generated header file, we
note the dependency for the "foo.o" target. However, we
should also note it for other targets that are built from
foo.c, like "foo.sp" and "foo.s". These tend to be missed
because the latter two are not part of the default build,
and are typically built after a regular build which will
generate the header.  Let's be consistent about including
them in dependencies.

This also makes us more consistent with nearby lines which
tack on EXTRA_CPPFLAGS when building certain files.  These
flags may sometimes require extra dependencies to be added
(e.g., like GIT-VERSION-FILE; this is not the case for any
of the updated lines in this patch, but it is establishing a
style that will be used in later patches). Technically the
".sp" and ".s" targets do not care about these dependencies,
because they are force-built (".sp" because it is a phony
target, and ".s" because we explicitly force a rebuild).

Since the blocks in question are about communicating "things
built from foo.c depend on these flags", it frees the reader
from having to know or care more about how those targets are
implemented, and why it is OK for only "foo.o" to depend on
GIT-VERSION-FILE while "foo.sp" and "foo.s" both are
impacted by $(GIT_VERSION). And it helps future-proof us if
those force-build details should ever change.

This patch explicitly does not update the static header
dependencies used when COMPUTED_HEADER_DEPENDENCIES is off.
They are similar to the GIT-VERSION-FILE case above, in that
technically "foo.s" would depend on its included headers,
but it is irrelevant because we force-build it anyway. So it
would be tempting to update them in the same way (for
readability and future-proofing). However, those rules are
meant as a fallback to the computed header dependencies,
which do not handle ".s" and ".sp" at all (and are a much
harder problem to solve, as gcc is the one generating those
dependency lists).

So let's leave that harder problem until (and if) somebody
wants to change the ".sp" and ".s" rules, and keep the
static header dependencies consistent with the computed
ones.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: do not have git.o depend on common-cmds.h
Jeff King [Wed, 20 Jun 2012 18:31:18 +0000 (14:31 -0400)]
Makefile: do not have git.o depend on common-cmds.h

This dependency has been stale since 70827b1 (Split up
builtin commands into separate files from git.c, 2006-04-21).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: fold XDIFF_H and VCSSVN_H into LIB_H
Jonathan Nieder [Sat, 7 Jul 2012 03:39:18 +0000 (22:39 -0500)]
Makefile: fold XDIFF_H and VCSSVN_H into LIB_H

Just like MISC_H (see previous commit), there is no reason to track
xdiff and vcs-svn headers separately from the rest of the headers.
The only purpose of these variables is to keep track of recompilation
dependencies.

As a pleasant side effect, folding these into LIB_H lets us stop
tracking GIT_OBJS and VCSSVN_TEST_OBJS separately from the list of all
OBJECTS.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: fold MISC_H into LIB_H
Jeff King [Wed, 20 Jun 2012 18:30:56 +0000 (14:30 -0400)]
Makefile: fold MISC_H into LIB_H

We keep a list of most of the header files in LIB_H, but
some are split out into MISC_H. The original point
of LIB_H was that it would force recompilation of C files
when any of the library headers changed. It was
over-encompassing, since not all C files included all of the
library headers; this made it simple to maintain, but meant
that we sometimes recompiled when it was not necessary.

Over time, some new headers were omitted from LIB_H, and
rules were added to the Makefile for a few specific targets
to explicitly depend on them. This avoided some unnecessary
recompilation at the cost of having to maintain the
dependency list of those targets manually (e.g., d349a03).

Later, we needed a complete list of headers from which we
should extract strings to localized. Thus 1b8b2e4 introduced
MISC_H to mention all header files not included in LIB_H,
and the concatenation of the two lists is fed to xgettext.
Headers mentioned as dependencies must also be manually
added to MISC_H to receive the benefits of localization.

Having to update multiple locations manually is a pain and
has led to errors. For example, see "git log -Swt-status.h
Makefile" for some back-and-forth between the two locations.
Or the fact that column.h was never added to MISC_H, and
therefore was not localized (which is fixed by this patch).
Moreover, the benefits of keeping these few headers out of
LIB_H is not that great, for two reasons:

  1. The better way to do this is by auto-computing the
     dependencies, which is more accurate and less work to
     maintain. If your compiler supports it, we turn on
     computed header dependencies by default these days. So
     these manual dependencies are used only for people who
     do not have gcc at all (which increases the chance of
     them becoming stale, as many developers will never even
     use them).

  2. Even if you do not have gcc, the manual header
     dependencies do not help all that much.  They obviously
     cannot help with an initial compilation (since their
     purpose is to avoid unnecessary recompilation when a
     header changes), which means they are only useful when
     building a new version of git in the working tree that
     held an existing build (e.g., after checkout or during a
     bisection). But since a change of a header in LIB_H
     will force recompilation, and given that the vast
     majority of headers are in LIB_H, most version changes
     will result in a full rebuild anyway.

Let's just fold MISC_H into LIB_H and get rid of these
manual rules. The worst case is some extra compilation, but
even that is unlikely to matter due to the reasons above.

The one exception is that we should keep common-cmds.h
separate. Because it is generated, the computed dependencies
do not handle it properly, and we must keep separate
individual dependencies on it. Let's therefore rename MISC_H
to GENERATED_H to make it more clear what should go in it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMakefile: sort LIB_H list
Jeff King [Wed, 20 Jun 2012 18:30:08 +0000 (14:30 -0400)]
Makefile: sort LIB_H list

This was mostly sorted already, but put things like
"cache-tree.h" after "cache.h", even though "-" comes before
"." (at least in the C locale). This will make it easier to
keep the list sorted later by piping it through "sort".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: get default user-agent from git_user_agent
Jeff King [Sat, 2 Jun 2012 19:03:08 +0000 (15:03 -0400)]
http: get default user-agent from git_user_agent

This means we will respect the GIT_USER_AGENT build-time
configuration and run-time environment variable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoversion: add git_user_agent function
Jeff King [Sat, 2 Jun 2012 19:01:12 +0000 (15:01 -0400)]
version: add git_user_agent function

This is basically a fancy way of saying "git/$GIT_VERSION",
except that it is overridable at build-time and through the
environment. Which means that people who don't want to
advertise their git version (for privacy or security
reasons) can tweak it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomove git_version_string into version.c
Jeff King [Sat, 2 Jun 2012 18:51:42 +0000 (14:51 -0400)]
move git_version_string into version.c

The global git_version_string currently lives in git.c, but
doesn't have anything to do with the git wrapper. Let's move
it into its own file, where it will be more appropriate to
build more version-related functions.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.11
Junio C Hamano [Fri, 1 Jun 2012 20:29:48 +0000 (13:29 -0700)]
Update draft release notes to 1.7.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'ef/maint-rebase-error-message'
Junio C Hamano [Fri, 1 Jun 2012 20:28:25 +0000 (13:28 -0700)]
Merge branch 'ef/maint-rebase-error-message'

By Erik Faye-Lund
* ef/maint-rebase-error-message:
  rebase: report invalid commit correctly

12 years agoMerge branch 'nh/empty-rebase'
Junio C Hamano [Fri, 1 Jun 2012 20:28:19 +0000 (13:28 -0700)]
Merge branch 'nh/empty-rebase'

* nh/empty-rebase:
  cherry-pick: regression fix for empty commits

12 years agoMerge branch 'vr/rebase-autosquash-does-not-imply-i'
Junio C Hamano [Fri, 1 Jun 2012 20:28:01 +0000 (13:28 -0700)]
Merge branch 'vr/rebase-autosquash-does-not-imply-i'

"git rebase -p" used to pay attention to rebase.autosquash which was
wrong.  "git rebase -p -i" should, but "git rebase -p" by itself
should not.

By Vincent van Ravesteijn
* vr/rebase-autosquash-does-not-imply-i:
  Do not autosquash in case of an implied interactive rebase

12 years agoMerge branch 'mm/levenstein-penalize-deletion-less'
Junio C Hamano [Fri, 1 Jun 2012 20:27:48 +0000 (13:27 -0700)]
Merge branch 'mm/levenstein-penalize-deletion-less'

"git tags" used to suggest "git stage" which was nonsense; it should
have favored "git tag".  Tweak the cost of deletion to correct it.

By Matthieu Moy
* mm/levenstein-penalize-deletion-less:
  Reduce cost of deletion in levenstein distance (4 -> 3)

12 years agoMerge branch 'jl/submodule-report-new-path-once'
Junio C Hamano [Fri, 1 Jun 2012 20:26:46 +0000 (13:26 -0700)]
Merge branch 'jl/submodule-report-new-path-once'

"git submodule init" used to report "registered for path ..."  even
for submodules that were registered earlier.

By Jens Lehmann
* jl/submodule-report-new-path-once:
  submodules: print "registered for path" message only once

12 years agoSync with maint
Junio C Hamano [Fri, 1 Jun 2012 20:26:16 +0000 (13:26 -0700)]
Sync with maint

12 years agoStart preparing for 1.7.10.4
Junio C Hamano [Fri, 1 Jun 2012 20:05:27 +0000 (13:05 -0700)]
Start preparing for 1.7.10.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'ef/http-o-depends-on-gvf' into maint
Junio C Hamano [Fri, 1 Jun 2012 20:22:44 +0000 (13:22 -0700)]
Merge branch 'ef/http-o-depends-on-gvf' into maint

A minor compilation fix.

By Erik Faye-Lund
* ef/http-o-depends-on-gvf:
  Makefile: add missing GIT-VERSION-FILE dependency

12 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Fri, 1 Jun 2012 20:21:37 +0000 (13:21 -0700)]
Merge git://github.com/git-l10n/git-po

By Jiang Xin (4) and others
via Jiang Xin
* git://github.com/git-l10n/git-po:
  l10n: Set nplurals of zh_CN.po from 1 to 2
  l10n: zh_CN.po: translate 323 new messages
  l10n: zh.CN.po: update by msgmerge git.pot
  First release translation for Vietnamese
  Init translation for Vietnamese
  l10n: New it.po file with 504 translations
  Update Swedish translation (728t0f0u)
  l10n: Update git.pot (41 new messages)

12 years agoMerge branch 'rs/maint-grep-F' into maint
Junio C Hamano [Fri, 1 Jun 2012 20:01:41 +0000 (13:01 -0700)]
Merge branch 'rs/maint-grep-F' into maint

"git grep -e '$pattern'", unlike the case where the patterns are read from
a file, did not treat individual lines in the given pattern argument as
separate regular expressions as it should.

By René Scharfe
* rs/maint-grep-F:
  grep: stop leaking line strings with -f
  grep: support newline separated pattern list
  grep: factor out do_append_grep_pat()
  grep: factor out create_grep_pat()

12 years agoMerge branch 'jk/ident-split-fix' into maint
Junio C Hamano [Fri, 1 Jun 2012 20:01:36 +0000 (13:01 -0700)]
Merge branch 'jk/ident-split-fix' into maint

An author/committer name that is a single character was mishandled as an
invalid name by mistake.

By Jeff King
* jk/ident-split-fix:
  fix off-by-one error in split_ident_line

12 years agoMerge branch 'jk/pretty-commit-header-incomplete-line' into maint
Junio C Hamano [Fri, 1 Jun 2012 20:01:33 +0000 (13:01 -0700)]
Merge branch 'jk/pretty-commit-header-incomplete-line' into maint

By Jeff King
* jk/pretty-commit-header-incomplete-line:
  avoid segfault when reading header of malformed commits

12 years agoMerge branch 'jk/format-person-part-buffer-limit' into maint
Junio C Hamano [Fri, 1 Jun 2012 19:59:58 +0000 (12:59 -0700)]
Merge branch 'jk/format-person-part-buffer-limit' into maint

By Jeff King
* jk/format-person-part-buffer-limit:
  pretty: avoid buffer overflow in format_person_part

12 years agoMerge branch 'ap/checkout-no-progress-for-non-tty' into maint
Junio C Hamano [Fri, 1 Jun 2012 19:59:50 +0000 (12:59 -0700)]
Merge branch 'ap/checkout-no-progress-for-non-tty' into maint

"git checkout" gave progress display even when the standard error
stream was not connected to the tty, which made little sense.

By Avery Pennarun
* ap/checkout-no-progress-for-non-tty:
  checkout: no progress messages if !isatty(2).

12 years agoMerge branch 'maint' of git://github.com/git-l10n/git-po into maint
Junio C Hamano [Fri, 1 Jun 2012 19:50:41 +0000 (12:50 -0700)]
Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

By Peter Krefting
via Peter Krefting
* 'maint' of git://github.com/git-l10n/git-po:
  Update Swedish translation (728t0f0u)

12 years agoi18n: apply: split to fix a partial i18n message
Jiang Xin [Thu, 31 May 2012 11:20:42 +0000 (19:20 +0800)]
i18n: apply: split to fix a partial i18n message

The 4th arg of "new mode (%o) of %s does not match old mode (%o)%s%s"
is blank string or string " of ". Even mark the string " of " for a
complete i18n, this message is still hard to translate right.

Split it into two slight different messages would make l10n teams happy.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: Set nplurals of zh_CN.po from 1 to 2
Jiang Xin [Thu, 31 May 2012 09:35:59 +0000 (17:35 +0800)]
l10n: Set nplurals of zh_CN.po from 1 to 2

In most cases, plural-forms are unnecessary for Chinese. For example,
"apple" and "apples" are the same in Chinese, they are both translated
as "苹果". While there are exceptions, e.g., the plural form of "he",
"she" and "it" is "they" in English. In Chinese, "他(he)", "她(she)",
and "它(it)" have plural forms too, they are "他们", "她们", and "它们".

But what makes 'nplurals=1' hard to work right for Chinese is:

    #: bundle.c:192
    #, c-format
    msgid "The bundle requires this ref"
    msgid_plural "The bundle requires these %d refs"

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agol10n: zh_CN.po: translate 323 new messages
Jiang Xin [Wed, 30 May 2012 04:19:47 +0000 (12:19 +0800)]
l10n: zh_CN.po: translate 323 new messages

Update Simplified Chinese translation for 134 fuzzy, 189 new messages
from Git v1.7.10.2-548-g9de96.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Zhuang Ya <zhuangya@me.com>
12 years agoMakefile: add missing GIT-VERSION-FILE dependency
Erik Faye-Lund [Thu, 31 May 2012 14:10:44 +0000 (16:10 +0200)]
Makefile: add missing GIT-VERSION-FILE dependency

In 20fc9bc (Set HTTP user agent to git/GIT_VERSION, 2006-04-04),
http.o started recording GIT_VERSION, but http.o wasn't added
to the list of files that depends on GIT-VERSION-FILE.

Fix this, so mofications to GIT-VERSION-FILE will result in an
updated user-agent string.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: zh.CN.po: update by msgmerge git.pot
Jiang Xin [Mon, 21 May 2012 01:35:47 +0000 (09:35 +0800)]
l10n: zh.CN.po: update by msgmerge git.pot

Update of zh_CN.po: 134 fuzzy translations, 189 untranslated messages.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agoFirst release translation for Vietnamese
Tran Ngoc Quan [Thu, 31 May 2012 02:16:38 +0000 (09:16 +0700)]
First release translation for Vietnamese

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
12 years agoInit translation for Vietnamese
Tran Ngoc Quan [Sun, 6 May 2012 02:42:49 +0000 (09:42 +0700)]
Init translation for Vietnamese

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agorebase: report invalid commit correctly
Erik Faye-Lund [Wed, 30 May 2012 16:39:42 +0000 (18:39 +0200)]
rebase: report invalid commit correctly

In 9765b6a (rebase: align variable content, 2011-02-06), the code
to error out was moved up one level. Unfortunately, one reference
to a function parameter wasn't rewritten as it should, leading to
the wrong parameter being errored on.

This error was propagated by 71786f5 (rebase: factor out reference
parsing, 2011-02-06) and merged in 78c6e0f (Merge branch
'mz/rebase', 2011-04-28).

Correct this by reporting $onto_name istead.

Reported-By: Manuela Hutter <manuelah@opera.com>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoINSTALL: update asciidoc recommendation
Jeff King [Wed, 30 May 2012 10:18:29 +0000 (06:18 -0400)]
INSTALL: update asciidoc recommendation

Since commit 6cf378f (docs: stop using asciidoc no-inline-literal),
we no longer support asciidoc versions less than 8.4.1,
which introduced inline literals. Note this in the INSTALL
document.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: New it.po file with 504 translations
Marco Paolone [Tue, 29 May 2012 21:03:51 +0000 (23:03 +0200)]
l10n: New it.po file with 504 translations

Signed-off-by: Marco Paolone <marcopaolone@gmail.com>
12 years agocherry-pick: regression fix for empty commits
Junio C Hamano [Wed, 30 May 2012 00:14:41 +0000 (17:14 -0700)]
cherry-pick: regression fix for empty commits

The earlier "--keep-redundant-commit" series broke "cherry-pick"
that is given a commit whose change is already in the current
history. Such a cherry-pick would result in an empty change, and
should stop with an error, telling the user that conflict resolution
may have made the result empty (which is exactly what is happening),
but we silently dropped the change on the floor without any message
nor non-zero exit code.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosubmodules: print "registered for path" message only once
Jens Lehmann [Mon, 28 May 2012 19:46:58 +0000 (21:46 +0200)]
submodules: print "registered for path" message only once

Since 2cd9de3e (submodule add: always initialize .git/config entry) the
message "Submodule '\$name' (\$url) registered for path '\$sm_path'" is
printed every time cmd_init() is called, e.g. each time "git submodule
update" is used with the --init option.

This was not intended and leads to bogus output which can confuse users
and build systems. Apart from that the $url variable was not set after the
first run which did the actual initialization and only "()" was printed
in subsequent runs where "($url)" was meant to inform the user about the
upstream repo.

Fix that by moving the say command in question into the if block where the
url is initialized, restoring the behavior that was in place before the
2cd9de3e commit. While at it also remove the comment which still describes
the logic used before 2cd9de3e and add a comment about how things work now.

Reported-by: Nicolas Viennot and Sid Nair <nicolas@viennot.com>
Reported-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge git://bogomips.org/git-svn
Junio C Hamano [Tue, 29 May 2012 20:47:55 +0000 (13:47 -0700)]
Merge git://bogomips.org/git-svn

By Jonathan Nieder
via Eric Wong
* git://bogomips.org/git-svn:
  git-svn: make Git::SVN::Fetcher a separate file
  git-svn: rename SVN::Git::* packages to Git::SVN::*
  git-svn: move Git::SVN::Prompt into its own file

12 years agot5701: modernize style
Jeff King [Sat, 26 May 2012 03:42:53 +0000 (23:42 -0400)]
t5701: modernize style

This test is pretty old and did not follow some of our more
modern best practices. In particular:

  1. It chdir'd all over the place, leaving later tests to
     deal with the fallout. Do our chdirs in subshells
     instead.

  2. It did not use test_must_fail.

  3. It did not use test_line_count.

  4. It checked for the non-existence of a ref by looking in the
     .git/refs directory (since we pack refs during clone
     these days, this will always be succeed, making the
     test useless).

     Note that one call to "-e .git/refs/..." remains,
     because it is checking for the existence of a symbolic
     ref, not a ref itself.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'va/git-p4-test'
Junio C Hamano [Tue, 29 May 2012 20:09:20 +0000 (13:09 -0700)]
Merge branch 'va/git-p4-test'

By Vitor Antunes
* va/git-p4-test:
  git-p4: Clean up branch test cases
  git-p4: Verify detection of "empty" branch creation
  git-p4: Test changelists touching two branches

12 years agoMerge branch 'jk/ident-gecos-strbuf'
Junio C Hamano [Tue, 29 May 2012 20:09:13 +0000 (13:09 -0700)]
Merge branch 'jk/ident-gecos-strbuf'

Fixes quite a lot of brokenness when ident information needs to be taken
from the system and cleans up the code.

By Jeff King
* jk/ident-gecos-strbuf: (22 commits)
  format-patch: do not use bogus email addresses in message ids
  ident: reject bogus email addresses with IDENT_STRICT
  ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT
  format-patch: use GIT_COMMITTER_EMAIL in message ids
  ident: let callers omit name with fmt_indent
  ident: refactor NO_DATE flag in fmt_ident
  ident: reword empty ident error message
  format-patch: refactor get_patch_filename
  ident: trim whitespace from default name/email
  ident: use a dynamic strbuf in fmt_ident
  ident: use full dns names to generate email addresses
  ident: report passwd errors with a more friendly message
  drop length limitations on gecos-derived names and emails
  ident: don't write fallback username into git_default_name
  fmt_ident: drop IDENT_WARN_ON_NO_NAME code
  format-patch: use default email for generating message ids
  ident: trim trailing newline from /etc/mailname
  move git_default_* variables to ident.c
  move identity config parsing to ident.c
  fmt-merge-msg: don't use static buffer in record_person
  ...

12 years agoMerge branch 'jk/fetch-pack-remove-dups-optim'
Junio C Hamano [Tue, 29 May 2012 20:09:08 +0000 (13:09 -0700)]
Merge branch 'jk/fetch-pack-remove-dups-optim'

The way "fetch-pack" that is given multiple references to fetch tried to
remove duplicates was very inefficient.

By Jeff King
* jk/fetch-pack-remove-dups-optim:
  fetch-pack: sort incoming heads list earlier
  fetch-pack: avoid quadratic loop in filter_refs
  fetch-pack: sort the list of incoming refs
  add sorting infrastructure for list refs
  fetch-pack: avoid quadratic behavior in remove_duplicates
  fetch-pack: sort incoming heads

12 years agoMerge branch 'rs/refs-string-slice'
Junio C Hamano [Tue, 29 May 2012 20:09:02 +0000 (13:09 -0700)]
Merge branch 'rs/refs-string-slice'

Avoid unnecessary temporary allocations while looking for matching refs
inside refs API.

By René Scharfe (3) and Junio C Hamano (1)
* rs/refs-string-slice:
  refs: do not create ref_entry when searching
  refs: use strings directly in find_containing_dir()
  refs: convert parameter of create_dir_entry() to length-limited string
  refs: convert parameter of search_ref_dir() to length-limited string

12 years agoMerge branch 'mh/fetch-pack-constness'
Junio C Hamano [Tue, 29 May 2012 20:08:53 +0000 (13:08 -0700)]
Merge branch 'mh/fetch-pack-constness'

Tighten constness of some local variables in a callchain.

By Michael Haggerty
* mh/fetch-pack-constness:
  cmd_fetch_pack(): respect constness of argv parameter
  cmd_fetch_pack(): combine the loop termination conditions
  cmd_fetch_pack(): handle non-option arguments outside of the loop
  cmd_fetch_pack(): declare dest to be const

12 years agoMerge branch 'mh/ref-api-lazy-loose'
Junio C Hamano [Tue, 29 May 2012 20:08:35 +0000 (13:08 -0700)]
Merge branch 'mh/ref-api-lazy-loose'

The code to lazily read loose refs unnecessarily read the refs in a
subhierarchy by mistake when we free the data for the subhierarchy.

By Michael Haggerty
* mh/ref-api-lazy-loose:
  free_ref_entry(): do not trigger reading of loose refs

12 years agoMerge branch 'ng/pack-objects-cleanup'
Junio C Hamano [Tue, 29 May 2012 20:08:30 +0000 (13:08 -0700)]
Merge branch 'ng/pack-objects-cleanup'

By Nguyễn Thái Ngọc Duy
* ng/pack-objects-cleanup:
  pack-objects: refactor write_object() into helper functions
  pack-objects, streaming: turn "xx >= big_file_threshold" to ".. > .."

12 years agoDo not autosquash in case of an implied interactive rebase
Vincent van Ravesteijn [Thu, 24 May 2012 13:57:26 +0000 (13:57 +0000)]
Do not autosquash in case of an implied interactive rebase

The option to autosquash is only used in case of an interactive rebase.
When merges are preserved, rebase uses an interactive rebase internally,
but in this case autosquash should still be disabled.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoReduce cost of deletion in levenstein distance (4 -> 3)
Matthieu Moy [Sun, 27 May 2012 16:02:58 +0000 (18:02 +0200)]
Reduce cost of deletion in levenstein distance (4 -> 3)

Before this patch, a character deletion has the same cost as 2 swaps, or
4 additions, so Git prefers suggesting a completely scrambled command
name to removing a character. For example, "git tags" suggests "stage",
but not "tag".

By setting the deletion cost to 3, we keep it higher than swaps or
additions, but prefer 1 deletion to 2 swaps. "git tags" now suggests
"tag" in addition to staged.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: Clean up branch test cases
Vitor Antunes [Sat, 26 May 2012 09:56:06 +0000 (10:56 +0100)]
git-p4: Clean up branch test cases

Correct submit description in one test and remove not required commands
from another.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: Verify detection of "empty" branch creation
Vitor Antunes [Sat, 26 May 2012 09:56:05 +0000 (10:56 +0100)]
git-p4: Verify detection of "empty" branch creation

Current implementation of new branch parent detection works on the
principle that the new branch is a complete integration, with no
changes, of the original files.
This test shows this deficiency in the particular case when the new
branch is created from a subset of the original files.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: Test changelists touching two branches
Vitor Antunes [Sat, 26 May 2012 09:56:04 +0000 (10:56 +0100)]
git-p4: Test changelists touching two branches

It is possible to modify two different branches in P4 in a single
changelist. git-p4 correctly detects this and commits the relevant
changes to the different branches separately. This test proves that and
avoid future regressions in this behavior.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Jiang Xin [Tue, 29 May 2012 08:48:05 +0000 (16:48 +0800)]
Merge branch 'maint'

By Peter Krefting
via Peter Krefting
* maint:
  Update Swedish translation (728t0f0u)

12 years agoUpdate Swedish translation (728t0f0u)
Peter Krefting [Tue, 29 May 2012 08:28:34 +0000 (09:28 +0100)]
Update Swedish translation (728t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
12 years agogit-svn: make Git::SVN::Fetcher a separate file
Jonathan Nieder [Mon, 28 May 2012 07:03:58 +0000 (02:03 -0500)]
git-svn: make Git::SVN::Fetcher a separate file

This patch removes a chunk of code (the Git::SVN::Fetcher consumer of
libsvn's tree delta protocol) from git-svn.perl and documents its
interface so the hurried reader does not have to read that code right
away.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agogit-svn: rename SVN::Git::* packages to Git::SVN::*
Jonathan Nieder [Mon, 28 May 2012 07:00:46 +0000 (02:00 -0500)]
git-svn: rename SVN::Git::* packages to Git::SVN::*

Using names in the Git:: namespace means these cannot conflict with a
hypothetical binding teaching Subversion to interact with git
repositories.

Currently the packages are private to git-svn.perl so the choice of
name isn't likely to make much difference.  This change is mainly
meant as preparation for splitting out the packages in question as
modules on the public search path.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agogit-svn: move Git::SVN::Prompt into its own file
Jonathan Nieder [Mon, 28 May 2012 00:39:01 +0000 (19:39 -0500)]
git-svn: move Git::SVN::Prompt into its own file

git-svn.perl is very long (around 6500 lines) and although it is
nicely split into modules, some new readers do not even notice --- it
is too distracting to see all this functionality collected in a single
file.

Splitting it into multiple files would make it easier for people
to read individual modules straight through and to experiment with
components separately.

Let's start with Git::SVN::Prompt.  For simplicity, we install this as
a module in the standard search path, just like the existing Git and
Git::I18N modules.  In the process, add a manpage explaining its
interface and that it is not likely to be useful for other projects to
avoid confusion.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
12 years agoGit 1.7.11-rc0 v1.7.11-rc0
Junio C Hamano [Fri, 25 May 2012 19:19:45 +0000 (12:19 -0700)]
Git 1.7.11-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'sp/sh-windows-pwd'
Junio C Hamano [Fri, 25 May 2012 19:08:26 +0000 (12:08 -0700)]
Merge branch 'sp/sh-windows-pwd'

* sp/sh-windows-pwd:
  git-sh-setup: define workaround wrappers before they are used

12 years agoMerge branch 'mh/test-keep-prove-cache'
Junio C Hamano [Fri, 25 May 2012 19:08:21 +0000 (12:08 -0700)]
Merge branch 'mh/test-keep-prove-cache'

By Michael Haggerty
* mh/test-keep-prove-cache:
  t/Makefile: retain cache t/.prove across prove runs

12 years agoMerge branch 'rs/dir-strbuf-read-recursive-fix'
Junio C Hamano [Fri, 25 May 2012 19:07:52 +0000 (12:07 -0700)]
Merge branch 'rs/dir-strbuf-read-recursive-fix'

Simplification for the codepath to read directories recursively.

By René Scharfe
* rs/dir-strbuf-read-recursive-fix:
  dir: simplify fill_directory()
  dir: respect string length argument of read_directory_recursive()

12 years agoMerge branch 'fc/git-complete-helper-fix'
Junio C Hamano [Fri, 25 May 2012 19:07:09 +0000 (12:07 -0700)]
Merge branch 'fc/git-complete-helper-fix'

Resurrects old behaviour of _git/_gitk for external users.

12 years agoMerge branch 'ap/checkout-no-progress-for-non-tty'
Junio C Hamano [Fri, 25 May 2012 19:06:34 +0000 (12:06 -0700)]
Merge branch 'ap/checkout-no-progress-for-non-tty'

The progress indicator for a large "git checkout" was sent to stderr
even if it is not a terminal.

12 years agoMerge branch 'jk/format-person-part-buffer-limit'
Junio C Hamano [Fri, 25 May 2012 19:06:16 +0000 (12:06 -0700)]
Merge branch 'jk/format-person-part-buffer-limit'

Avoid buffer overflow in format_person_part() function

12 years agoMerge branch 'jk/pretty-commit-header-incomplete-line'
Junio C Hamano [Fri, 25 May 2012 19:05:35 +0000 (12:05 -0700)]
Merge branch 'jk/pretty-commit-header-incomplete-line'

Fixes error codepath when a malformed commit object has a header line
chomped in the middle.

12 years agoMerge branch 'jk/ident-split-fix'
Junio C Hamano [Fri, 25 May 2012 19:05:26 +0000 (12:05 -0700)]
Merge branch 'jk/ident-split-fix'

An author/committer name that is a single character was mishandled as an
invalid name by mistake.

12 years agoMerge branch 'rs/xdiff-fast-hash-fix'
Junio C Hamano [Fri, 25 May 2012 19:05:02 +0000 (12:05 -0700)]
Merge branch 'rs/xdiff-fast-hash-fix'

Fixes compilation issue on 32-bit in an earlier series.

12 years agoMerge branch 'mh/ref-api'
Junio C Hamano [Fri, 25 May 2012 19:04:36 +0000 (12:04 -0700)]
Merge branch 'mh/ref-api'

Fixes a performance regression in the earlier series.

12 years agoMerge branch 'rs/maint-grep-F'
Junio C Hamano [Fri, 25 May 2012 19:04:19 +0000 (12:04 -0700)]
Merge branch 'rs/maint-grep-F'

"git grep -e '$pattern'", unlike the case where the patterns are read from
a file, did not treat individual lines in the given pattern argument as
separate regular expressions as it should.

12 years agoSync with 1.7.10.3
Junio C Hamano [Fri, 25 May 2012 18:36:25 +0000 (11:36 -0700)]
Sync with 1.7.10.3

12 years agoGit 1.7.10.3 v1.7.10.3
Junio C Hamano [Fri, 25 May 2012 18:28:43 +0000 (11:28 -0700)]
Git 1.7.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'hv/submodule-alt-odb' into maint
Junio C Hamano [Fri, 25 May 2012 18:26:38 +0000 (11:26 -0700)]
Merge branch 'hv/submodule-alt-odb' into maint

When a submodule repository uses alternate object store mechanism, some
commands that were started from the superproject did not notice it and
failed with "No such object" errors.  The subcommands of "git submodule"
command that recursed into the submodule in a separate process were OK;
only the ones that cheated and peeked directly into the submodule's
repository from the primary process were affected.

By Heiko Voigt
* hv/submodule-alt-odb:
  teach add_submodule_odb() to look for alternates

12 years agoMerge branch 'bp/diff-no-index-strbuf-fix' into maint
Junio C Hamano [Fri, 25 May 2012 18:25:36 +0000 (11:25 -0700)]
Merge branch 'bp/diff-no-index-strbuf-fix' into maint

The directory path used in "git diff --no-index", when it recurses
down, was broken with a recent update after v1.7.10.1 release.

By Bobby Powers
* bp/diff-no-index-strbuf-fix:
  diff --no-index: don't leak buffers in queue_diff
  diff --no-index: reset temporary buffer lengths on directory iteration

12 years agofmt-merge-message: add empty line between tag and signature verification
Linus Torvalds [Fri, 25 May 2012 16:02:03 +0000 (09:02 -0700)]
fmt-merge-message: add empty line between tag and signature verification

When adding the information from a tag, put an empty line between the
message of the tag and the commented-out signature verification
information.

At least for the kernel workflow, I often end up re-formatting the message
that people send me in the tag data. In that situation, putting the tag
message and the tag signature verification back-to-back then means that
normal editor "reflow parapgraph" command will get confused and think that
the signature is a continuation of the last message paragraph.

So I always end up having to first add an empty line, and then go back and
reflow the last paragraph. Let's just do it in git directly.

The extra vertical space also makes the verification visually stand out
more from the user-supplied message, so it looks a bit more readable to me
too, but that may be just an odd personal preference.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoconfig doc: remove confusion about relative GIT_DIR from FILES section
Jonathan Nieder [Fri, 25 May 2012 18:12:04 +0000 (13:12 -0500)]
config doc: remove confusion about relative GIT_DIR from FILES section

From the FILES section of the git-config(1) manual:

$GIT_DIR/config::
Repository specific configuration file. (The filename is
of course relative to the repository root, not the working
directory.)

That's confusing because $GIT_DIR really is relative to the working
directory.

$ GIT_DIR=.git GIT_EDITOR='pwd; echo editing'
$ export GIT_DIR GIT_EDITOR
$ git config --edit --local
/home/jrn/src/git/Documentation
editing .git/config

It turns out that the comment is a remnant from older days when the
heading said ".git/config" (which is indeed relative to the top of the
worktree).

It was only when the heading was changed to refer more precisely to
<git dir>/config (see v1.5.3.2~18, AsciiDoc tweak to avoid leading
dot, 2007-09-14) that the parenthesis stopped making sense.  Remove
it.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoformat-patch: do not use bogus email addresses in message ids
Jeff King [Thu, 24 May 2012 23:32:52 +0000 (19:32 -0400)]
format-patch: do not use bogus email addresses in message ids

We can ask git_committer_info to be strict about coming up
with an email, which will die automatically on a poorly
configured machine. This is better than letting invalid
message-ids into the wild.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoident: reject bogus email addresses with IDENT_STRICT
Jeff King [Thu, 24 May 2012 23:32:37 +0000 (19:32 -0400)]
ident: reject bogus email addresses with IDENT_STRICT

If we come up with a hostname like "foo.(none)" because the
user's machine is not fully qualified, we should reject this
in strict mode (e.g., when we are making a commit object),
just as we reject an empty gecos username.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSync with maint
Junio C Hamano [Fri, 25 May 2012 00:37:40 +0000 (17:37 -0700)]
Sync with maint

By Jeff King (1) and Junio C Hamano (1)
* maint:
  Update draft release notes to 1.7.10.3
  osxkeychain: pull make config from top-level directory

12 years agoUpdate draft release notes to 1.7.10.3
Junio C Hamano [Fri, 25 May 2012 00:37:29 +0000 (17:37 -0700)]
Update draft release notes to 1.7.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jk/maint-status-porcelain-z-b' into maint
Junio C Hamano [Fri, 25 May 2012 00:32:30 +0000 (17:32 -0700)]
Merge branch 'jk/maint-status-porcelain-z-b' into maint

"git status --porcelain" ignored "--branch" option by mistake.  The output
for "git status --branch -z" was also incorrect and did not terminate the
record for the current branch name with NUL as asked.

By Jeff King
* jk/maint-status-porcelain-z-b:
  status: respect "-b" for porcelain format
  status: fix null termination with "-b"
  status: refactor null_termination option
  commit: refactor option parsing

12 years agoident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT
Jeff King [Thu, 24 May 2012 23:28:40 +0000 (19:28 -0400)]
ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT

Callers who ask for ERROR_ON_NO_NAME are not so much
concerned that the name will be blank (because, after all,
we will fall back to using the username), but rather it is a
check to make sure that low-quality identities do not end up
in things like commit messages or emails (whereas it is OK
for them to end up in things like reflogs).

When future commits add more quality checks on the identity,
each of these callers would want to use those checks, too.
Rather than modify each of them later to add a new flag,
let's refactor the flag.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoformat-patch: use GIT_COMMITTER_EMAIL in message ids
Jeff King [Thu, 24 May 2012 23:28:25 +0000 (19:28 -0400)]
format-patch: use GIT_COMMITTER_EMAIL in message ids

Before commit 43ae9f4, we generated the tail of a message id
by calling git_committer_info and parsing the email out of
the result. 43ae9f4 changed to use ident_default_email
directly, so we didn't have to bother with parsing. As a
side effect, it meant we no longer used GIT_COMMITTER_EMAIL
at all.

In general, this is probably reasonable behavior. Either the
default email is sane on your system, or you are using
user.email to provide something sane. The exception is if
you rely on GIT_COMMITTER_EMAIL being set all the time to
override the bogus generated email.

This is unlikely to match anybody's real-life setup, but we
do use it in the test environment. And furthermore, it's
what we have always done, and the change in 43ae9f4 was
about cleaning up, not fixing any bug; we should be
conservative and keep the behavior identical.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoident: let callers omit name with fmt_indent
Jeff King [Thu, 24 May 2012 23:27:24 +0000 (19:27 -0400)]
ident: let callers omit name with fmt_indent

Most callers want to see all of "$name <$email> $date", but
a few want only limited parts, omitting the date, or even
the name. We already have IDENT_NO_DATE to handle the date
part, but there's not a good option for getting just the
email. Callers have to done one of:

  1. Call ident_default_email; this does not respect
     environment variables, nor does it promise to trim
     whitespace or other crud from the result.

  2. Call git_{committer,author}_info; this returns the name
     and email, leaving the caller to parse out the wanted
     bits.

This patch adds IDENT_NO_NAME; it stops short of adding
IDENT_NO_EMAIL, as no callers want it (nor are likely to),
and it complicates the error handling of the function.

When no name is requested, the angle brackets (<>) around
the email address are also omitted.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoident: refactor NO_DATE flag in fmt_ident
Jeff King [Thu, 24 May 2012 23:26:50 +0000 (19:26 -0400)]
ident: refactor NO_DATE flag in fmt_ident

As a short-hand, we extract this flag into the local
variable "name_addr_only". It's more accurate to simply
negate this and refer to it as "want_date", which will be
less confusing when we add more NO_* flags.

While we're touching this part of the code, let's move the
call to ident_default_date() only when we are actually going
to use it, not when we have NO_DATE set, or when we get a
date from the environment.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoident: reword empty ident error message
Jeff King [Thu, 24 May 2012 23:26:32 +0000 (19:26 -0400)]
ident: reword empty ident error message

There's on point in printing the name, since it is by
definition the empty string if we have reached this code
path. Instead, let's be more clear that we are complaining
about the empty name, but still show the email address that
it is attached to (since that may provide some context to
the user).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoAvoid sorting if references are added to ref_cache in order
Michael Haggerty [Thu, 24 May 2012 12:16:50 +0000 (14:16 +0200)]
Avoid sorting if references are added to ref_cache in order

The old code allowed many references to be efficiently added to a
single directory, because it just appended the references to the
containing directory unsorted without doing any searching (and
therefore without requiring any intermediate sorting).  But the old
code was inefficient when a large number of subdirectories were added
to a directory, because the directory always had to be searched to see
if the new subdirectory already existed, and this search required the
directory to be sorted first.  The same was repeated for every new
subdirectory, so the time scaled like O(N^2), where N is the number of
subdirectories within a single directory.

In practice, references are often added to the ref_cache in
lexicographic order, for example when reading the packed-refs file.
So build some intelligence into add_entry_to_dir() to optimize for the
case of references and/or subdirectories being added in lexicographic
order: if the existing entries were already sorted, and the new entry
comes after the last existing entry, then adjust ref_dir::sorted to
reflect the fact that the ref_dir is still sorted.

Thanks to Peff for pointing out the performance regression that
inspired this change.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocheckout: no progress messages if !isatty(2).
Avery Pennarun [Thu, 24 May 2012 06:12:24 +0000 (02:12 -0400)]
checkout: no progress messages if !isatty(2).

If stderr isn't a tty, we shouldn't be printing incremental progress
messages.  In particular, this affects 'git checkout -f . >&logfile'
unless you provided -q.  And git-new-workdir has no way to provide -q.

It would probably be better to have progress.c check isatty(2) all the time,
but that wouldn't allow things like 'git push --progress' to force progress
reporting to on, so I won't try to solve the general case right now.

Actual fix suggested by Jeff King.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoosxkeychain: pull make config from top-level directory
Jeff King [Wed, 23 May 2012 17:36:53 +0000 (13:36 -0400)]
osxkeychain: pull make config from top-level directory

The default compiler and cflags were mostly "works for me"
when I built the original version. We need to be much less
careful here than usual, because we know we are building
only on OS X.  But it's only polite to at least respect the
CFLAGS and CC definitions that the user may have provided
earlier.

While we're at it, let's update our definitions and rules to
be more like the top-level Makefile; default our CFLAGS to
include -O2, and make sure we use CFLAGS and LDFLAGS when
linking.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agofetch-pack: sort incoming heads list earlier
Jeff King [Thu, 24 May 2012 06:04:51 +0000 (02:04 -0400)]
fetch-pack: sort incoming heads list earlier

Commit 4435968 started sorting heads fed to fetch-pack so
that later commits could use more optimized algorithms;
commit 7db8d53 switched the remove_duplicates function to
such an algorithm.

Of course, the sorting is more effective if you do it
_before_ the algorithm in question.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.11
Junio C Hamano [Wed, 23 May 2012 20:54:23 +0000 (13:54 -0700)]
Update draft release notes to 1.7.11

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'rs/archive-tree-in-tip-simplify'
Junio C Hamano [Wed, 23 May 2012 20:35:22 +0000 (13:35 -0700)]
Merge branch 'rs/archive-tree-in-tip-simplify'

By René Scharfe
* rs/archive-tree-in-tip-simplify:
  archive-tar: keep const in checksum calculation
  archive: simplify refname handling

12 years agoMerge branch 'js/rev-parse-doc-fix'
Junio C Hamano [Wed, 23 May 2012 20:35:19 +0000 (13:35 -0700)]
Merge branch 'js/rev-parse-doc-fix'

By Jon Seymour
* js/rev-parse-doc-fix:
  rev-parse doc: --git-dir does not always show a relative path

12 years agoMerge branch 'js/rebase-i-p-test-fix'
Junio C Hamano [Wed, 23 May 2012 20:35:15 +0000 (13:35 -0700)]
Merge branch 'js/rebase-i-p-test-fix'

By Johannes Sixt
* js/rebase-i-p-test-fix:
  Fix t3411.3 to actually rebase something

12 years agoMerge branch 'bp/diff-no-index-strbuf-fix'
Junio C Hamano [Wed, 23 May 2012 20:35:12 +0000 (13:35 -0700)]
Merge branch 'bp/diff-no-index-strbuf-fix'

Fix regressions to "git diff --no-index" when it recurses down.

By Bobby Powers
* bp/diff-no-index-strbuf-fix:
  diff --no-index: don't leak buffers in queue_diff
  diff --no-index: reset temporary buffer lengths on directory iteration

12 years agoMerge branch 'hv/submodule-alt-odb'
Junio C Hamano [Wed, 23 May 2012 20:35:05 +0000 (13:35 -0700)]
Merge branch 'hv/submodule-alt-odb'

When peeking into object stores of submodules, the code forgot that they
might borrow objects from alternate object stores on their own.

By Heiko Voigt
* hv/submodule-alt-odb:
  teach add_submodule_odb() to look for alternates

12 years agoxdiff: import new 32-bit version of count_masked_bytes()
René Scharfe [Tue, 22 May 2012 20:36:57 +0000 (22:36 +0200)]
xdiff: import new 32-bit version of count_masked_bytes()

Import the latest 32-bit implementation of count_masked_bytes() from
Linux (arch/x86/include/asm/word-at-a-time.h).  It's shorter and avoids
overflows and negative numbers.

This fixes test failures on 32-bit, where negative partial results had
been shifted right using the "wrong" method (logical shift right instead
of arithmetic short right).  The compiler is free to chose the method,
so it was only wrong in the sense that it didn't work as intended by us.

Reported-by: Øyvind A. Holm <sunny@sunbase.org>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>