git
13 years agotag: accept multiple patterns for --list
Jeff King [Mon, 20 Jun 2011 16:59:28 +0000 (12:59 -0400)] 
tag: accept multiple patterns for --list

Until now, "git tag -l foo* bar*" would silently ignore the
second argument, showing only refs starting with "foo". It's
not just unfriendly not to take a second pattern; we
actually generated subtly wrong results (from the user's
perspective) because some of the requested tags were
omitted.

This patch allows an arbitrary number of patterns on the
command line; if any of them matches, the ref is shown.

While we're tweaking the documentation, let's also make it
clear that the pattern is fnmatch.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'di/no-no-existant'
Junio C Hamano [Sun, 19 Jun 2011 23:01:54 +0000 (16:01 -0700)] 
Merge branch 'di/no-no-existant'

* di/no-no-existant:
  Fix typo: existant->existent

13 years agoMerge branch 'maint'
Junio C Hamano [Sun, 19 Jun 2011 23:01:51 +0000 (16:01 -0700)] 
Merge branch 'maint'

* maint:
  builtin/gc.c: add missing newline in message

13 years agobuiltin/gc.c: add missing newline in message
Andreas Schwab [Sun, 19 Jun 2011 08:03:26 +0000 (10:03 +0200)] 
builtin/gc.c: add missing newline in message

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorebase -i -p: include non-first-parent commits in todo list
Andrew Wong [Sat, 18 Jun 2011 22:12:01 +0000 (18:12 -0400)] 
rebase -i -p: include non-first-parent commits in todo list

Consider this graph:

        D---E    (topic, HEAD)
       /   /
  A---B---C      (master)
   \
    F            (topic2)

and the following three commands:
  1. git rebase -i -p A
  2. git rebase -i -p --onto F A
  3. git rebase -i -p B

Currently, (1) and (2) will pick B, D, C, and E onto A and F,
respectively.  However, (3) will only pick D and E onto B, but not C,
which is inconsistent with (1) and (2).  As a result, we cannot modify C
during the interactive-rebase.

The current behavior also creates a bug if we do:
  4. git rebase -i -p C

In (4), E is never picked.  And since interactive-rebase resets "HEAD"
to "onto" before picking any commits, D and E are lost after the
interactive-rebase.

This patch fixes the inconsistency and bug by ensuring that all children
of upstream are always picked.  This essentially reverts the commit:
  d80d6bc146232d81f1bb4bc58e5d89263fd228d4

When compiling the todo list, commits reachable from "upstream" should
never be skipped under any conditions.  Otherwise, we lose the ability
to modify them like (3), and create a bug like (4).

Two of the tests contain a scenario like (3).  Since the new behavior
added more commits for picking, these tests need to be updated to
account for the additional pick lines.  A new test has also been added
for (4).

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotests: link shell libraries into valgrind directory
Jeff King [Fri, 17 Jun 2011 20:36:32 +0000 (16:36 -0400)] 
tests: link shell libraries into valgrind directory

When we run tests under valgrind, we symlink anything
executable that starts with git-* or test-* into a special
valgrind bin directory, and then make that our
GIT_EXEC_PATH.

However, shell libraries like git-sh-setup do not have the
executable bit marked, and did not get symlinked.  This
means that any test looking for shell libraries in our
exec-path would fail to find them, even though that is a
fine thing to do when testing against a regular git build
(or in a git install, for that matter).

t2300 demonstrated this problem. The fix is to symlink these
shell libraries directly into the valgrind directory.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot/Makefile: pass test opts to valgrind target properly
Jeff King [Fri, 17 Jun 2011 08:29:57 +0000 (04:29 -0400)] 
t/Makefile: pass test opts to valgrind target properly

The valgrind target just reinvokes make with GIT_TEST_OPTS
set to "--valgrind". However, it does this using an
environment variable, which means GIT_TEST_OPTS in your
config.mak would override it, and "make valgrind" would
simply run the test suite without valgrind on.

Instead, we should pass GIT_TEST_OPTS on the command-line,
overriding what's in config.mak, and take care to append to
whatever the user has there already.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'ab/i18n-scripts-basic'
Junio C Hamano [Fri, 17 Jun 2011 18:40:32 +0000 (11:40 -0700)] 
Merge branch 'ab/i18n-scripts-basic'

* ab/i18n-scripts-basic:
  sh-i18n--envsubst.c: do not #include getopt.h

13 years agosh-i18n--envsubst.c: do not #include getopt.h
Brandon Casey [Fri, 17 Jun 2011 18:19:26 +0000 (11:19 -0700)] 
sh-i18n--envsubst.c: do not #include getopt.h

The getopt.h header file is not used.  It's inclusion is left over from the
original version of this source.  Additionally, getopt.h does not exist on
all platforms (SunOS 5.7) and will cause a compilation failure.  So, let's
remove it.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoFix typo: existant->existent
Dmitry Ivankov [Thu, 16 Jun 2011 13:42:48 +0000 (19:42 +0600)] 
Fix typo: existant->existent

refs.c had a error message "Trying to write ref with nonexistant object".
And no tests relied on the wrong spelling.
Also typo was present in some test scripts internals, these tests still pass.

Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.6-rc2 v1.7.6-rc2
Junio C Hamano [Thu, 16 Jun 2011 16:21:36 +0000 (09:21 -0700)] 
Git 1.7.6-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib: allow feeding more than 4GB in one go
Junio C Hamano [Fri, 10 Jun 2011 19:15:17 +0000 (12:15 -0700)] 
zlib: allow feeding more than 4GB in one go

Update zlib_post_call() that adjusts the wrapper's notion of avail_in and
avail_out to what came back from zlib, so that the callers can feed
buffers larger than than 4GB to the API.

When underlying inflate/deflate stopped processing because we fed a buffer
larger than 4GB limit, detect that case, update the state variables, and
let the zlib function work another round.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib: zlib can only process 4GB at a time
Junio C Hamano [Fri, 10 Jun 2011 18:52:15 +0000 (11:52 -0700)] 
zlib: zlib can only process 4GB at a time

The size of objects we read from the repository and data we try to put
into the repository are represented in "unsigned long", so that on larger
architectures we can handle objects that weigh more than 4GB.

But the interface defined in zlib.h to communicate with inflate/deflate
limits avail_in (how many bytes of input are we calling zlib with) and
avail_out (how many bytes of output from zlib are we ready to accept)
fields effectively to 4GB by defining their type to be uInt.

In many places in our code, we allocate a large buffer (e.g. mmap'ing a
large loose object file) and tell zlib its size by assigning the size to
avail_in field of the stream, but that will truncate the high octets of
the real size. The worst part of this story is that we often pass around
z_stream (the state object used by zlib) to keep track of the number of
used bytes in input/output buffer by inspecting these two fields, which
practically limits our callchain to the same 4GB limit.

Wrap z_stream in another structure git_zstream that can express avail_in
and avail_out in unsigned long. For now, just die() when the caller gives
a size that cannot be given to a single zlib call. In later patches in the
series, we would make git_inflate() and git_deflate() internally loop to
give callers an illusion that our "improved" version of zlib interface can
operate on a buffer larger than 4GB in one go.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib: wrap deflateBound() too
Junio C Hamano [Fri, 10 Jun 2011 18:18:17 +0000 (11:18 -0700)] 
zlib: wrap deflateBound() too

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib: wrap deflate side of the API
Junio C Hamano [Fri, 10 Jun 2011 17:55:10 +0000 (10:55 -0700)] 
zlib: wrap deflate side of the API

Wrap deflateInit, deflate, and deflateEnd for everybody, and the sole use
of deflateInit2 in remote-curl.c to tell the library to use gzip header
and trailer in git_deflate_init_gzip().

There is only one caller that cares about the status from deflateEnd().
Introduce git_deflate_end_gently() to let that sole caller retrieve the
status and act on it (i.e. die) for now, but we would probably want to
make inflate_end/deflate_end die when they ran out of memory and get
rid of the _gently() kind.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib: wrap inflateInit2 used to accept only for gzip format
Junio C Hamano [Fri, 10 Jun 2011 17:45:29 +0000 (10:45 -0700)] 
zlib: wrap inflateInit2 used to accept only for gzip format

http-backend.c uses inflateInit2() to tell the library that it wants to
accept only gzip format. Wrap it in a helper function so that readers do
not have to wonder what the magic numbers 15 and 16 are for.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib: wrap remaining calls to direct inflate/inflateEnd
Junio C Hamano [Fri, 10 Jun 2011 17:39:27 +0000 (10:39 -0700)] 
zlib: wrap remaining calls to direct inflate/inflateEnd

Two callsites in http-backend.c to inflate() and inflateEnd()
were not using git_ prefixed versions.  After this, running

    $ find all objects -print | xargs nm -ugo | grep inflate

shows only zlib.c makes direct calls to zlib for inflate operation,
except for a singlecall to inflateInit2 in http-backend.c

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agozlib wrapper: refactor error message formatter
Junio C Hamano [Fri, 10 Jun 2011 17:31:34 +0000 (10:31 -0700)] 
zlib wrapper: refactor error message formatter

Before refactoring the main part of the wrappers, first move the
logic to convert error status that come back from zlib to string
to a helper function.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: do not misparse nonnumeric content tag files that contain a digit
Jonathan Nieder [Thu, 9 Jun 2011 07:08:57 +0000 (02:08 -0500)] 
gitweb: do not misparse nonnumeric content tag files that contain a digit

v1.7.6-rc0~27^2~4 (gitweb: Change the way "content tags" ('ctags') are
handled, 2011-04-29) tried to make gitweb's tag cloud feature more
intuitive for webmasters by checking whether the ctags/<label> under
a project's .git dir contains a number (representing the strength of
association to <label>) before treating it as one.

With that change, after putting '$feature{'ctags'}{'default'} = [1];'
in your $GITWEB_CONFIG, you could do

echo Linux >.git/ctags/linux

and gitweb would treat that as a request to tag the current repository
with the Linux tag, instead of the previous behavior of writing an
error page embedded in the projects list that triggers error messages
from Chromium and Firefox about malformed XML.

Unfortunately the pattern (\d+) used to match numbers is too loose,
and the "XML declaration allowed only at the start of the document"
error can still be experienced if you write "Linux-2.6" in place of
"Linux" in the example above.  Fix it by tightening the pattern to
^\d+$.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.6-rc1 v1.7.6-rc1
Junio C Hamano [Thu, 9 Jun 2011 01:29:48 +0000 (18:29 -0700)] 
Git 1.7.6-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 9 Jun 2011 01:13:39 +0000 (18:13 -0700)] 
Merge branch 'maint'

* maint:
  fetch: do not leak a refspec

13 years agoDocument the underlying protocol used by shallow repositories and --depth commands.
Alex Neronskiy [Wed, 8 Jun 2011 22:11:51 +0000 (15:11 -0700)] 
Document the underlying protocol used by shallow repositories and --depth commands.

Explain the exchange that occurs between a client and server when
the client is requesting shallow history and/or is already using
a shallow repository.

Signed-off-by: Alex Neronskiy <zakmagnus@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoFix documentation of fetch-pack that implies that the client can disconnect after...
Alex Neronskiy [Wed, 8 Jun 2011 22:11:50 +0000 (15:11 -0700)] 
Fix documentation of fetch-pack that implies that the client can disconnect after sending wants.

Specify conditions under which the client can terminate the connection
early. Previously, an unintended behavior was possible which could
confuse servers.

Based-on-patch-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Alex Neronskiy <zakmagnus@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agofetch: do not leak a refspec
Jim Meyering [Wed, 8 Jun 2011 20:06:33 +0000 (22:06 +0200)] 
fetch: do not leak a refspec

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosha1_file.c: "legacy" is really the current format
Junio C Hamano [Wed, 8 Jun 2011 18:29:01 +0000 (11:29 -0700)] 
sha1_file.c: "legacy" is really the current format

Every time I look at the read-loose-object codepath, legacy_loose_object()
function makes my brain go through mental contortion. When we were playing
with the experimental loose object format, it may have made sense to call
the traditional format "legacy", in the hope that the experimental one
will some day replace it to become official, but it never happened.

This renames the function (and negates its return value) to detect if we
are looking at the experimental format, and move the code around in its
caller which used to do "if we are looing at legacy, do this special case,
otherwise the normal case is this". The codepath to read from the loose
objects in experimental format is the "unlikely" case.

Someday after Git 2.0, we should drop the support of this format.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jc/magic-pathspec'
Junio C Hamano [Tue, 7 Jun 2011 15:32:42 +0000 (08:32 -0700)] 
Merge branch 'jc/magic-pathspec'

* jc/magic-pathspec:
  t3703: skip more tests using colons in file names on Windows

13 years agot3703: skip more tests using colons in file names on Windows
Alex Riesen [Tue, 7 Jun 2011 09:49:44 +0000 (11:49 +0200)] 
t3703: skip more tests using colons in file names on Windows

Use the same test and prerequisite as introduced in similar
fix in 650af7ae8bdf92bd92df2.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosubmodule add: clean up duplicated code
Jens Lehmann [Mon, 6 Jun 2011 19:58:43 +0000 (21:58 +0200)] 
submodule add: clean up duplicated code

In cmd_add() the switch statement used to resolve a relative url was
present twice. Remove the second one and use the realrepo variable set
by the first one (lines 194 ff.) instead.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosubmodule add: allow relative repository path even when no url is set
Jens Lehmann [Mon, 6 Jun 2011 19:58:04 +0000 (21:58 +0200)] 
submodule add: allow relative repository path even when no url is set

Adding a submodule with a relative repository path did only succeed when
the superproject's default remote was set. But when that is unset, the
superproject is its own authoritative upstream, so lets use its working
directory as upstream instead.

This allows users to set up a new superpoject where the submodules urls
are configured relative to the superproject's upstream while its default
remote can be configured later.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosubmodule add: test failure when url is not configured in superproject
Jens Lehmann [Mon, 6 Jun 2011 19:57:01 +0000 (21:57 +0200)] 
submodule add: test failure when url is not configured in superproject

This documents the current behavior (submodule add with the url set in the
superproject is already tested in t7403, t7406, t7407 and t7506).

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/mime-type-with-params'
Junio C Hamano [Mon, 6 Jun 2011 18:40:22 +0000 (11:40 -0700)] 
Merge branch 'jn/mime-type-with-params'

* jn/mime-type-with-params:
  gitweb: Fix usability of $prevent_xss

13 years agoMerge branch 'jn/gitweb-docs'
Junio C Hamano [Mon, 6 Jun 2011 18:40:18 +0000 (11:40 -0700)] 
Merge branch 'jn/gitweb-docs'

* jn/gitweb-docs:
  gitweb: Move "Requirements" up in gitweb/INSTALL
  gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL
  gitweb: Move information about installation from README to INSTALL

13 years agoMerge branch 'jk/diff-not-so-quick'
Junio C Hamano [Mon, 6 Jun 2011 18:40:14 +0000 (11:40 -0700)] 
Merge branch 'jk/diff-not-so-quick'

* jk/diff-not-so-quick:
  diff: futureproof "stop feeding the backend early" logic
  diff_tree: disable QUICK optimization with diff filter

Conflicts:
diff.c

13 years agoMerge branch 'bc/maint-status-z-to-use-porcelain'
Junio C Hamano [Mon, 6 Jun 2011 18:40:08 +0000 (11:40 -0700)] 
Merge branch 'bc/maint-status-z-to-use-porcelain'

* bc/maint-status-z-to-use-porcelain:
  builtin/commit.c: set status_format _after_ option parsing
  t7508: demonstrate status's failure to use --porcelain format with -z

Conflicts:
builtin/commit.c

13 years agocheckout -b <name>: correctly detect existing branch
Junio C Hamano [Mon, 6 Jun 2011 05:17:04 +0000 (22:17 -0700)] 
checkout -b <name>: correctly detect existing branch

When create a new branch, we fed "refs/heads/<proposed name>" as a string
to get_sha1() and expected it to fail when a branch already exists.

The right way to check if a ref exists is to check with resolve_ref().

A naïve solution that might appear attractive but does not work is to
forbid slashes in get_describe_name() but that will not work. A describe
name is is in the form of "ANYTHING-g<short sha1>", and that ANYTHING part
comes from a original tag name used in the repository the user ran the
describe command. A sick user could have a confusing hierarchical tag
whose name is "refs/heads/foobar" (stored as refs/tags/refs/heads/foobar")
to generate a describe name "refs/heads/foobar-6-g02ac983", and we should
be able to use that name to refer to the object whose name is 02ac983.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: Fix usability of $prevent_xss
Jakub Narebski [Sat, 4 Jun 2011 08:43:35 +0000 (10:43 +0200)] 
gitweb: Fix usability of $prevent_xss

With XSS prevention on (enabled using $prevent_xss), blobs
('blob_plain') of all types except a few known safe ones are served
with "Content-Disposition: attachment".  However the check was too
strict; it didn't take into account optional parameter attributes,

  media-type     = type "/" subtype *( ";" parameter )

as described in RFC 2616

  http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
  http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7

This fixes that, and it for example treats following as safe MIME
media type:

  text/plain; charset=utf-8

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: Move "Requirements" up in gitweb/INSTALL
Jakub Narebski [Fri, 3 Jun 2011 16:31:48 +0000 (18:31 +0200)] 
gitweb: Move "Requirements" up in gitweb/INSTALL

This way you can examine prerequisites at first glance, before
detailed instructions on installing gitweb.  Straightforward
text movement.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL
Jakub Narebski [Thu, 2 Jun 2011 14:55:53 +0000 (16:55 +0200)] 
gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL

The build-time configuration variables JSMIN and CSSMIN were mentioned
only in Makefile; add their description to gitweb/INSTALL.

This required moving description of GITWEB_JS up, near GITWEB_CSS and
just introduced CSMIN and JSMIN.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: Move information about installation from README to INSTALL
Jakub Narebski [Thu, 2 Jun 2011 14:55:52 +0000 (16:55 +0200)] 
gitweb: Move information about installation from README to INSTALL

Almost straightformard moving of "How to configure gitweb for your
local system" section from gitweb/README to gitweb/INSTALL, as it is
about build time configuration.  Updated references to it.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoSync with 1.7.5.4 v1.7.6-rc0
Junio C Hamano [Wed, 1 Jun 2011 21:11:17 +0000 (14:11 -0700)] 
Sync with 1.7.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.5.4 v1.7.5.4
Junio C Hamano [Wed, 1 Jun 2011 21:08:26 +0000 (14:08 -0700)] 
Git 1.7.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jk/maint-config-alias-fix' into maint
Junio C Hamano [Wed, 1 Jun 2011 21:05:22 +0000 (14:05 -0700)] 
Merge branch 'jk/maint-config-alias-fix' into maint

* jk/maint-config-alias-fix:
  handle_options(): do not miscount how many arguments were used
  config: always parse GIT_CONFIG_PARAMETERS during git_config
  git_config: don't peek at global config_parameters
  config: make environment parsing routines static

13 years agoMerge branch 'jc/fmt-req-fix' into maint
Junio C Hamano [Wed, 1 Jun 2011 21:03:07 +0000 (14:03 -0700)] 
Merge branch 'jc/fmt-req-fix' into maint

* jc/fmt-req-fix:
  userformat_find_requirements(): find requirement for the correct format

13 years agoMerge branch 'jk/maint-docs' into maint
Junio C Hamano [Wed, 1 Jun 2011 21:02:52 +0000 (14:02 -0700)] 
Merge branch 'jk/maint-docs' into maint

* jk/maint-docs:
  docs: fix some antique example output
  docs: make sure literal "->" isn't converted to arrow
  docs: update status --porcelain format
  docs: minor grammar fixes to git-status

13 years agoMerge branch 'jn/doc-remote-helpers' into maint
Junio C Hamano [Wed, 1 Jun 2011 21:02:45 +0000 (14:02 -0700)] 
Merge branch 'jn/doc-remote-helpers' into maint

* jn/doc-remote-helpers:
  Documentation: do not misinterpret refspecs as bold text

13 years agoMerge branch 'kk/maint-prefix-in-config-mak' into maint
Junio C Hamano [Wed, 1 Jun 2011 21:02:39 +0000 (14:02 -0700)] 
Merge branch 'kk/maint-prefix-in-config-mak' into maint

* kk/maint-prefix-in-config-mak:
  config.mak.in: allow "configure --sysconfdir=/else/where"

13 years agodiffcore-rename.c: avoid set-but-not-used warning
Jim Meyering [Fri, 29 Apr 2011 09:42:41 +0000 (11:42 +0200)] 
diffcore-rename.c: avoid set-but-not-used warning

Since 9d8a5a5 (diffcore-rename: refactor "too many candidates" logic,
2011-01-06), diffcore_rename() initializes num_src but does not use it
anymore.  "-Wunused-but-set-variable" in gcc-4.6 complains about this.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUpdate draft release notes to 1.7.6
Junio C Hamano [Tue, 31 May 2011 19:22:50 +0000 (12:22 -0700)] 
Update draft release notes to 1.7.6

I think we are almost there for the feature freeze.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jk/format-patch-am'
Junio C Hamano [Tue, 31 May 2011 19:19:11 +0000 (12:19 -0700)] 
Merge branch 'jk/format-patch-am'

* jk/format-patch-am:
  format-patch: preserve subject newlines with -k
  clean up calling conventions for pretty.c functions
  pretty: add pp_commit_easy function for simple callers
  mailinfo: always clean up rfc822 header folding
  t: test subject handling in format-patch / am pipeline

Conflicts:
builtin/branch.c
builtin/log.c
commit.h

13 years agoMerge branch 'jn/doc-remote-helpers'
Junio C Hamano [Tue, 31 May 2011 19:09:35 +0000 (12:09 -0700)] 
Merge branch 'jn/doc-remote-helpers'

* jn/doc-remote-helpers:
  Documentation: do not misinterpret refspecs as bold text

13 years agoMerge branch 'jk/format-patch-empty-prefix'
Junio C Hamano [Tue, 31 May 2011 19:09:27 +0000 (12:09 -0700)] 
Merge branch 'jk/format-patch-empty-prefix'

* jk/format-patch-empty-prefix:
  format-patch: make zero-length subject prefixes prettier

13 years agoMerge branch 'ab/i18n-envsubst-doc-fix'
Junio C Hamano [Tue, 31 May 2011 19:09:21 +0000 (12:09 -0700)] 
Merge branch 'ab/i18n-envsubst-doc-fix'

* ab/i18n-envsubst-doc-fix:
  git-sh-i18n--envsubst: add SYNOPSIS section to the documentation

13 years agoMerge branch 'jc/log-quiet-fix'
Junio C Hamano [Tue, 31 May 2011 19:09:18 +0000 (12:09 -0700)] 
Merge branch 'jc/log-quiet-fix'

* jc/log-quiet-fix:
  log: --quiet should serve as synonym to -s

13 years agoMerge branch 'kk/maint-prefix-in-config-mak'
Junio C Hamano [Tue, 31 May 2011 19:09:12 +0000 (12:09 -0700)] 
Merge branch 'kk/maint-prefix-in-config-mak'

* kk/maint-prefix-in-config-mak:
  config.mak.in: allow "configure --sysconfdir=/else/where"

13 years agoMerge branch 'jk/rebase-head-reflog'
Junio C Hamano [Tue, 31 May 2011 19:09:08 +0000 (12:09 -0700)] 
Merge branch 'jk/rebase-head-reflog'

* jk/rebase-head-reflog:
  rebase: write a reflog entry when finishing
  rebase: create HEAD reflog entry when aborting

13 years agoMerge branch 'jk/maint-docs'
Junio C Hamano [Tue, 31 May 2011 19:09:00 +0000 (12:09 -0700)] 
Merge branch 'jk/maint-docs'

* jk/maint-docs:
  docs: fix some antique example output
  docs: make sure literal "->" isn't converted to arrow
  docs: update status --porcelain format
  docs: minor grammar fixes to git-status

13 years agoMerge branch 'jk/read-in-full-stops-on-error'
Junio C Hamano [Tue, 31 May 2011 19:08:55 +0000 (12:08 -0700)] 
Merge branch 'jk/read-in-full-stops-on-error'

* jk/read-in-full-stops-on-error:
  read_in_full: always report errors

13 years agoMerge branch 'jk/maint-remote-mirror-safer'
Junio C Hamano [Tue, 31 May 2011 19:08:52 +0000 (12:08 -0700)] 
Merge branch 'jk/maint-remote-mirror-safer'

* jk/maint-remote-mirror-safer:
  remote: allow "-t" with fetch mirrors

13 years agoMerge branch 'jl/read-tree-m-dry-run'
Junio C Hamano [Tue, 31 May 2011 19:08:48 +0000 (12:08 -0700)] 
Merge branch 'jl/read-tree-m-dry-run'

* jl/read-tree-m-dry-run:
  Teach read-tree the -n|--dry-run option
  unpack-trees: add the dry_run flag to unpack_trees_options

13 years agoSync with maint
Junio C Hamano [Tue, 31 May 2011 19:07:14 +0000 (12:07 -0700)] 
Sync with maint

13 years agoStart 1.7.5.4 draft release notes
Junio C Hamano [Tue, 31 May 2011 19:06:40 +0000 (12:06 -0700)] 
Start 1.7.5.4 draft release notes

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'tr/add-i-no-escape' into maint
Junio C Hamano [Tue, 31 May 2011 19:02:04 +0000 (12:02 -0700)] 
Merge branch 'tr/add-i-no-escape' into maint

* tr/add-i-no-escape:
  add -i: ignore terminal escape sequences

13 years agoMerge branch 'vh/config-interactive-singlekey-doc' into maint
Junio C Hamano [Tue, 31 May 2011 19:01:06 +0000 (12:01 -0700)] 
Merge branch 'vh/config-interactive-singlekey-doc' into maint

* vh/config-interactive-singlekey-doc:
  git-reset.txt: better docs for '--patch'
  git-checkout.txt: better docs for '--patch'
  git-stash.txt: better docs for '--patch'
  git-add.txt: document 'interactive.singlekey'
  config.txt: 'interactive.singlekey; is used by...

13 years agoMerge branch 'ml/test-readme' into maint
Junio C Hamano [Tue, 31 May 2011 19:00:43 +0000 (12:00 -0700)] 
Merge branch 'ml/test-readme' into maint

* ml/test-readme:
  t/README: unify documentation of test function args

13 years agoMerge branch 'ab/i18n-fixup' into maint
Junio C Hamano [Tue, 31 May 2011 19:00:27 +0000 (12:00 -0700)] 
Merge branch 'ab/i18n-fixup' into maint

* ab/i18n-fixup: (24 commits)
  i18n: use test_i18n{cmp,grep} in t7600, t7607, t7611 and t7811
  i18n: use test_i18n{grep,cmp} in t7508
  i18n: use test_i18ngrep in t7506
  i18n: use test_i18ngrep and test_i18ncmp in t7502
  i18n: use test_i18ngrep in t7501
  i18n: use test_i18ncmp in t7500
  i18n: use test_i18ngrep in t7201
  i18n: use test_i18ncmp and test_i18ngrep in t7102 and t7110
  i18n: use test_i18ncmp and test_i18ngrep in t5541, t6040, t6120, t7004, t7012 and t7060
  i18n: use test_i18ncmp and test_i18ngrep in t3700, t4001 and t4014
  i18n: use test_i18ncmp and test_i18ngrep in t3203, t3501 and t3507
  i18n: use test_i18ngrep in t2020, t2204, t3030, and t3200
  i18n: use test_i18ngrep in lib-httpd and t2019
  i18n: do not overuse C_LOCALE_OUTPUT (grep)
  i18n: use test_i18ncmp in t1200 and t2200
  i18n: .git file is not a human readable message (t5601)
  i18n: do not overuse C_LOCALE_OUTPUT
  i18n: mark init-db messages for translation
  i18n: mark checkout plural warning for translation
  i18n: mark checkout --detach messages for translation
  ...

13 years agoMerge branch 'jc/rename-degrade-cc-to-c' into maint
Junio C Hamano [Tue, 31 May 2011 19:00:02 +0000 (12:00 -0700)] 
Merge branch 'jc/rename-degrade-cc-to-c' into maint

* jc/rename-degrade-cc-to-c:
  diffcore-rename: fall back to -C when -C -C busts the rename limit
  diffcore-rename: record filepair for rename src
  diffcore-rename: refactor "too many candidates" logic
  builtin/diff.c: remove duplicated call to diff_result_code()

13 years agoMerge branch 'rr/doc-content-type' into maint
Junio C Hamano [Tue, 31 May 2011 18:59:39 +0000 (11:59 -0700)] 
Merge branch 'rr/doc-content-type' into maint

* rr/doc-content-type:
  Documentation: Allow custom diff tools to be specified in 'diff.tool'
  Documentation: Add diff.<driver>.* to config
  Documentation: Move diff.<driver>.* from config.txt to diff-config.txt
  Documentation: Add filter.<driver>.* to config

13 years agodiff-index --quiet: learn the "stop feeding the backend early" logic
Junio C Hamano [Tue, 31 May 2011 17:06:44 +0000 (10:06 -0700)] 
diff-index --quiet: learn the "stop feeding the backend early" logic

A negative return from the unpack callback function usually means unpack
failed for the entry and signals the unpack_trees() machinery to fail the
entire merge operation, immediately and there is no other way for the
callback to tell the machinery to exit early without reporting an error.

This is what we usually want to make a merge all-or-nothing operation, but
the machinery is also used for diff-index codepath by using a custom
unpack callback function. And we do sometimes want to exit early without
failing, namely when we are under --quiet and can short-cut the diff upon
finding the first difference.

Add "exiting_early" field to unpack_trees_options structure, to signal the
unpack_trees() machinery that the negative return value is not signaling
an error but an early return from the unpack_trees() machinery. As this by
definition hasn't unpacked everything, discard the resulting index just
like the failure codepath.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge remote-tracking branch 'ko/maint' into jc/diff-index-quick-exit-early
Junio C Hamano [Tue, 31 May 2011 17:57:32 +0000 (10:57 -0700)] 
Merge remote-tracking branch 'ko/maint' into jc/diff-index-quick-exit-early

* ko/maint: (4352 commits)
  git-submodule.sh: separate parens by a space to avoid confusing some shells
  Documentation/technical/api-diff.txt: correct name of diff_unmerge()
  read_gitfile_gently: use ssize_t to hold read result
  remove tests of always-false condition
  rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'
  Git 1.7.5.3
  init/clone: remove short option -L and document --separate-git-dir
  do not read beyond end of malloc'd buffer
  git-svn: Fix git svn log --show-commit
  Git 1.7.5.2
  provide a copy of the LGPLv2.1
  test core.gitproxy configuration
  copy_gecos: fix not adding nlen to len when processing "&"
  Update draft release notes to 1.7.5.2
  Documentation/git-fsck.txt: fix typo: unreadable -> unreachable
  send-pack: avoid deadlock on git:// push with failed pack-objects
  connect: let callers know if connection is a socket
  connect: treat generic proxy processes like ssh processes
  sideband_demux(): fix decl-after-stmt
  t3503: test cherry picking and reverting root commits
  ...

Conflicts:
diff.c

13 years agoconfig.c: Remove unused git_config_global() function
Ramsay Jones [Tue, 31 May 2011 17:23:42 +0000 (18:23 +0100)] 
config.c: Remove unused git_config_global() function

Commit 8f323c00 (drop support for GIT_CONFIG_NOGLOBAL, 15-03-2011)
removed the git_config_global() function, among other things, since
it is no longer required. Unfortunately, this function has since
been unintentionally restored by a faulty conflict resolution.

Remove it.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodiff: futureproof "stop feeding the backend early" logic
Junio C Hamano [Tue, 31 May 2011 16:14:17 +0000 (09:14 -0700)] 
diff: futureproof "stop feeding the backend early" logic

Refactor the "do not stop feeding the backend early" logic into a small
helper function and use it in both run_diff_files() and diff_tree() that
has the stop-early optimization. We may later add other types of diffcore
transformation that require to look at the whole result like diff-filter
does, and having the logic in a single place is essential for longer term
maintainability.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodiff_tree: disable QUICK optimization with diff filter
Jeff King [Tue, 31 May 2011 15:33:56 +0000 (11:33 -0400)] 
diff_tree: disable QUICK optimization with diff filter

We stop looking for changes early with QUICK, so our diff
queue contains only a subset of the changes. However, we
don't apply diff filters until later; it will appear at that
point as though there are no changes matching our filter,
when in reality we simply didn't keep looking for changes
long enough.

Commit 2cfe8a6 (diff --quiet: disable optimization when
--diff-filter=X is used, 2011-03-16) fixes this in some
cases by disabling the optimization when a filter is
present. However, it only tweaked run_diff_files, missing
the similar case in diff_tree. Thus the fix worked only for
diffing the working tree and index, but not between trees.

Noticed by Yasushi SHOJI.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jc/fmt-req-fix'
Junio C Hamano [Tue, 31 May 2011 03:19:21 +0000 (20:19 -0700)] 
Merge branch 'jc/fmt-req-fix'

* jc/fmt-req-fix:
  userformat_find_requirements(): find requirement for the correct format

13 years agoMerge branch 'jk/maint-config-alias-fix'
Junio C Hamano [Tue, 31 May 2011 03:19:14 +0000 (20:19 -0700)] 
Merge branch 'jk/maint-config-alias-fix'

* jk/maint-config-alias-fix:
  handle_options(): do not miscount how many arguments were used
  config: always parse GIT_CONFIG_PARAMETERS during git_config
  git_config: don't peek at global config_parameters
  config: make environment parsing routines static

Conflicts:
config.c

13 years agoDocumentation: do not misinterpret refspecs as bold text
Jonathan Nieder [Mon, 30 May 2011 15:52:56 +0000 (10:52 -0500)] 
Documentation: do not misinterpret refspecs as bold text

In v1.7.3.3~2 (Documentation: do not misinterpret pull refspec as bold
text, 2010-12-03) many uses of asterisks in expressions like
"refs/heads/*:refs/svn/origin/branches/*" were escaped as {asterisk}
to avoid being treated as delimiters for bold text, but these two were
missed.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoformat-patch: make zero-length subject prefixes prettier
Jeff King [Mon, 30 May 2011 14:19:05 +0000 (10:19 -0400)] 
format-patch: make zero-length subject prefixes prettier

If you give a zero-length subject prefix to format-patch
(e.g., "format-patch --subject-prefix="), we will print the
ugly:

  Subject: [ 1/2] your subject here

because we always insert a space between the prefix and
numbering. Requiring the user to provide the space in their
prefix would be more flexible, but would break existing
usage. This patch provides a DWIM and suppresses the space
for zero-length prefixes, under the assumption that nobody
actually wants "[ 1/2]".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-sh-i18n--envsubst: add SYNOPSIS section to the documentation
Ævar Arnfjörð Bjarmason [Sun, 29 May 2011 11:00:35 +0000 (11:00 +0000)] 
git-sh-i18n--envsubst: add SYNOPSIS section to the documentation

Change the documentation for the git-sh-i18n--envsubst program to
include a SYNOPSIS section. Include the invocation of the program from
git-sh-i18n.sh.

Not having a SYNOPSIS section caused the "doc" target to fail on
Centos 5.5 with asciidoc 8.2.5, while building with 8.6.4 on Debian
works just fine.

The relevant error was:

    ERROR: git-sh-i18n--envsubst.txt: line 9: second section must be named SYNOPSIS

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Mon, 30 May 2011 07:09:55 +0000 (00:09 -0700)] 
Merge branch 'maint'

* maint:
  git-submodule.sh: separate parens by a space to avoid confusing some shells
  Documentation/technical/api-diff.txt: correct name of diff_unmerge()
  read_gitfile_gently: use ssize_t to hold read result
  remove tests of always-false condition
  rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'

13 years agoMerge branch 'jm/maint-misc-fix' into maint
Junio C Hamano [Mon, 30 May 2011 07:09:41 +0000 (00:09 -0700)] 
Merge branch 'jm/maint-misc-fix' into maint

* jm/maint-misc-fix:
  read_gitfile_gently: use ssize_t to hold read result
  remove tests of always-false condition
  rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'

13 years agoMerge branch 'bc/maint-submodule-fix-parked' into maint
Junio C Hamano [Mon, 30 May 2011 07:09:36 +0000 (00:09 -0700)] 
Merge branch 'bc/maint-submodule-fix-parked' into maint

* bc/maint-submodule-fix-parked:
  git-submodule.sh: separate parens by a space to avoid confusing some shells

13 years agoMerge branch 'bc/maint-api-doc-parked' into maint
Junio C Hamano [Mon, 30 May 2011 07:03:52 +0000 (00:03 -0700)] 
Merge branch 'bc/maint-api-doc-parked' into maint

* bc/maint-api-doc-parked:
  Documentation/technical/api-diff.txt: correct name of diff_unmerge()

13 years agoMerge branch 'mk/grep-pcre'
Junio C Hamano [Mon, 30 May 2011 07:00:07 +0000 (00:00 -0700)] 
Merge branch 'mk/grep-pcre'

* mk/grep-pcre:
  git-grep: Fix problems with recently added tests
  git-grep: Update tests (mainly for -P)
  Makefile: Pass USE_LIBPCRE down in GIT-BUILD-OPTIONS
  git-grep: update tests now regexp type is "last one wins"
  git-grep: do not die upon -F/-P when grep.extendedRegexp is set.
  git-grep: Bail out when -P is used with -F or -E
  grep: Add basic tests
  configure: Check for libpcre
  git-grep: Learn PCRE
  grep: Extract compile_regexp_failed() from compile_regexp()
  grep: Fix a typo in a comment
  grep: Put calls to fixmatch() and regmatch() into patmatch()
  contrib/completion: --line-number to git grep
  Documentation: Add --line-number to git-grep synopsis

13 years agogit-grep: Fix problems with recently added tests
Michał Kiedrowicz [Thu, 26 May 2011 22:43:59 +0000 (00:43 +0200)] 
git-grep: Fix problems with recently added tests

Brian Gernhardt reported that test 'git grep -E -F -G a\\+b' fails on
OS X 10.6.7. This is because I assumed \+ is part of BRE, which isn't
true on all platforms.

The easiest way to make this test pass is to just update expected
output, but that would make the test pointless. Its real purpose is to
check whether 'git grep -E -F -G' is different from 'git grep -E -G -F'.
To check that, let's change pattern to "a+b*c". This should return
different match for -G, -F and -E.

I also made two small tweaks to the tests. First, I added path "ab" to
all calls to future-proof tests. Second, I updated last two tests to
better show that 'git grep -P -E' is different from 'git grep -E -P'.

Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jc/notes-batch-removal'
Junio C Hamano [Mon, 30 May 2011 06:51:26 +0000 (23:51 -0700)] 
Merge branch 'jc/notes-batch-removal'

* jc/notes-batch-removal:
  show: --ignore-missing
  notes remove: --stdin reads from the standard input
  notes remove: --ignore-missing
  notes remove: allow removing more than one

13 years agoMerge branch 'jk/haves-from-alternate-odb'
Junio C Hamano [Mon, 30 May 2011 06:51:22 +0000 (23:51 -0700)] 
Merge branch 'jk/haves-from-alternate-odb'

* jk/haves-from-alternate-odb:
  receive-pack: eliminate duplicate .have refs
  bisect: refactor sha1_array into a generic sha1 list
  refactor refs_from_alternate_cb to allow passing extra data

13 years agoMerge branch 'jn/run-command-error-failure' into maint
Junio C Hamano [Mon, 30 May 2011 02:08:51 +0000 (19:08 -0700)] 
Merge branch 'jn/run-command-error-failure' into maint

* jn/run-command-error-failure:
  run-command: handle short writes and EINTR in die_child
  tests: check error message from run_command

13 years agobuiltin/commit.c: set status_format _after_ option parsing
Brandon Casey [Thu, 26 May 2011 20:43:21 +0000 (13:43 -0700)] 
builtin/commit.c: set status_format _after_ option parsing

'git status' should use --porcelain output format when -z is given.
It was not doing so since the _effect_ of using -z, namely that
null_termination would be set, was being checked _before_ option parsing
was performed.

So, move the check so that it is performed after option parsing.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot7508: demonstrate status's failure to use --porcelain format with -z
Brandon Casey [Thu, 26 May 2011 20:43:20 +0000 (13:43 -0700)] 
t7508: demonstrate status's failure to use --porcelain format with -z

When 'git status' is supplied the -z switch, and no output format has been
selected, it is supposed to use the --porcelain format.  This does not
happen.  Instead, the standard long format is used.  Add a test to
demonstrate this failure.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agolog: --quiet should serve as synonym to -s
Junio C Hamano [Sat, 28 May 2011 19:25:24 +0000 (12:25 -0700)] 
log: --quiet should serve as synonym to -s

The previous commit simply hijacked --quiet and essentially made it into a
no-op. Instead, take it as a cue that the end user wants to omit the patch
output from commands that default to show patches, e.g. "show".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorebase: write a reflog entry when finishing
Jeff King [Fri, 27 May 2011 20:16:14 +0000 (16:16 -0400)] 
rebase: write a reflog entry when finishing

When we finish a rebase, our detached HEAD is at the final
result. We update the original branch ref with this result,
and then point the HEAD symbolic ref at the updated branch.
We write a reflog for the branch update, but not for the
update of HEAD.

Because we're already at the final result on the detached
HEAD, moving to the branch actually doesn't change our
commit sha1 at all. So in that sense, a reflog entry would
be pointless.

However, humans do read reflogs, and an entry saying "rebase
finished: returning to refs/heads/master" can be helpful in
understanding what is going on.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorebase: create HEAD reflog entry when aborting
Csaba Henk [Fri, 27 May 2011 20:13:02 +0000 (16:13 -0400)] 
rebase: create HEAD reflog entry when aborting

When we abort a rebase, we return to the original value of
HEAD. Failing to write a reflog entry means we create a
gap in the reflog (which can cause "git show
HEAD@{5.minutes.ago}" to issue a warning). Plus having the
extra entry makes the reflog easier to follow for a human.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconfig.mak.in: allow "configure --sysconfdir=/else/where"
Junio C Hamano [Thu, 5 May 2011 01:50:45 +0000 (18:50 -0700)] 
config.mak.in: allow "configure --sysconfdir=/else/where"

We do allow vanilla Makefile users to say make sysconfdir=/else/where
and config.mak can also be tweaked manually for the same effect. Give
the same configurablity to ./configure users as well.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodocs: fix some antique example output
Jeff King [Fri, 27 May 2011 02:33:15 +0000 (22:33 -0400)] 
docs: fix some antique example output

These diff-index and diff-tree sample outputs date back to
the first month of git's existence. The output format has
changed slightly since then, so let's have it match the
current output.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodocs: make sure literal "->" isn't converted to arrow
Jeff King [Fri, 27 May 2011 02:32:41 +0000 (22:32 -0400)] 
docs: make sure literal "->" isn't converted to arrow

Recent versions of asciidoc will treat "->" as a
single-glyph arrow symbol, unless it is inside a literal
code block. This is a problem if we are discussing literal
output and want to show the ASCII characters.

Our usage falls into three categories:

  1. Inside a code block. These can be left as-is.

  2. Discussing literal output or code, but inside a
     paragraph. This patch escapes these as "\->".

  3. Using the arrow as a symbolic element, such as "use the
     Edit->Account Settings menu". In this case, the
     arrow symbol is preferable, so we leave it as-is.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodocs: update status --porcelain format
Jeff King [Fri, 27 May 2011 02:31:51 +0000 (22:31 -0400)] 
docs: update status --porcelain format

The --porcelain format was originally identical to the
--short format, but designed to be stable as the short
format changed. Since this was written, the short format
picked up a few incompatible niceties, but this description
was never changed.

Let's mention the differences. While we're at it, let's add
some sub-section headings to make the "output" section a
little easier to navigate.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodocs: minor grammar fixes to git-status
Jeff King [Fri, 27 May 2011 02:31:11 +0000 (22:31 -0400)] 
docs: minor grammar fixes to git-status

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoformat-patch: preserve subject newlines with -k
Jeff King [Thu, 26 May 2011 22:28:17 +0000 (18:28 -0400)] 
format-patch: preserve subject newlines with -k

In older versions of git, we used rfc822 header folding to
indicate that the original subject line had multiple lines
in it.  But since a1f6baa (format-patch: wrap long header
lines, 2011-02-23), we now use header folding whenever there
is a long line.

This means that "git am" cannot trust header folding as a
sign from format-patch that newlines should be preserved.
Instead, format-patch needs to signal more explicitly that
the newlines are significant.  This patch does so by
rfc2047-encoding the newlines in the subject line. No
changes are needed on the "git am" end; it already decodes
the newlines properly.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoclean up calling conventions for pretty.c functions
Jeff King [Thu, 26 May 2011 22:27:49 +0000 (18:27 -0400)] 
clean up calling conventions for pretty.c functions

We have a pretty_print_context representing the parameters
for a pretty-print session, but we did not use it uniformly.
As a result, functions kept growing more and more arguments.

Let's clean this up in a few ways:

  1. All pretty-print pp_* functions now take a context.
     This lets us reduce the number of arguments to these
     functions, since we were just passing around the
     context values separately.

  2. The context argument now has a cmit_fmt field, which
     was passed around separately. That's one less argument
     per function.

  3. The context argument always comes first, which makes
     calling a little more uniform.

This drops lines from some callers, and adds lines in a few
places (because we need an extra line to set the context's
fmt field). Overall, we don't save many lines, but the lines
that are there are a lot simpler and more readable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agopretty: add pp_commit_easy function for simple callers
Jeff King [Thu, 26 May 2011 22:27:24 +0000 (18:27 -0400)] 
pretty: add pp_commit_easy function for simple callers

Many callers don't actually care about the pretty print
context at all; let's just give them a simple way of
pretty-printing a commit without having to create a context
struct.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogit-submodule.sh: separate parens by a space to avoid confusing some shells
Brandon Casey [Thu, 26 May 2011 20:52:04 +0000 (13:52 -0700)] 
git-submodule.sh: separate parens by a space to avoid confusing some shells

Some shells interpret '(( ))' according to the rules for arithmetic
expansion.  This may not follow POSIX, but is prevalent in commonly used
shells.  Bash does not have a problem with this particular instance of
'((', likely because it is not followed by a '))', but the public domain
ksh does, and so does ksh on IRIX 6.5.

So, add a space between the parenthesis to avoid confusing these shells.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>