git/git.git
7 years agostruct ref_update: store refname as a FLEX_ARRAY
Michael Haggerty [Mon, 7 Apr 2014 13:48:14 +0000 (15:48 +0200)]
struct ref_update: store refname as a FLEX_ARRAY

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agostruct ref_update: rename field "ref_name" to "refname"
Michael Haggerty [Mon, 7 Apr 2014 13:48:13 +0000 (15:48 +0200)]
struct ref_update: rename field "ref_name" to "refname"

This is consistent with the usual nomenclature.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorefs: remove API function update_refs()
Michael Haggerty [Mon, 7 Apr 2014 13:48:12 +0000 (15:48 +0200)]
refs: remove API function update_refs()

It has been superseded by reference transactions.  This also means
that struct ref_update can become private.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: reimplement using reference transactions
Michael Haggerty [Mon, 7 Apr 2014 13:48:11 +0000 (15:48 +0200)]
update-ref --stdin: reimplement using reference transactions

This change is mostly clerical: the parse_cmd_*() functions need to
use local variables rather than a struct ref_update to collect the
arguments needed for each update, and then call ref_transaction_*() to
queue the change rather than building up the list of changes at the
caller side.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorefs: add a concept of a reference transaction
Michael Haggerty [Mon, 7 Apr 2014 13:48:10 +0000 (15:48 +0200)]
refs: add a concept of a reference transaction

Build out the API for dealing with a bunch of reference checks and
changes within a transaction.  Define an opaque ref_transaction type
that is managed entirely within refs.c.  Introduce functions for
beginning a transaction, adding updates to a transaction, and
committing/rolling back a transaction.

This API will soon replace update_refs().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: harmonize error messages
Michael Haggerty [Mon, 7 Apr 2014 13:48:09 +0000 (15:48 +0200)]
update-ref --stdin: harmonize error messages

Make (most of) the error messages for invalid input have the same
format [1]:

    $COMMAND [SP $REFNAME]: $MESSAGE

Update the tests accordingly.

[1] A few error messages are left with their old form, because
    $COMMAND and $REFNAME aren't passed all the way down the call
    stack.  Maybe those sites should be changed some day, too.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: improve the error message for unexpected EOF
Michael Haggerty [Mon, 7 Apr 2014 13:48:08 +0000 (15:48 +0200)]
update-ref --stdin: improve the error message for unexpected EOF

Distinguish this error from the error that an argument is missing for
another reason.  Update the tests accordingly.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot1400: test one mistake at a time
Michael Haggerty [Mon, 7 Apr 2014 13:48:07 +0000 (15:48 +0200)]
t1400: test one mistake at a time

This case wants to test passing a bad refname to the "update" command.
But it also passes too few arguments to "update", which muddles the
situation: which error should be diagnosed?  So split this test into
two:

* One that passes too few arguments to update

* One that passes all three arguments to "update", but with a bad
  refname.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin -z: deprecate interpreting the empty string as zeros
Michael Haggerty [Mon, 7 Apr 2014 13:48:06 +0000 (15:48 +0200)]
update-ref --stdin -z: deprecate interpreting the empty string as zeros

In the original version of this command, for the single case of the
"update" command's <newvalue>, the empty string was interpreted as
being equivalent to 40 "0"s.  This shorthand is unnecessary (binary
input will usually be generated programmatically anyway), and it
complicates the parser and the documentation.

So gently deprecate this usage: remove its description from the
documentation and emit a warning if it is found.  But for reasons of
backwards compatibility, continue to accept it.

Helped-by: Brad King <brad.king@kitware.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref.c: extract a new function, parse_next_sha1()
Michael Haggerty [Mon, 7 Apr 2014 13:48:05 +0000 (15:48 +0200)]
update-ref.c: extract a new function, parse_next_sha1()

Replace three functions, update_store_new_sha1(),
update_store_old_sha1(), and parse_next_arg(), with a single function,
parse_next_sha1().  The new function takes care of a whole argument,
including checking whether it is there, converting it to an SHA-1, and
emitting errors on EOF or for invalid values.  The return value
indicates whether the argument was present or absent, which requires
a bit of intelligence because absent values are represented
differently depending on whether "-z" was used.

The new interface means that the calling functions, parse_cmd_*(),
don't have to interpret the result differently based on the
line_termination mode that is in effect.  It also means that
parse_cmd_create() can distinguish unambiguously between an empty new
value and a zeros new value, which fixes a failure in t1400.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot1400: test that stdin -z update treats empty <newvalue> as zeros
Michael Haggerty [Mon, 7 Apr 2014 13:48:04 +0000 (15:48 +0200)]
t1400: test that stdin -z update treats empty <newvalue> as zeros

This is the (slightly inconsistent) status quo; make sure it doesn't
change by accident.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: simplify error messages for missing oldvalues
Michael Haggerty [Mon, 7 Apr 2014 13:48:03 +0000 (15:48 +0200)]
update-ref --stdin: simplify error messages for missing oldvalues

Instead of, for example,

    fatal: update refs/heads/master missing [<oldvalue>] NUL

emit

    fatal: update refs/heads/master missing <oldvalue>

Update the tests accordingly.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: make error messages more consistent
Michael Haggerty [Mon, 7 Apr 2014 13:48:02 +0000 (15:48 +0200)]
update-ref --stdin: make error messages more consistent

The old error messages emitted for invalid input sometimes said
"<oldvalue>"/"<newvalue>" and sometimes said "old value"/"new value".
Convert them all to the former.  Update the tests accordingly.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: improve error messages for invalid values
Michael Haggerty [Mon, 7 Apr 2014 13:48:01 +0000 (15:48 +0200)]
update-ref --stdin: improve error messages for invalid values

If an invalid value is passed to "update-ref --stdin" as <oldvalue> or
<newvalue>, include the command and the name of the reference at the
beginning of the error message.  Update the tests accordingly.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref.c: extract a new function, parse_refname()
Michael Haggerty [Mon, 7 Apr 2014 13:48:00 +0000 (15:48 +0200)]
update-ref.c: extract a new function, parse_refname()

There is no reason to obscure the fact that parse_first_arg() always
parses refnames.  Form the new function by combining parse_first_arg()
and update_store_ref_name().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoparse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice
Michael Haggerty [Mon, 7 Apr 2014 13:47:59 +0000 (15:47 +0200)]
parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice

Aside from avoiding a tiny bit of work, this makes it transparently
obvious that old_sha1 and new_sha1 are identical.  It is arguably a
bit silly to have to set new_sha1 in order to verify old_sha1, but
that is a problem for another day.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate-ref --stdin: read the whole input at once
Michael Haggerty [Mon, 7 Apr 2014 13:47:58 +0000 (15:47 +0200)]
update-ref --stdin: read the whole input at once

Read the whole input into a strbuf at once, and then parse it from
there.  This might also be a tad faster, but that is not the point.
The point is to decouple the parsing code from the input source (the
old parsing code had to read new data even in the middle of commands).
Add docstrings for the parsing functions.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoupdate_refs(): fix constness
Michael Haggerty [Mon, 7 Apr 2014 13:47:57 +0000 (15:47 +0200)]
update_refs(): fix constness

The old signature of update_refs() required a
(const struct ref_update **) for its updates_orig argument.  The
"const" is presumably there to promise that the function will not
modify the contents of the structures.

But this declaration does not permit the function to be called with a
(struct ref_update **), which is perfectly legitimate.  C's type
system is not powerful enough to express what we'd like.  So remove
the first "const" from the declaration.

On the other hand, the function *can* promise not to modify the
pointers within the array that is passed to it without inconveniencing
its callers.  So add a "const" that has that effect, making the final
declaration
(struct ref_update * const *).

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorefs.h: rename the action_on_err constants
Michael Haggerty [Mon, 7 Apr 2014 13:47:56 +0000 (15:47 +0200)]
refs.h: rename the action_on_err constants

Given that these constants are only being used when updating
references, it is inappropriate to give them such generic names as
"DIE_ON_ERR".  So prefix their names with "UPDATE_REFS_".

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot1400: add some more tests involving quoted arguments
Michael Haggerty [Mon, 7 Apr 2014 13:47:55 +0000 (15:47 +0200)]
t1400: add some more tests involving quoted arguments

Previously there were no good tests of C-quoted arguments.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoparse_arg(): really test that argument is properly terminated
Michael Haggerty [Mon, 7 Apr 2014 13:47:54 +0000 (15:47 +0200)]
parse_arg(): really test that argument is properly terminated

The old parse_arg(), when fed an argument

    "refs/heads/a"master

parsed 'refs/heads/a' off of the front of the argument and considered
itself successful.  It was only when parse_next_arg() tried to parse
the *next* argument that a problem was noticed.  But in fact, the
definition of the input format requires arguments to be terminated by
SP or NUL, so *this* argument is already erroneous and parse_arg()
should diagnose the problem.

So teach parse_arg() to verify that C-quoted arguments are terminated
correctly.  If not, emit a more specific error message.

There is no corresponding error case of a non-C-quoted argument that
is not terminated correctly, because the end of a non-quoted argument
is *by definition* a space or NUL, so there is no way to insert other
junk between the "end" of the argument and the argument terminator.

Adjust the tests to expect the new error message.  Add a docstring to
the function, incorporating the comments that were formerly within the
function plus some added information.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot1400: provide more usual input to the command
Michael Haggerty [Mon, 7 Apr 2014 13:47:53 +0000 (15:47 +0200)]
t1400: provide more usual input to the command

The old version was passing (among other things)

    update SP refs/heads/c NUL NUL 0{40} NUL

to "git update-ref -z --stdin" to test whether the old-value check for
c is working.  But the <newvalue> is empty, which is a bit off the
beaten track.

So, to be sure that we are testing what we want to test, provide an
actual <newvalue> on the "update" line.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot1400: fix name and expected result of one test
Michael Haggerty [Mon, 7 Apr 2014 13:47:52 +0000 (15:47 +0200)]
t1400: fix name and expected result of one test

The test

    stdin -z create ref fails with zero new value

actually passes an empty new value, not a zero new value.  So rename
the test s/zero/empty/, and change the expected error from

    fatal: create $c given zero new value

to

    fatal: create $c missing <newvalue>

Of course, this makes the test fail now, because although "git
update-ref" tries to distinguish between these two errors, it does not
succeed in this situation.  Fixing it is more than a one-liner, so
mark the test test_expect_failure for now.  The failure will be fixed
later in this patch series.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoUpdate draft release notes to 2.0
Junio C Hamano [Mon, 31 Mar 2014 23:41:23 +0000 (16:41 -0700)]
Update draft release notes to 2.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'mm/status-porcelain-format-i18n-fix'
Junio C Hamano [Mon, 31 Mar 2014 23:31:25 +0000 (16:31 -0700)]
Merge branch 'mm/status-porcelain-format-i18n-fix'

* mm/status-porcelain-format-i18n-fix:
  status: disable translation when --porcelain is used

7 years agoMerge branch 'an/branch-config-message'
Junio C Hamano [Mon, 31 Mar 2014 23:31:19 +0000 (16:31 -0700)]
Merge branch 'an/branch-config-message'

* an/branch-config-message:
  branch.c: install_branch_config: simplify if chain

7 years agoMerge branch 'jk/tests-cleanup'
Junio C Hamano [Mon, 31 Mar 2014 23:31:17 +0000 (16:31 -0700)]
Merge branch 'jk/tests-cleanup'

* jk/tests-cleanup:
  t0001: drop subshells just for "cd"
  t0001: drop useless subshells
  t0001: use test_must_fail
  t0001: use test_config_global
  t0001: use test_path_is_*
  t0001: make symlink reinit test more careful
  t: prefer "git config --file" to GIT_CONFIG
  t: prefer "git config --file" to GIT_CONFIG with test_must_fail
  t: stop using GIT_CONFIG to cross repo boundaries
  t: drop useless sane_unset GIT_* calls
  t/test-lib: drop redundant unset of GIT_CONFIG
  t/Makefile: stop setting GIT_CONFIG

7 years agoMerge branch 'wt/doc-submodule-name-path-confusion-2'
Junio C Hamano [Mon, 31 Mar 2014 23:31:16 +0000 (16:31 -0700)]
Merge branch 'wt/doc-submodule-name-path-confusion-2'

* wt/doc-submodule-name-path-confusion-2:
  doc: submodule.*.branch config is keyed by name

7 years agoMerge branch 'wt/doc-submodule-name-path-confusion-1'
Junio C Hamano [Mon, 31 Mar 2014 23:31:13 +0000 (16:31 -0700)]
Merge branch 'wt/doc-submodule-name-path-confusion-1'

* wt/doc-submodule-name-path-confusion-1:
  doc: submodule.* config are keyed by submodule names

7 years agoMerge branch 'mr/msvc-link-with-lcurl'
Junio C Hamano [Mon, 31 Mar 2014 23:31:07 +0000 (16:31 -0700)]
Merge branch 'mr/msvc-link-with-lcurl'

* mr/msvc-link-with-lcurl:
  MSVC: allow linking with the cURL library

7 years agoMerge branch 'ib/rev-parse-parseopt-argh'
Junio C Hamano [Mon, 31 Mar 2014 23:30:59 +0000 (16:30 -0700)]
Merge branch 'ib/rev-parse-parseopt-argh'

Teaches the "rev-parse --parseopt" mechanism used by scripted
Porcelains to parse command line options and give help text how to
supply argv-help (the placeholder string for an option parameter,
e.g. "key-id" in "--gpg-sign=<key-id>").

* ib/rev-parse-parseopt-argh:
  t1502: protect runs of SPs used in the indentation
  rev-parse --parseopt: option argument name hints

7 years agoMerge branch 'dp/makefile-charset-lib-doc'
Junio C Hamano [Mon, 31 Mar 2014 23:30:57 +0000 (16:30 -0700)]
Merge branch 'dp/makefile-charset-lib-doc'

* dp/makefile-charset-lib-doc:
  Makefile: describe CHARSET_LIB better

7 years agoMerge branch 'js/userdiff-cc'
Junio C Hamano [Mon, 31 Mar 2014 23:30:54 +0000 (16:30 -0700)]
Merge branch 'js/userdiff-cc'

Improves the pattern to match the hunk-header for C/C++.

* js/userdiff-cc:
  userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
  t4018: test cases showing that the cpp pattern misses many anchor points
  t4018: test cases for the built-in cpp pattern
  t4018: reduce test files for pattern compilation tests
  t4018: convert custom pattern test to the new infrastructure
  t4018: convert java pattern test to the new infrastructure
  t4018: convert perl pattern tests to the new infrastructure
  t4018: an infrastructure to test hunk headers
  userdiff: support unsigned and long long suffixes of integer constants
  userdiff: support C++ ->* and .* operators in the word regexp

7 years agoMerge branch 'dw/doc-status-no-longer-shows-pound-prefix'
Junio C Hamano [Mon, 31 Mar 2014 23:30:52 +0000 (16:30 -0700)]
Merge branch 'dw/doc-status-no-longer-shows-pound-prefix'

* dw/doc-status-no-longer-shows-pound-prefix:
  doc: status, remove leftover statement about '#' prefix

7 years agoMerge branch 'ca/doc-config-third-party'
Junio C Hamano [Mon, 31 Mar 2014 23:30:49 +0000 (16:30 -0700)]
Merge branch 'ca/doc-config-third-party'

* ca/doc-config-third-party:
  config.txt: third-party tools may and do use their own variables

7 years agoMerge branch 'hs/simplify-bit-setting-in-fsck-tree'
Junio C Hamano [Mon, 31 Mar 2014 23:30:44 +0000 (16:30 -0700)]
Merge branch 'hs/simplify-bit-setting-in-fsck-tree'

* hs/simplify-bit-setting-in-fsck-tree:
  fsck: use bitwise-or assignment operator to set flag

7 years agoMerge branch 'dt/tests-with-env-not-subshell'
Junio C Hamano [Mon, 31 Mar 2014 23:30:40 +0000 (16:30 -0700)]
Merge branch 'dt/tests-with-env-not-subshell'

* dt/tests-with-env-not-subshell:
  tests: use "env" to run commands with temporary env-var settings

7 years agoUpdate draft release notes to 2.0
Junio C Hamano [Fri, 28 Mar 2014 20:56:29 +0000 (13:56 -0700)]
Update draft release notes to 2.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'ys/fsck-commit-parsing'
Junio C Hamano [Fri, 28 Mar 2014 20:51:24 +0000 (13:51 -0700)]
Merge branch 'ys/fsck-commit-parsing'

* ys/fsck-commit-parsing:
  fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
  fsck.c:fsck_ident(): ident points at a const string

7 years agoMerge branch 'bg/rebase-off-of-previous-branch'
Junio C Hamano [Fri, 28 Mar 2014 20:51:20 +0000 (13:51 -0700)]
Merge branch 'bg/rebase-off-of-previous-branch'

* bg/rebase-off-of-previous-branch:
  rebase: allow "-" short-hand for the previous branch

7 years agoMerge branch 'bp/commit-p-editor'
Junio C Hamano [Fri, 28 Mar 2014 20:51:11 +0000 (13:51 -0700)]
Merge branch 'bp/commit-p-editor'

When it is not necessary to edit a commit log message (e.g. "git
commit -m" is given a message without specifying "-e"), we used to
disable the spawning of the editor by overriding GIT_EDITOR, but
this means all the uses of the editor, other than to edit the
commit log message, are also affected.

* bp/commit-p-editor:
  run-command: mark run_hook_with_custom_index as deprecated
  merge hook tests: fix and update tests
  merge: fix GIT_EDITOR override for commit hook
  commit: fix patch hunk editing with "commit -p -m"
  test patch hunk editing with "commit -p -m"
  merge hook tests: use 'test_must_fail' instead of '!'
  merge hook tests: fix missing '&&' in test

7 years agoMerge branch 'ah/doc-gitk-config'
Junio C Hamano [Fri, 28 Mar 2014 20:51:08 +0000 (13:51 -0700)]
Merge branch 'ah/doc-gitk-config'

* ah/doc-gitk-config:
  Documentation/gitk: document the location of the configulation file

7 years agoMerge branch 'fr/add-interactive-argv-array'
Junio C Hamano [Fri, 28 Mar 2014 20:51:04 +0000 (13:51 -0700)]
Merge branch 'fr/add-interactive-argv-array'

* fr/add-interactive-argv-array:
  add: use struct argv_array in run_add_interactive()

7 years agoMerge branch 'jk/subtree-prefix'
Junio C Hamano [Fri, 28 Mar 2014 20:50:59 +0000 (13:50 -0700)]
Merge branch 'jk/subtree-prefix'

A stray environment variable $prefix could have leaked into and
affected the behaviour of the "subtree" script.

* jk/subtree-prefix:
  subtree: initialize "prefix" variable

7 years agoMerge branch 'jk/pack-bitmap-progress'
Junio C Hamano [Fri, 28 Mar 2014 20:50:56 +0000 (13:50 -0700)]
Merge branch 'jk/pack-bitmap-progress'

The progress output while repacking and transferring objects showed
an apparent large silence while writing the objects out of existing
packfiles, when the reachability bitmap was in use.

* jk/pack-bitmap-progress:
  pack-objects: show reused packfile objects in "Counting objects"
  pack-objects: show progress for reused packfiles

7 years agoMerge branch 'jk/pack-bitmap'
Junio C Hamano [Fri, 28 Mar 2014 20:50:50 +0000 (13:50 -0700)]
Merge branch 'jk/pack-bitmap'

Instead of dying when asked to (re)pack with the reachability
bitmap when a bitmap cannot be built, just (re)pack without
producing a bitmap in such a case, with a warning.

* jk/pack-bitmap:
  pack-objects: turn off bitmaps when skipping objects

7 years agodoc: submodule.*.branch config is keyed by name
W. Trevor King [Thu, 27 Mar 2014 21:06:20 +0000 (14:06 -0700)]
doc: submodule.*.branch config is keyed by name

Ever since 941987a5 (git-submodule: give submodules proper names,
2007-06-11) introduced the ability to move a submodule from one path
to another inside its superproject tree without losing its identity,
we should have consistently used submodule.<name>.* to access
settings related to the named submodule.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agodoc: submodule.* config are keyed by submodule names
W. Trevor King [Thu, 27 Mar 2014 21:06:20 +0000 (14:06 -0700)]
doc: submodule.* config are keyed by submodule names

Ever since 941987a5 (git-submodule: give submodules proper names,
2007-06-11) introduced the ability to move a submodule from one path
to another inside its superproject tree without losing its identity,
we should have consistently used submodule.<name>.* to access
settings related to the named submodule.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMSVC: allow linking with the cURL library
Marat Radchenko [Thu, 27 Mar 2014 07:34:27 +0000 (11:34 +0400)]
MSVC: allow linking with the cURL library

Teach the clink.pl script that -lcurl is a request to link with the
cURL library, and drop NO_CURL from config.mak.uname for the MSVC
platform.

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agostatus: disable translation when --porcelain is used
Matthieu Moy [Thu, 20 Mar 2014 12:12:41 +0000 (13:12 +0100)]
status: disable translation when --porcelain is used

"git status --branch --porcelain" displays the status of the branch
(ahead, behind, gone), and used gettext to translate the string.

Use hardcoded strings when --porcelain is used, but keep the gettext
translation for "git status --short" which is essentially the same, but
meant to be read by a human.

Reported-by: Anarky <ghostanarky@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoUpdate draft release notes to 2.0
Junio C Hamano [Tue, 25 Mar 2014 19:01:39 +0000 (12:01 -0700)]
Update draft release notes to 2.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'ss/test-on-mingw-rsync-path-no-absolute'
Junio C Hamano [Tue, 25 Mar 2014 18:08:35 +0000 (11:08 -0700)]
Merge branch 'ss/test-on-mingw-rsync-path-no-absolute'

* ss/test-on-mingw-rsync-path-no-absolute:
  t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync

7 years agoMerge branch 'bb/diff-no-index-dotdot'
Junio C Hamano [Tue, 25 Mar 2014 18:08:31 +0000 (11:08 -0700)]
Merge branch 'bb/diff-no-index-dotdot'

* bb/diff-no-index-dotdot:
  diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
  diff-no-index: rename read_directory()

7 years agoMerge branch 'us/printf-not-echo'
Junio C Hamano [Tue, 25 Mar 2014 18:08:26 +0000 (11:08 -0700)]
Merge branch 'us/printf-not-echo'

* us/printf-not-echo:
  test-lib.sh: do not "echo" caller-supplied strings
  rebase -i: do not "echo" random user-supplied strings

7 years agoMerge branch 'rr/doc-merge-strategies'
Junio C Hamano [Tue, 25 Mar 2014 18:08:23 +0000 (11:08 -0700)]
Merge branch 'rr/doc-merge-strategies'

* rr/doc-merge-strategies:
  Documentation/merge-strategies: avoid hyphenated commands

7 years agoMerge branch 'nd/index-pack-error-message'
Junio C Hamano [Tue, 25 Mar 2014 18:08:19 +0000 (11:08 -0700)]
Merge branch 'nd/index-pack-error-message'

* nd/index-pack-error-message:
  index-pack: report error using the correct variable

7 years agoMerge branch 'jk/lib-terminal-lazy'
Junio C Hamano [Tue, 25 Mar 2014 18:08:09 +0000 (11:08 -0700)]
Merge branch 'jk/lib-terminal-lazy'

The test helper lib-terminal always run an actual test_expect_* when
included, which screwed up with the use of skil-all that may have to
be done later.

* jk/lib-terminal-lazy:
  t/lib-terminal: make TTY a lazy prerequisite

7 years agoMerge branch 'dm/configure-iconv-locale-charset'
Junio C Hamano [Tue, 25 Mar 2014 18:07:51 +0000 (11:07 -0700)]
Merge branch 'dm/configure-iconv-locale-charset'

* dm/configure-iconv-locale-charset:
  configure.ac: link with -liconv for locale_charset()

7 years agoMerge branch 'nd/commit-editor-cleanup'
Junio C Hamano [Tue, 25 Mar 2014 18:07:47 +0000 (11:07 -0700)]
Merge branch 'nd/commit-editor-cleanup'

"git commit --cleanup=<mode>" learned a new mode, scissors.

* nd/commit-editor-cleanup:
  commit: add --cleanup=scissors
  wt-status.c: move cut-line print code out to wt_status_add_cut_line
  wt-status.c: make cut_line[] const to shrink .data section a bit

7 years agoMerge branch 'jk/warn-on-object-refname-ambiguity'
Junio C Hamano [Tue, 25 Mar 2014 18:07:36 +0000 (11:07 -0700)]
Merge branch 'jk/warn-on-object-refname-ambiguity'

* jk/warn-on-object-refname-ambiguity:
  rev-list: disable object/refname ambiguity check with --stdin
  cat-file: restore warn_on_object_refname_ambiguity flag
  cat-file: fix a minor memory leak in batch_objects
  cat-file: refactor error handling of batch_objects

7 years agoMerge branch 'mh/remove-subtree-long-pathname-fix'
Junio C Hamano [Tue, 25 Mar 2014 18:07:09 +0000 (11:07 -0700)]
Merge branch 'mh/remove-subtree-long-pathname-fix'

* mh/remove-subtree-long-pathname-fix:
  entry.c: fix possible buffer overflow in remove_subtree()
  checkout_entry(): use the strbuf throughout the function

7 years agoMerge branch 'nd/indent-fix-connect-c'
Junio C Hamano [Tue, 25 Mar 2014 18:07:05 +0000 (11:07 -0700)]
Merge branch 'nd/indent-fix-connect-c'

* nd/indent-fix-connect-c:
  connect.c: SP after "}", not TAB

7 years agoMerge branch 'jk/mv-submodules-fix'
Junio C Hamano [Tue, 25 Mar 2014 18:02:01 +0000 (11:02 -0700)]
Merge branch 'jk/mv-submodules-fix'

"git mv" that moves a submodule forgot to adjust the array that uses
to keep track of which submodules were to be moved to update its
configuration.

* jk/mv-submodules-fix:
  mv: prevent mismatched data when ignoring errors.
  builtin/mv: fix out of bounds write

7 years agoMerge branch 'cp/am-patch-format-doc'
Junio C Hamano [Tue, 25 Mar 2014 18:01:31 +0000 (11:01 -0700)]
Merge branch 'cp/am-patch-format-doc'

* cp/am-patch-format-doc:
  Documentation/git-am: typofix
  Documentation/git-am: Document supported --patch-format options

7 years agobranch.c: install_branch_config: simplify if chain
Adam [Mon, 10 Mar 2014 05:32:01 +0000 (01:32 -0400)]
branch.c: install_branch_config: simplify if chain

Simplify if chain in install_branch_config().

Signed-off-by: Adam <Adam@sigterm.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot1502: protect runs of SPs used in the indentation
Junio C Hamano [Sun, 23 Mar 2014 22:26:36 +0000 (15:26 -0700)]
t1502: protect runs of SPs used in the indentation

The expected output from the argument help use runs of SPs to align
the description of each option; a careless use of --whitespace=fix
can turn leading parts of them into appropriate number of HTs.
Prevent such a breakage by prefixing all the expected lines with
leading vertical bars in the original and stripping them with a
small sed script.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorev-parse --parseopt: option argument name hints
Ilya Bobyr [Sat, 22 Mar 2014 09:47:34 +0000 (02:47 -0700)]
rev-parse --parseopt: option argument name hints

Built-in commands can specify names for option arguments when usage text
is generated for a command.  sh based commands should be able to do the
same.

Option argument name hint is any text that comes after [*=?!] after the
argument name up to the first whitespace.

Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMakefile: describe CHARSET_LIB better
Дилян Палаузов [Tue, 11 Mar 2014 22:37:33 +0000 (23:37 +0100)]
Makefile: describe CHARSET_LIB better

The original explanation was not even grammatically correct or
readable.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agouserdiff: have 'cpp' hunk header pattern catch more C++ anchor points
Johannes Sixt [Fri, 21 Mar 2014 21:07:22 +0000 (22:07 +0100)]
userdiff: have 'cpp' hunk header pattern catch more C++ anchor points

The hunk header pattern 'cpp' is intended for C and C++ source code, but
it is actually not particularly useful for the latter, and even misses
some use-cases for the former.

The parts of the pattern have the following flaws:

- The first part matches an identifier followed immediately by a colon
  and arbitrary text and is intended to reject goto labels and C++
  access specifiers (public, private, protected). But this pattern also
  rejects C++ constructs, which look like this:

    MyClass::MyClass()
    MyClass::~MyClass()
    MyClass::Item MyClass::Find(...

- The second part matches an identifier followed by a list of qualified
  names (i.e. identifiers separated by the C++ scope operator '::')
  separated by space or '*' followed by an opening parenthesis (with
  space between the tokens). It matches function declarations like

    struct item* get_head(...
    int Outer::Inner::Func(...

  Since the pattern requires at least two identifiers, GNU-style
  function definitions are ignored:

    void
    func(...

  Moreover, since the pattern does not allow punctuation other than '*',
  the following C++ constructs are not recognized:

  . template definitions:
      template<class T> int func(T arg)

  . functions returning references:
      const string& get_message()

  . functions returning templated types:
      vector<int> foo()

  . operator definitions:
      Value operator+(Value l, Value r)

- The third part of the pattern finally matches compound definitions.
  But it forgets about unions and namespaces, and also skips single-line
  definitions

    struct random_iterator_tag {};

  because no semicolon can occur on the line.

Change the first pattern to require a colon at the end of the line
(except for trailing space and comments), so that it does not reject
constructor or destructor definitions.

Notice that all interesting anchor points begin with an identifier or
keyword. But since there is a large variety of syntactical constructs
after the first "word", the simplest is to require only this word and
accept everything else. Therefore, this boils down to a line that begins
with a letter or underscore (optionally preceded by the C++ scope
operator '::' to accept functions returning a type anchored at the
global namespace). Replace the second and third part by a single pattern
that picks such a line.

This has the following desirable consequence:

- All constructs mentioned above are recognized.

and the following likely desirable consequences:

- Definitions of global variables and typedefs are recognized:

    int num_entries = 0;
    extern const char* help_text;
    typedef basic_string<wchar_t> wstring;

- Commonly used marco-ized boilerplate code is recognized:

    BEGIN_MESSAGE_MAP(CCanvas,CWnd)
    Q_DECLARE_METATYPE(MyStruct)
    PATTERNS("tex",...)

  (The last one is from this very patch.)

but also the following possibly undesirable consequence:

- When a label is not on a line by itself (except for a comment) it is
  no longer rejected, but can appear as a hunk header if it occurs at
  the beginning of a line:

    next:;

IMO, the benefits of the change outweigh the (possible) regressions by a
large margin.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: test cases showing that the cpp pattern misses many anchor points
Johannes Sixt [Fri, 21 Mar 2014 21:07:21 +0000 (22:07 +0100)]
t4018: test cases showing that the cpp pattern misses many anchor points

Most of the tests show C++ code, but there is also a union definition and
a GNU style function definition that are not recognized.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: test cases for the built-in cpp pattern
Johannes Sixt [Fri, 21 Mar 2014 21:07:20 +0000 (22:07 +0100)]
t4018: test cases for the built-in cpp pattern

A later patch changes the built-in cpp pattern. These test cases
demonstrate aspects of the pattern that we do not want to change.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: reduce test files for pattern compilation tests
Johannes Sixt [Fri, 21 Mar 2014 21:07:19 +0000 (22:07 +0100)]
t4018: reduce test files for pattern compilation tests

All test cases that need a file with specific text patterns have been
converted to utilize texts in the t4018/ directory. The remaining tests
in the test script deal only with the validity of the regular
expressions. These tests do not depend on the contents of files that
'git diff' is invoked on. Remove the largish here-document and use only
tiny files.

While we are touching these tests, convert grep to test_i18ngrep as the
texts checked for may undergo translation in the future.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: convert custom pattern test to the new infrastructure
Johannes Sixt [Fri, 21 Mar 2014 21:07:18 +0000 (22:07 +0100)]
t4018: convert custom pattern test to the new infrastructure

For the test case "matches to end of line", extend the pattern by a few
wildcards so that the pattern captures the "RIGHT" token, which is needed
for verification, without mentioning it in the pattern.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: convert java pattern test to the new infrastructure
Johannes Sixt [Fri, 21 Mar 2014 21:07:17 +0000 (22:07 +0100)]
t4018: convert java pattern test to the new infrastructure

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: convert perl pattern tests to the new infrastructure
Johannes Sixt [Fri, 21 Mar 2014 21:07:16 +0000 (22:07 +0100)]
t4018: convert perl pattern tests to the new infrastructure

There is one subtlety: The old test case 'perl pattern gets full line of
POD header' does not have its own new test case, but the feature is
tested nevertheless by placing the RIGHT tag at the end of the expected
hunk header in t4018/perl-skip-sub-in-pod.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot4018: an infrastructure to test hunk headers
Johannes Sixt [Fri, 21 Mar 2014 21:07:15 +0000 (22:07 +0100)]
t4018: an infrastructure to test hunk headers

Add an infrastructure that simplifies adding new tests of the hunk
header regular expressions.

To add new tests, a file with the syntax to test can be dropped in the
directory t4018. The README file explains how a test file must contain;
the README itself tests the default behavior.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agouserdiff: support unsigned and long long suffixes of integer constants
Johannes Sixt [Fri, 21 Mar 2014 21:07:14 +0000 (22:07 +0100)]
userdiff: support unsigned and long long suffixes of integer constants

Do not split constants such as 123U, 456ll, 789UL at the first U or
second L.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agouserdiff: support C++ ->* and .* operators in the word regexp
Johannes Sixt [Fri, 21 Mar 2014 21:07:13 +0000 (22:07 +0100)]
userdiff: support C++ ->* and .* operators in the word regexp

The character sequences ->* and .* are valid C++ operators. Keep them
together in --word-diff mode.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot0001: drop subshells just for "cd"
Jeff King [Thu, 20 Mar 2014 23:23:06 +0000 (19:23 -0400)]
t0001: drop subshells just for "cd"

Many tests do something like:

  (
mkdir foo &&
cd foo &&
git init
  )

You can do the same these days with "git init foo", which
makes the tests shorter and simpler to read.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot0001: drop useless subshells
Jeff King [Thu, 20 Mar 2014 23:21:25 +0000 (19:21 -0400)]
t0001: drop useless subshells

Many tests use subshells, but don't actually change the
shell environment. They were probably cargo-culted from
earlier tests which did need subshells. Drop the useless
ones.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot0001: use test_must_fail
Jeff King [Thu, 20 Mar 2014 23:19:50 +0000 (19:19 -0400)]
t0001: use test_must_fail

We've hand-rolled several "if" statements looking for
failures. We can use test_must_fail here, which is shorter
and more robust.

Note that we modify the commands slightly (to use "git init
foo" rather than "cd foo && git init") to avoid dealing with
a subshell, but this should not affect the outcome.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot0001: use test_config_global
Jeff King [Thu, 20 Mar 2014 23:18:12 +0000 (19:18 -0400)]
t0001: use test_config_global

We hand-set several config options using :

  git config -f $HOME/.gitconfig ...

Instead, we can use "test_config_global". Not only is this
more readable, but it cleans up for us so that subsequent
tests aren't polluted by our settings.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot0001: use test_path_is_*
Jeff King [Thu, 20 Mar 2014 23:17:35 +0000 (19:17 -0400)]
t0001: use test_path_is_*

t0001 predates the test_path_is_* helpers, and uses "test
-f" and "test -d" directly. Using the helpers provides
better debugging output, and are a little more robust.
As opposed to "! test -d", test_path_is_missing will
actually makes sure the path does not exist at all.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot0001: make symlink reinit test more careful
Jeff King [Thu, 20 Mar 2014 23:17:15 +0000 (19:17 -0400)]
t0001: make symlink reinit test more careful

In the final test of t0001, we have a repo whose .git is a
symlink to a directory "here", and we use
"--separate-git-dir" to migrate that to a .git file pointing
to a different directory. We check that the data is migrated
to the new directory and that .git looks like a git-file.

We also check that "here" is not a directory, which is
slightly misleading. It should not be a directory, but
neither should it be gone. It is the actual resting place of
the git-file, and .git remains a symlink to it.

Let's check that more explicitly, both to make our test more
robust, and to make further cleanups in this area more
obvious.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot: prefer "git config --file" to GIT_CONFIG
Jeff King [Thu, 20 Mar 2014 23:17:01 +0000 (19:17 -0400)]
t: prefer "git config --file" to GIT_CONFIG

Doing:

  GIT_CONFIG=foo git config ...

is equivalent to:

  git config --file=foo ...

The latter is easier to read and slightly less error-prone,
because of issues with one-shot variables and shell
functions (e.g., you cannot use the former with
test_must_fail).

Note that we explicitly leave one case in t1300 which checks
the same operation on both GIT_CONFIG and "git config
--file". They are equivalent in the code these days, but
this will make sure it remains so.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot: prefer "git config --file" to GIT_CONFIG with test_must_fail
Jeff King [Thu, 20 Mar 2014 23:15:54 +0000 (19:15 -0400)]
t: prefer "git config --file" to GIT_CONFIG with test_must_fail

This lets us get rid of an extra "env" invocation in the
middle, and is slightly more readable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot: stop using GIT_CONFIG to cross repo boundaries
Jeff King [Thu, 20 Mar 2014 23:15:24 +0000 (19:15 -0400)]
t: stop using GIT_CONFIG to cross repo boundaries

Some tests want to check or set config in another
repository. E.g., t1000 creates repositories and makes sure
that their core.bare and core.worktree settings are what we
expect. We can do this with:

  GIT_CONFIG=$repo/.git/config git config ...

but it better shows the intent to just enter the repository
and let "git config" do the normal lookups:

  (cd $repo && git config ...)

In theory, this would cause us to use an extra subshell, but
in all such cases, we are actually already in a subshell.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot: drop useless sane_unset GIT_* calls
Jeff King [Thu, 20 Mar 2014 23:14:33 +0000 (19:14 -0400)]
t: drop useless sane_unset GIT_* calls

Several test scripts manually unset GIT_CONFIG and other
GIT_* variables. These are generally taken care of for us by
test-lib.sh already.

Unsetting these is not only useless, but can be confusing to
a reader, who may wonder why some tests in a script unset
them and others do not (t0001 is particularly guilty of this
inconsistency, probably because many of its tests predate
the test-lib.sh environment-cleansing).

Note that we cannot always get rid of such unsetting. For
example, t9130 can drop the GIT_CONFIG unset, but not the
GIT_DIR one, because lib-git-svn.sh sets the latter. And in
t1000, we unset GIT_TEMPLATE_DIR, which is explicitly
initialized by test-lib.sh.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot/test-lib: drop redundant unset of GIT_CONFIG
Jeff King [Thu, 20 Mar 2014 23:13:36 +0000 (19:13 -0400)]
t/test-lib: drop redundant unset of GIT_CONFIG

This is already handled by the mass GIT_* unsetting added by
95a1d12 (tests: scrub environment of GIT_* variables,
2011-03-15).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agot/Makefile: stop setting GIT_CONFIG
Jeff King [Thu, 20 Mar 2014 23:13:21 +0000 (19:13 -0400)]
t/Makefile: stop setting GIT_CONFIG

Once upon a time, the setting of GIT_CONFIG in the
environment could affect how tests ran. Commit 9c3796f (Fix
setting config variables with an alternative GIT_CONFIG,
2006-06-20) unconditionally set GIT_CONFIG in the Makefile
when running tests to give us a known starting point.

This is insufficient for running the tests outside of the
Makefile, however, and 8565d2d (Make tests independent of
global config files, 2007-02-15) later set GIT_CONFIG
directly in test-lib.sh. At that point the Makefile setting
was redundant, but we never removed it. Let's do so now.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoUpdate draft release notes to 2.0
Junio C Hamano [Fri, 21 Mar 2014 20:41:27 +0000 (13:41 -0700)]
Update draft release notes to 2.0

7 years agoMerge branch 'lt/request-pull'
Junio C Hamano [Fri, 21 Mar 2014 19:50:44 +0000 (12:50 -0700)]
Merge branch 'lt/request-pull'

Discard the accumulated "heuristics" to guess from which branch the
result wants to be pulled from and make sure what the end user
specified is not second-guessed by "git request-pull", to avoid
mistakes.

* lt/request-pull:
  request-pull: documentation updates
  request-pull: resurrect "pretty refname" feature
  request-pull: test updates
  request-pull: pick up tag message as before
  request-pull: allow "local:remote" to specify names on both ends
  request-pull: more strictly match local/remote branches

7 years agoMerge branch 'es/sh-i18n-envsubst'
Junio C Hamano [Fri, 21 Mar 2014 19:50:39 +0000 (12:50 -0700)]
Merge branch 'es/sh-i18n-envsubst'

* es/sh-i18n-envsubst:
  sh-i18n--envsubst: retire unused string_list_member()

7 years agoMerge branch 'nd/upload-pack-shallow'
Junio C Hamano [Fri, 21 Mar 2014 19:49:08 +0000 (12:49 -0700)]
Merge branch 'nd/upload-pack-shallow'

Serving objects from a shallow repository needs to write a
temporary file to be used, but the serving upload-pack may not have
write access to the repository which is meant to be read-only.

Instead feed these temporary shallow bounds from the standard input
of pack-objects so that we do not have to use a temporary file.

* nd/upload-pack-shallow:
  upload-pack: send shallow info over stdin to pack-objects

7 years agoMerge branch 'jn/wt-status'
Junio C Hamano [Fri, 21 Mar 2014 19:48:59 +0000 (12:48 -0700)]
Merge branch 'jn/wt-status'

Unify the codepaths that format new/modified/changed sections and
conflicted paths in the "git status" output and make it possible to
properly internationalize their output.

* jn/wt-status:
  wt-status: lift the artificual "at least 20 columns" floor
  wt-status: i18n of section labels
  wt-status: extract the code to compute width for labels
  wt-status: make full label string to be subject to l10n

7 years agoMerge branch 'jc/stash-pop-not-popped'
Junio C Hamano [Fri, 21 Mar 2014 19:48:51 +0000 (12:48 -0700)]
Merge branch 'jc/stash-pop-not-popped'

"stash pop", upon failing to apply the stash, refrains from
discarding the stash to avoid information loss.  Be more explicit
in the error message.

The wording may want to get a bit more bikeshedding.

* jc/stash-pop-not-popped:
  stash pop: mention we did not drop the stash upon failing to apply

7 years agoMerge branch 'dk/skip-prefix-scan-only-once'
Junio C Hamano [Fri, 21 Mar 2014 19:47:41 +0000 (12:47 -0700)]
Merge branch 'dk/skip-prefix-scan-only-once'

Update implementation of skip_prefix() to scan only once; given
that most "prefix" arguments to the inline function are constant
strings whose strlen() can be determined at the compile time, this
might actually make things worse with a compiler with sufficient
intelligence.

* dk/skip-prefix-scan-only-once:
  skip_prefix(): scan prefix only once

7 years agoMerge branch 'nd/tag-version-sort'
Junio C Hamano [Fri, 21 Mar 2014 19:47:38 +0000 (12:47 -0700)]
Merge branch 'nd/tag-version-sort'

Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

* nd/tag-version-sort:
  tag: support --sort=<spec>

7 years agoMerge branch 'jk/shallow-update-fix'
Junio C Hamano [Fri, 21 Mar 2014 19:33:29 +0000 (12:33 -0700)]
Merge branch 'jk/shallow-update-fix'

Serving objects from a shallow repository needs to write a
new file to hold the temporary shallow boundaries but it was not
cleaned when we exit due to die() or a signal.

* jk/shallow-update-fix:
  shallow: verify shallow file after taking lock
  shallow: automatically clean up shallow tempfiles
  shallow: use stat_validity to check for up-to-date file

7 years agoMerge branch 'tc/commit-dry-run-exit-status-tests'
Junio C Hamano [Fri, 21 Mar 2014 19:33:25 +0000 (12:33 -0700)]
Merge branch 'tc/commit-dry-run-exit-status-tests'

* tc/commit-dry-run-exit-status-tests:
  demonstrate git-commit --dry-run exit code behaviour