]> Pileus Git - ~andy/git/log
~andy/git
10 years agoMerge branch 'js/lift-parent-count-limit'
Junio C Hamano [Fri, 10 Jan 2014 18:33:36 +0000 (10:33 -0800)]
Merge branch 'js/lift-parent-count-limit'

There is no reason to have a hardcoded upper limit of the number of
parents for an octopus merge, created via the graft mechanism.

* js/lift-parent-count-limit:
  Remove the line length limit for graft files

10 years agoMerge branch 'jk/test-framework-updates'
Junio C Hamano [Fri, 10 Jan 2014 18:33:34 +0000 (10:33 -0800)]
Merge branch 'jk/test-framework-updates'

The basic test used to leave unnecessary trash directories in the
t/ directory.

* jk/test-framework-updates:
  t0000: drop "known breakage" test
  t0000: simplify HARNESS_ACTIVE hack
  t0000: set TEST_OUTPUT_DIRECTORY for sub-tests

10 years agoMerge branch 'bm/merge-base-octopus-dedup'
Junio C Hamano [Fri, 10 Jan 2014 18:33:32 +0000 (10:33 -0800)]
Merge branch 'bm/merge-base-octopus-dedup'

"git merge-base --octopus" used to leave cleaning up suboptimal
result to the caller, but now it does the clean-up itself.

* bm/merge-base-octopus-dedup:
  merge-base --octopus: reduce the result from get_octopus_merge_bases()
  merge-base: separate "--independent" codepath into its own helper

10 years agoMerge branch 'km/gc-eperm'
Junio C Hamano [Fri, 10 Jan 2014 18:33:30 +0000 (10:33 -0800)]
Merge branch 'km/gc-eperm'

A "gc" process running as a different user should be able to stop a
new "gc" process from starting.

* km/gc-eperm:
  gc: notice gc processes run by other users

10 years agoMerge branch 'jk/http-auth-tests-robustify'
Junio C Hamano [Fri, 10 Jan 2014 18:33:18 +0000 (10:33 -0800)]
Merge branch 'jk/http-auth-tests-robustify'

Using the same username and password during the tests would not
catch a potential breakage of sending one when we should be sending
the other.

* jk/http-auth-tests-robustify:
  use distinct username/password for http auth tests

10 years agoMerge branch 'jk/credential-plug-leak'
Junio C Hamano [Fri, 10 Jan 2014 18:33:16 +0000 (10:33 -0800)]
Merge branch 'jk/credential-plug-leak'

An earlier "clean-up" introduced an unnecessary memory leak.

* jk/credential-plug-leak:
  Revert "prompt: clean up strbuf usage"

10 years agoMerge branch 'bs/mirbsd'
Junio C Hamano [Fri, 10 Jan 2014 18:33:14 +0000 (10:33 -0800)]
Merge branch 'bs/mirbsd'

* bs/mirbsd:
  Add MirBSD support to the build system.

10 years agoMerge branch 'nd/commit-tree-constness'
Junio C Hamano [Fri, 10 Jan 2014 18:33:13 +0000 (10:33 -0800)]
Merge branch 'nd/commit-tree-constness'

Code clean-up.

* nd/commit-tree-constness:
  commit.c: make "tree" a const pointer in commit_tree*()

10 years agoMerge branch 'jk/oi-delta-base'
Junio C Hamano [Fri, 10 Jan 2014 18:33:11 +0000 (10:33 -0800)]
Merge branch 'jk/oi-delta-base'

Teach "cat-file --batch" to show delta-base object name for a
packed object that is represented as a delta.

* jk/oi-delta-base:
  cat-file: provide %(deltabase) batch format
  sha1_object_info_extended: provide delta base sha1s

10 years agoMerge branch 'jk/sha1write-void'
Junio C Hamano [Fri, 10 Jan 2014 18:33:09 +0000 (10:33 -0800)]
Merge branch 'jk/sha1write-void'

Code clean-up.

* jk/sha1write-void:
  do not pretend sha1write returns errors

10 years agoMerge branch 'nd/add-empty-fix'
Junio C Hamano [Fri, 10 Jan 2014 18:33:03 +0000 (10:33 -0800)]
Merge branch 'nd/add-empty-fix'

"git add -A" (no other arguments) in a totally empty working tree
used to emit an error.

* nd/add-empty-fix:
  add: don't complain when adding empty project root

10 years agoMerge branch 'nd/daemon-informative-errors-typofix'
Junio C Hamano [Fri, 10 Jan 2014 18:32:59 +0000 (10:32 -0800)]
Merge branch 'nd/daemon-informative-errors-typofix'

* nd/daemon-informative-errors-typofix:
  daemon: be strict at parsing parameters --[no-]informative-errors

10 years agoMerge branch 'tm/fetch-prune'
Junio C Hamano [Fri, 10 Jan 2014 18:32:50 +0000 (10:32 -0800)]
Merge branch 'tm/fetch-prune'

Fetching 'frotz' branch with "git fetch", while having
'frotz/nitfol' remote-tracking branch from an earlier fetch, would
error out, primarily because the command has not been told to
remove anything on our side. In such a case, "git fetch --prune"
can be used to remove 'frotz/nitfol' to make room to fetch and
store 'frotz' remote-tracking branch.

* tm/fetch-prune:
  fetch --prune: Run prune before fetching
  fetch --prune: always print header url

10 years agoMerge branch 'sb/diff-orderfile-config'
Junio C Hamano [Fri, 10 Jan 2014 18:32:42 +0000 (10:32 -0800)]
Merge branch 'sb/diff-orderfile-config'

Allow "git diff -O<file>" to be configured with a new configuration
variable.

* sb/diff-orderfile-config:
  diff: add diff.orderfile configuration variable
  diff: let "git diff -O" read orderfile from any file and fail properly
  t4056: add new tests for "git diff -O"

10 years agoMerge branch 'bc/log-decoration'
Junio C Hamano [Fri, 10 Jan 2014 18:32:39 +0000 (10:32 -0800)]
Merge branch 'bc/log-decoration'

"git log --decorate" did not handle a tag pointed by another tag
nicely.

* bc/log-decoration:
  log: properly handle decorations with chained tags

10 years agoMerge branch 'jh/rlimit-nofile-fallback'
Junio C Hamano [Fri, 10 Jan 2014 18:32:28 +0000 (10:32 -0800)]
Merge branch 'jh/rlimit-nofile-fallback'

When we figure out how many file descriptors to allocate for
keeping packfiles open, a system with non-working getrlimit() could
cause us to die(), but because we make this call only to get a
rough estimate of how many is available and we do not even attempt
to use up all file descriptors available ourselves, it is nicer to
fall back to a reasonable low value rather than dying.

* jh/rlimit-nofile-fallback:
  get_max_fd_limit(): fall back to OPEN_MAX upon getrlimit/sysconf failure

10 years agoMerge branch 'rt/bfg-ad-in-filter-branch-doc'
Junio C Hamano [Fri, 10 Jan 2014 18:32:25 +0000 (10:32 -0800)]
Merge branch 'rt/bfg-ad-in-filter-branch-doc'

* rt/bfg-ad-in-filter-branch-doc:
  docs: add filter-branch notes on The BFG

10 years agoMerge branch 'mh/path-max'
Junio C Hamano [Fri, 10 Jan 2014 18:32:21 +0000 (10:32 -0800)]
Merge branch 'mh/path-max'

A few places where we relied on a fixed length buffer to hold
pathnames in these two programs have been converted to use strbuf.

* mh/path-max:
  builtin/prune.c: use strbuf to avoid having to worry about PATH_MAX
  prune-packed: use strbuf to avoid having to worry about PATH_MAX

10 years agoMerge branch 'ap/path-max'
Junio C Hamano [Fri, 10 Jan 2014 18:32:18 +0000 (10:32 -0800)]
Merge branch 'ap/path-max'

* ap/path-max:
  Prevent buffer overflows when path is too long

10 years agoMerge branch 'cc/replace-object-info'
Junio C Hamano [Fri, 10 Jan 2014 18:32:10 +0000 (10:32 -0800)]
Merge branch 'cc/replace-object-info'

read_sha1_file() that is the workhorse to read the contents given
an object name honoured object replacements, but there is no
corresponding mechanism to sha1_object_info() that is used to
obtain the metainfo (e.g. type & size) about the object, leading
callers to weird inconsistencies.

* cc/replace-object-info:
  replace info: rename 'full' to 'long' and clarify in-code symbols
  Documentation/git-replace: describe --format option
  builtin/replace: unset read_replace_refs
  t6050: add tests for listing with --format
  builtin/replace: teach listing using short, medium or full formats
  sha1_file: perform object replacement in sha1_object_info_extended()
  t6050: show that git cat-file --batch fails with replace objects
  sha1_object_info_extended(): add an "unsigned flags" parameter
  sha1_file.c: add lookup_replace_object_extended() to pass flags
  replace_object: don't check read_replace_refs twice
  rename READ_SHA1_FILE_REPLACE flag to LOOKUP_REPLACE_OBJECT

10 years agoMerge branch 'nd/negative-pathspec'
Junio C Hamano [Fri, 10 Jan 2014 18:31:48 +0000 (10:31 -0800)]
Merge branch 'nd/negative-pathspec'

Introduce "negative pathspec" magic, to allow "git log -- . ':!dir'" to
tell us "I am interested in everything but 'dir' directory".

* nd/negative-pathspec:
  pathspec.c: support adding prefix magic to a pathspec with mnemonic magic
  Support pathspec magic :(exclude) and its short form :!
  glossary-content.txt: rephrase magic signature part

10 years agoMerge branch 'maint'
Junio C Hamano [Mon, 6 Jan 2014 18:39:07 +0000 (10:39 -0800)]
Merge branch 'maint'

* maint:
  Documentation/gitmodules: Only 'update' and 'url' are required
  l10n: de.po: fix translation of 'prefix'

10 years agoMerge branch 'maint' of git://github.com/git-l10n/git-po into maint
Junio C Hamano [Mon, 6 Jan 2014 17:10:09 +0000 (09:10 -0800)]
Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

* 'maint' of git://github.com/git-l10n/git-po:
  l10n: de.po: fix translation of 'prefix'

10 years agoDocumentation/gitmodules: Only 'update' and 'url' are required
W. Trevor King [Fri, 3 Jan 2014 18:31:22 +0000 (10:31 -0800)]
Documentation/gitmodules: Only 'update' and 'url' are required

Descriptions for all the settings fell under the initial "Each
submodule section also contains the following required keys:".  The
example shows sections with just 'path' and 'url' entries, which are
indeed required, but we should still make the required/optional
distinction explicit to clarify that the rest of them are optional.

Signed-off-by: W. Trevor King <wking@tremily.us>
Reviewed-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agofetch --prune: Run prune before fetching
Tom Miller [Fri, 3 Jan 2014 02:28:52 +0000 (20:28 -0600)]
fetch --prune: Run prune before fetching

When we have a remote-tracking branch named "frotz/nitfol" from a
previous fetch, and the upstream now has a branch named "frotz",
fetch would fail to remove "frotz/nitfol" with a "git fetch --prune"
from the upstream. git would inform the user to use "git remote
prune" to fix the problem.

Change the way "fetch --prune" works by moving the pruning operation
before the fetching operation. This way, instead of warning the user
of a conflict, it autmatically fixes it.

Signed-off-by: Tom Miller <jackerran@gmail.com>
Tested-by: Thomas Rast <tr@thomasrast.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agofetch --prune: always print header url
Tom Miller [Fri, 3 Jan 2014 02:28:51 +0000 (20:28 -0600)]
fetch --prune: always print header url

If "fetch --prune" is run with no new refs to fetch, but it has refs
to prune. Then, the header url is not printed as it would if there were
new refs to fetch.

Output before this patch:

$ git fetch --prune remote-with-no-new-refs
 x [deleted]         (none)     -> origin/world

Output after this patch:

$ git fetch --prune remote-with-no-new-refs
From https://github.com/git/git
 x [deleted]         (none)     -> origin/test

Signed-off-by: Tom Miller <jackerran@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agol10n: de.po: fix translation of 'prefix'
Ralf Thielow [Fri, 3 Jan 2014 17:05:43 +0000 (18:05 +0100)]
l10n: de.po: fix translation of 'prefix'

The word 'prefix' is currently translated as 'Prefix'
which is not a German word. It should be translated as
'Präfix'.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
10 years agogc: notice gc processes run by other users
Kyle J. McKay [Tue, 31 Dec 2013 12:07:39 +0000 (04:07 -0800)]
gc: notice gc processes run by other users

Since 64a99eb4 git gc refuses to run without the --force option if
another gc process on the same repository is already running.

However, if the repository is shared and user A runs git gc on the
repository and while that gc is still running user B runs git gc on
the same repository the gc process run by user A will not be noticed
and the gc run by user B will go ahead and run.

The problem is that the kill(pid, 0) test fails with an EPERM error
since user B is not allowed to signal processes owned by user A
(unless user B is root).

Update the test to recognize an EPERM error as meaning the process
exists and another gc should not be run (unless --force is given).

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot0000: drop "known breakage" test
Jeff King [Sat, 28 Dec 2013 09:33:40 +0000 (04:33 -0500)]
t0000: drop "known breakage" test

Having a simulated "known breakage" test means that the test
suite will always tell us there is a bug to be fixed, even
though it is only simulated.

The right way to test this is in a sub-test, that can also
check that we provide the correct exit status and output.
Fortunately, we already have such a test (added much later
by 5ebf89e).

We could arguably get rid of the simulated success test
immediately above, as well, as it is also redundant with the
tests added in 5ebf89e. However, it does not have the
annoying behavior of the "known breakage" test. It may also
be easier to debug if the test suite is truly broken, since
it is not a test-within-a-test, as the later tests are.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot0000: simplify HARNESS_ACTIVE hack
Jeff King [Sat, 28 Dec 2013 09:31:49 +0000 (04:31 -0500)]
t0000: simplify HARNESS_ACTIVE hack

Commit 517cd55 set HARNESS_ACTIVE unconditionally in
sub-tests, because that value affects the output of
"--verbose". t0000 needs stable output from its sub-tests,
and we may or may not be running under a TAP harness.

That commit made the decision to always set the variable,
since it has another useful side effect, which is
suppressing writes to t/test-results by the sub-tests (which
would just pollute the real results).

Since the last commit, though, the sub-tests have their own
test-results directories, so this is no longer an issue. We
can now update a few comments that are no longer accurate
nor necessary.

We can also revisit the choice of HARNESS_ACTIVE. Since we
must choose one value for stability, it's probably saner to
have it off. This means that future patches could test
things like the test-results writing, or the "--quiet"
option, which is currently ignored when run under a harness.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot0000: set TEST_OUTPUT_DIRECTORY for sub-tests
Jeff King [Sat, 28 Dec 2013 09:29:15 +0000 (04:29 -0500)]
t0000: set TEST_OUTPUT_DIRECTORY for sub-tests

Running t0000 produces more trash directories than expected and does
not clean up after itself:

    $ ./t0000-basic.sh
    [...]
    $ ls -d trash\ directory.*
    trash directory.failing-cleanup
    trash directory.mixed-results1
    trash directory.mixed-results2
    trash directory.partial-pass
    trash directory.test-verbose
    trash directory.test-verbose-only-2

These scratch areas for sub-tests should be under the t0000 trash
directory, but because TEST_OUTPUT_DIRECTORY defaults to
TEST_DIRECTORY, which is exported to help sub-tests find
test-lib.sh, the sub-test trash directories are created under the
toplevel t/ directory instead.  Because some of the sub-tests
simulate failures, their trash directories are kept around.

Fix it by explicitly setting TEST_OUTPUT_DIRECTORY appropriately for
sub-tests.

An alternative fix would be to pass the --root parameter that only
specifies where to put the trash directories, which would also work.
However, using TEST_OUTPUT_DIRECTORY is more futureproof in case
tests want to write more output in addition to the test-results/
(which are already suppressed in sub-tests using the HARNESS_ACTIVE
setting) and trash directories.

This fixes a regression introduced by 38b074d (t/test-lib.sh: fix
TRASH_DIRECTORY handling, 2013-04-14).  Before that commit, the
TEST_OUTPUT_DIRECTORY setting was not respected consistently so most
tests did their work in a "trash" subdirectory of the current
directory instead of the output dir.

Signed-off-by: Jeff King <peff@peff.net>
Clarified-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agouse distinct username/password for http auth tests
Jeff King [Thu, 2 Jan 2014 07:38:35 +0000 (02:38 -0500)]
use distinct username/password for http auth tests

The httpd server we set up to test git's http client code
knows about a single account, in which both the username and
password are "user@host" (the unusual use of the "@" here is
to verify that we handle the character correctly when URL
escaped).

This means that we may miss a certain class of errors in
which the username and password are mixed up internally by
git. We can make our tests more robust by having distinct
values for the username and password.

In addition to tweaking the server passwd file and the
client URL, we must teach the "askpass" harness to accept
multiple values. As a bonus, this makes the setup of some
tests more obvious; when we are expecting git to ask
only about the password, we can seed the username askpass
response with a bogus value.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoRevert "prompt: clean up strbuf usage"
Jeff King [Thu, 2 Jan 2014 03:03:30 +0000 (22:03 -0500)]
Revert "prompt: clean up strbuf usage"

This reverts commit 31b49d9b653803e7c7fd18b21c8bdd86e3421668.

That commit taught do_askpass to hand ownership of our
buffer back to the caller rather than simply return a
pointer into our internal strbuf.  What it failed to notice,
though, was that our internal strbuf is static, because we
are trying to emulate the getpass() interface.

By handing off ownership, we created a memory leak that
cannot be solved. Sometimes git_prompt returns a static
buffer from getpass() (or our smarter git_terminal_prompt
wrapper), and sometimes it returns an allocated string from
do_askpass.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoAdd MirBSD support to the build system.
Benny Siegert [Tue, 31 Dec 2013 14:36:45 +0000 (14:36 +0000)]
Add MirBSD support to the build system.

Add an entry into the table of supported OSes. Do not set _XOPEN_SOURCE
(contrary to OpenBSD) because that disables the u_short and u_long
typedefs, which are used unconditionally in various other header files.

Signed-off-by: Benny Siegert <bsiegert@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoreplace info: rename 'full' to 'long' and clarify in-code symbols
Christian Couder [Sat, 28 Dec 2013 11:00:05 +0000 (12:00 +0100)]
replace info: rename 'full' to 'long' and clarify in-code symbols

Enum names SHORT/MEDIUM/FULL were too broad to be descriptive.  And
they clashed with built-in symbols on platforms like Windows.
Clarify by giving them REPLACE_FORMAT_ prefix.

Rename 'full' format in "git replace --format=<name>" to 'long', to
match others (i.e. 'short' and 'medium').

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'maint'
Junio C Hamano [Mon, 30 Dec 2013 20:27:01 +0000 (12:27 -0800)]
Merge branch 'maint'

* maint:
  for-each-ref: remove unused variable

10 years agofor-each-ref: remove unused variable
Ramkumar Ramachandra [Mon, 30 Dec 2013 16:28:55 +0000 (21:58 +0530)]
for-each-ref: remove unused variable

No code ever used this symbol since the command was introduced at
9f613ddd (Add git-for-each-ref: helper for language bindings,
2006-09-15).

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomerge-base --octopus: reduce the result from get_octopus_merge_bases()
Junio C Hamano [Mon, 30 Dec 2013 19:58:54 +0000 (11:58 -0800)]
merge-base --octopus: reduce the result from get_octopus_merge_bases()

Scripts that use "merge-base --octopus" could do the reducing
themselves, but most of them are expected to want to get the reduced
results without having to do any work themselves.

Tests are taken from a message by Василий Макаров
<einmalfel@gmail.com>

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 We might want to vet the existing callers of the underlying
 get_octopus_merge_bases() and find out if _all_ of them are doing
 anything extra (like deduping) because the machinery can return
 duplicate results. And if that is the case, then we may want to
 move the dedupling down the callchain instead of having it here.

10 years agomerge-base: separate "--independent" codepath into its own helper
Junio C Hamano [Mon, 30 Dec 2013 19:37:49 +0000 (11:37 -0800)]
merge-base: separate "--independent" codepath into its own helper

It piggybacks on an unrelated handle_octopus() function only because
there are some similarities between the way they need to preprocess
their input and output their result.  There is nothing similar in
the true logic between these two operations.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoRemove the line length limit for graft files
Johannes Schindelin [Fri, 27 Dec 2013 20:49:57 +0000 (21:49 +0100)]
Remove the line length limit for graft files

Support for grafts predates Git's strbuf, and hence it is understandable
that there was a hard-coded line length limit of 1023 characters (which
was chosen a bit awkwardly, given that it is *exactly* one byte short of
aligning with the 41 bytes occupied by a commit name and the following
space or new-line character).

While regular commit histories hardly win comprehensibility in general
if they merge more than twenty-two branches in one go, it is not Git's
business to limit grafts in such a way.

In this particular developer's case, the use case that requires
substantially longer graft lines to be supported is the visualization of
the commits' order implied by their changes: commits are considered to
have an implicit relationship iff exchanging them in an interactive
rebase would result in merge conflicts.

Thusly implied branches tend to be very shallow in general, and the
resulting thicket of implied branches is usually very wide; It is
actually quite common that *most* of the commits in a topic branch have
not even one implied parent, so that a final merge commit has about as
many implied parents as there are commits in said branch.

[jc: squashed in tests by Jonathan]

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Fri, 27 Dec 2013 22:58:35 +0000 (14:58 -0800)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: workaround for a bug in svn serf backend

10 years agoMerge branch 'fc/remote-helper-fixes'
Junio C Hamano [Fri, 27 Dec 2013 22:58:25 +0000 (14:58 -0800)]
Merge branch 'fc/remote-helper-fixes'

* fc/remote-helper-fixes:
  remote-hg: test 'shared_path' in a moved clone
  remote-hg: add tests for special filenames
  remote-hg: fix 'shared path' path
  remote-helpers: add extra safety checks
  remote-hg: avoid buggy strftime()

10 years agoMerge branch 'js/gnome-keyring'
Junio C Hamano [Fri, 27 Dec 2013 22:58:23 +0000 (14:58 -0800)]
Merge branch 'js/gnome-keyring'

Style fix.

* js/gnome-keyring:
  contrib/git-credential-gnome-keyring.c: small stylistic cleanups

10 years agoMerge branch 'jk/name-pack-after-byte-representation'
Junio C Hamano [Fri, 27 Dec 2013 22:58:19 +0000 (14:58 -0800)]
Merge branch 'jk/name-pack-after-byte-representation'

Two packfiles that contain the same set of objects have
traditionally been named identically, but that made repacking a
repository that is already fully packed without any cruft with a
different packing parameter cumbersome. Update the convention to
name the packfile after the bytestream representation of the data,
not after the set of objects in it.

* jk/name-pack-after-byte-representation:
  pack-objects doc: treat output filename as opaque
  pack-objects: name pack files after trailer hash
  sha1write: make buffer const-correct

10 years agoMerge branch 'tg/diff-no-index-refactor'
Junio C Hamano [Fri, 27 Dec 2013 22:58:17 +0000 (14:58 -0800)]
Merge branch 'tg/diff-no-index-refactor'

"git diff ../else/where/A ../else/where/B" when ../else/where is
clearly outside the repository, and "git diff --no-index A B", do
not have to look at the index at all, but we used to read the index
unconditionally.

* tg/diff-no-index-refactor:
  diff: avoid some nesting
  diff: add test for --no-index executed outside repo
  diff: don't read index when --no-index is given
  diff: move no-index detection to builtin/diff.c

10 years agoMerge branch 'zk/difftool-counts'
Junio C Hamano [Fri, 27 Dec 2013 22:58:13 +0000 (14:58 -0800)]
Merge branch 'zk/difftool-counts'

Show the total number of paths and the number of paths shown so far
when "git difftool" prompts to launch an external diff tool, which
would give users some sense of progress.

* zk/difftool-counts:
  diff.c: fix some recent whitespace style violations
  difftool: display the number of files in the diff queue in the prompt

10 years agoMerge branch 'jk/cat-file-regression-fix'
Junio C Hamano [Fri, 27 Dec 2013 22:58:11 +0000 (14:58 -0800)]
Merge branch 'jk/cat-file-regression-fix'

"git cat-file --batch=", an admittedly useless command, did not
behave very well.

* jk/cat-file-regression-fix:
  cat-file: handle --batch format with missing type/size
  cat-file: pass expand_data to print_object_or_die

10 years agoMerge branch 'jk/pull-rebase-using-fork-point'
Junio C Hamano [Fri, 27 Dec 2013 22:58:08 +0000 (14:58 -0800)]
Merge branch 'jk/pull-rebase-using-fork-point'

* jk/pull-rebase-using-fork-point:
  rebase: use reflog to find common base with upstream
  pull: use merge-base --fork-point when appropriate

10 years agoMerge branch 'jk/rev-parse-double-dashes'
Junio C Hamano [Fri, 27 Dec 2013 22:58:01 +0000 (14:58 -0800)]
Merge branch 'jk/rev-parse-double-dashes'

"git rev-parse <revs> -- <paths>" did not implement the usual
disambiguation rules the commands in the "git log" family used in
the same way.

* jk/rev-parse-double-dashes:
  rev-parse: be more careful with munging arguments
  rev-parse: correctly diagnose revision errors before "--"

10 years agoMerge branch 'jc/push-refmap'
Junio C Hamano [Fri, 27 Dec 2013 22:57:50 +0000 (14:57 -0800)]
Merge branch 'jc/push-refmap'

Make "git push origin master" update the same ref that would be
updated by our 'master' when "git push origin" (no refspecs) is run
while the 'master' branch is checked out, which makes "git push"
more symmetric to "git fetch" and more usable for the triangular
workflow.

* jc/push-refmap:
  push: also use "upstream" mapping when pushing a single ref
  push: use remote.$name.push as a refmap
  builtin/push.c: use strbuf instead of manual allocation

10 years agogit-svn: workaround for a bug in svn serf backend
Roman Kagan [Fri, 27 Dec 2013 08:05:15 +0000 (12:05 +0400)]
git-svn: workaround for a bug in svn serf backend

Subversion serf backend in versions 1.8.5 and below has a bug(*) that the
function creating the descriptor of a file change -- add_file() --
doesn't make a copy of its third argument when storing it on the
returned descriptor.  As a result, by the time this field is used (in
transactions of file copying or renaming) it may well be released, and
the memory reused.

One of its possible manifestations is the svn assertion triggering on an
invalid path, with a message

svn_fspath__skip_ancestor: Assertion
`svn_fspath__is_canonical(child_fspath)' failed.

This patch works around this bug, by storing the value to be passed as
the third argument to add_file() in a local variable with the same scope
as the file change descriptor, making sure their lifetime is the same.

* [ew: fixed in Subversion r1553376 as noted by Jonathan Nieder]

Cc: Benjamin Pabst <benjamin.pabst85@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Roman Kagan <rkagan@mail.ru>
10 years agocommit.c: make "tree" a const pointer in commit_tree*()
Nguyễn Thái Ngọc Duy [Sun, 22 Dec 2013 02:56:41 +0000 (09:56 +0700)]
commit.c: make "tree" a const pointer in commit_tree*()

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocat-file: provide %(deltabase) batch format
Jeff King [Sat, 21 Dec 2013 14:25:22 +0000 (09:25 -0500)]
cat-file: provide %(deltabase) batch format

It can be useful for debugging or analysis to see which
objects are stored as delta bases on top of others. This
information is available by running `git verify-pack`, but
that is extremely expensive (and is harder than necessary to
parse).

Instead, let's make it available as a cat-file query format,
which makes it fast and simple to get the bases for a subset
of the objects.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agosha1_object_info_extended: provide delta base sha1s
Jeff King [Sat, 21 Dec 2013 14:24:20 +0000 (09:24 -0500)]
sha1_object_info_extended: provide delta base sha1s

A caller of sha1_object_info_extended technically has enough
information to determine the base sha1 from the results of
the call. It knows the pack, offset, and delta type of the
object, which is sufficient to find the base.

However, the functions to do so are not publicly available,
and the code itself is intimate enough with the pack details
that it should be abstracted away. We could add a public
helper to allow callers to query the delta base separately,
but it is simpler and slightly more efficient to optionally
grab it along with the rest of the object_info data.

For cases where the object is not stored as a delta, we
write the null sha1 into the query field. A careful caller
could check "oi.whence == OI_PACKED && oi.u.packed.is_delta"
before looking at the base sha1, but using the null sha1
provides a simple alternative (and gives a better sanity
check for a non-careful caller than simply returning random
bytes).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodo not pretend sha1write returns errors
Jeff King [Sat, 21 Dec 2013 14:13:25 +0000 (09:13 -0500)]
do not pretend sha1write returns errors

The sha1write function returns an int, but it will always be
"0". The failure-prone parts of the function happen in the
"flush" callback, which cannot pass an error back to us. So
we just end up calling die() during the flush.

Let's just drop the return value altogether, as it only
confuses callers into thinking that it might be useful.

Only one call site actually checked the return value. We can
drop that check, since it just led to a die() anyway.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoadd: don't complain when adding empty project root
Nguyễn Thái Ngọc Duy [Mon, 23 Dec 2013 09:02:41 +0000 (16:02 +0700)]
add: don't complain when adding empty project root

This behavior was added in 07d7bed (add: don't complain when adding
empty project root - 2009-04-28) then broken by 84b8b5d (remove
match_pathspec() in favor of match_pathspec_depth() -
2013-07-14). Reinstate it.

Noticed-by: Thomas Ferris Nicolaisen <tfnico@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoremote-hg: test 'shared_path' in a moved clone
Antoine Pelisse [Mon, 23 Dec 2013 20:23:43 +0000 (21:23 +0100)]
remote-hg: test 'shared_path' in a moved clone

Since e71d1378 (remote-hg: fix 'shared path' path, 2013-12-07),
Mercurial 'shared_path' file is correctly updated whenever a clone is
moved. Make sure it keeps working, especially as this is depending on a
private Mercurial file.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agolog: properly handle decorations with chained tags
brian m. carlson [Tue, 17 Dec 2013 04:28:21 +0000 (04:28 +0000)]
log: properly handle decorations with chained tags

git log did not correctly handle decorations when a tag object referenced
another tag object that was no longer a ref, such as when the second tag was
deleted.  The commit would not be decorated correctly because parse_object had
not been called on the second tag and therefore its tagged field had not been
filled in, resulting in none of the tags being associated with the relevant
commit.

Call parse_object to fill in this field if it is absent so that the chain of
tags can be dereferenced and the commit can be properly decorated.  Include
tests as well to prevent future regressions.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodaemon: be strict at parsing parameters --[no-]informative-errors
Nguyễn Thái Ngọc Duy [Fri, 20 Dec 2013 10:53:52 +0000 (17:53 +0700)]
daemon: be strict at parsing parameters --[no-]informative-errors

Use strcmp() instead of starts_with()/!prefixcmp() to stop accepting
--informative-errors-just-a-little

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodiff: add diff.orderfile configuration variable
Samuel Bronson [Thu, 19 Dec 2013 00:08:12 +0000 (19:08 -0500)]
diff: add diff.orderfile configuration variable

diff.orderfile acts as a default for the -O command line option.

[sb: split up aw's original patch; rework tests and docs, treat option
as pathname]

Signed-off-by: Anders Waldenborg <anders@0x63.nu>
Signed-off-by: Samuel Bronson <naesten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodiff: let "git diff -O" read orderfile from any file and fail properly
Samuel Bronson [Thu, 19 Dec 2013 00:08:11 +0000 (19:08 -0500)]
diff: let "git diff -O" read orderfile from any file and fail properly

The -O flag really shouldn't silently fail to do anything when given
a path that it can't read from.

However, it should be able to read from un-mmappable files, such as:

 * pipes/fifos

 * /dev/null:  It's a character device (at least on Linux)

 * ANY empty file:

   Quoting Linux mmap(2), "SUSv3 specifies that mmap() should fail if
   length is 0.  However, in kernels before 2.6.12, mmap() succeeded in
   this case: no mapping was created and the call returned addr.  Since
   kernel 2.6.12, mmap() fails with the error EINVAL for this case."

We especially want "-O/dev/null" to work, since we will be documenting
it as the way to cancel "diff.orderfile" when we add that.

(Note: "-O/dev/null" did have the right effect, since the existing error
handling essentially worked out to "silently ignore the orderfile".  But
this was probably more coincidence than anything else.)

So, lets toss all of that logic to get the file mmapped and just use
strbuf_read_file() instead, which gives us decent error handling
practically for free.

Signed-off-by: Samuel Bronson <naesten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4056: add new tests for "git diff -O"
Samuel Bronson [Thu, 19 Dec 2013 00:08:10 +0000 (19:08 -0500)]
t4056: add new tests for "git diff -O"

Adapted from $gmane/236427 by Anders Waldenborg, "diff: Add
diff.orderfile configuration variable".

Signed-off-by: Anders Waldenborg <anders@0x63.nu>
Signed-off-by: Samuel Bronson <naesten@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agobuiltin/prune.c: use strbuf to avoid having to worry about PATH_MAX
Jeff King [Tue, 17 Dec 2013 23:22:31 +0000 (18:22 -0500)]
builtin/prune.c: use strbuf to avoid having to worry about PATH_MAX

While at it, rename prune_tmp_object(), which used to be a helper to
remove temporary files that were created to become loose object
files, to prune_tmp_file(), as the function is also used to remove
any random cruft whose name begins with tmp_ directly in .git/object
or .git/object/pack directories these days.

Noticed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoget_max_fd_limit(): fall back to OPEN_MAX upon getrlimit/sysconf failure
Junio C Hamano [Wed, 18 Dec 2013 22:59:12 +0000 (14:59 -0800)]
get_max_fd_limit(): fall back to OPEN_MAX upon getrlimit/sysconf failure

On broken systems where RLIMIT_NOFILE is visible by the compliers
but underlying getrlimit() system call does not behave, we used to
simply die() when we are trying to decide how many file descriptors
to allocate for keeping packfiles open.  Instead, allow the fallback
codepath to take over when we get such a failure from getrlimit().

The same issue exists with _SC_OPEN_MAX and sysconf(); restructure
the code in a similar way to prepare for a broken sysconf() as well.

Noticed-by: Joey Hess <joey@kitenet.net>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocs: add filter-branch notes on The BFG
Roberto Tyley [Wed, 18 Dec 2013 14:25:16 +0000 (14:25 +0000)]
docs: add filter-branch notes on The BFG

The BFG is a tool specifically designed for the task of removing
unwanted data from Git repository history - a common use-case for which
git-filter-branch has been the traditional workhorse.

It's beneficial to let users know that filter-branch has an alternative
here:

* speed : The BFG is 10-50x faster
  http://rtyley.github.io/bfg-repo-cleaner/#speed
* complexity of configuration : filter-branch is a very flexible tool,
  but demands very careful usage in order to get the desired results
  http://rtyley.github.io/bfg-repo-cleaner/#examples

Obviously, filter-branch has it's advantages too - it permits very
complex rewrites, and doesn't require a JVM - but for the common
use-case of deleting unwanted data, it's helpful to users to be aware
that an alternative exists.

The BFG was released under the GPL in February 2013, and has since seen
widespread production use (The Guardian, RedHat, Google, UK Government
Digital Service), been tested against large repos (~300K commits, ~5GB
packfiles) and received significant positive feedback from users:

http://rtyley.github.io/bfg-repo-cleaner/#feedback

Signed-off-by: Roberto Tyley <roberto.tyley@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoSync with 1.8.5.2
Junio C Hamano [Tue, 17 Dec 2013 22:12:17 +0000 (14:12 -0800)]
Sync with 1.8.5.2

* maint:
  Git 1.8.5.2
  cmd_repack(): remove redundant local variable "nr_packs"

10 years agoUpdate draft release notes to 1.9
Junio C Hamano [Tue, 17 Dec 2013 22:05:50 +0000 (14:05 -0800)]
Update draft release notes to 1.9

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'kn/gitweb-extra-branch-refs'
Junio C Hamano [Tue, 17 Dec 2013 20:03:33 +0000 (12:03 -0800)]
Merge branch 'kn/gitweb-extra-branch-refs'

Allow gitweb to be configured to show refs out of refs/heads/ as if
they were branches.

* kn/gitweb-extra-branch-refs:
  gitweb: Denote non-heads, non-remotes branches
  gitweb: Add a feature for adding more branch refs
  gitweb: Return 1 on validation success instead of passed input
  gitweb: Move check-ref-format code into separate function

10 years agoMerge branch 'tb/clone-ssh-with-colon-for-port'
Junio C Hamano [Tue, 17 Dec 2013 20:03:31 +0000 (12:03 -0800)]
Merge branch 'tb/clone-ssh-with-colon-for-port'

Be more careful when parsing remote repository URL given in the
scp-style host:path notation.

* tb/clone-ssh-with-colon-for-port:
  git_connect(): use common return point
  connect.c: refactor url parsing
  git_connect(): refactor the port handling for ssh
  git fetch: support host:/~repo
  t5500: add test cases for diag-url
  git fetch-pack: add --diag-url
  git_connect: factor out discovery of the protocol and its parts
  git_connect: remove artificial limit of a remote command
  t5601: add tests for ssh
  t5601: remove clear_ssh, refactor setup_ssh_wrapper

10 years agoMerge branch 'nd/transport-positive-depth-only'
Junio C Hamano [Tue, 17 Dec 2013 20:03:29 +0000 (12:03 -0800)]
Merge branch 'nd/transport-positive-depth-only'

"git fetch --depth=0" was a no-op, and was silently
ignored. Diagnose it as an error.

* nd/transport-positive-depth-only:
  clone,fetch: catch non positive --depth option value

10 years agoMerge branch 'cc/starts-n-ends-with'
Junio C Hamano [Tue, 17 Dec 2013 19:47:35 +0000 (11:47 -0800)]
Merge branch 'cc/starts-n-ends-with'

Remove a few duplicate implementations of prefix/suffix comparison
functions, and rename them to starts_with and ends_with.

* cc/starts-n-ends-with:
  replace {pre,suf}fixcmp() with {starts,ends}_with()
  strbuf: introduce starts_with() and ends_with()
  builtin/remote: remove postfixcmp() and use suffixcmp() instead
  environment: normalize use of prefixcmp() by removing " != 0"

10 years agoMerge branch 'jl/commit-v-strip-marker'
Junio C Hamano [Tue, 17 Dec 2013 19:47:18 +0000 (11:47 -0800)]
Merge branch 'jl/commit-v-strip-marker'

"git commit -v" appends the patch to the log message before
editing, and then removes the patch when the editor returned
control. However, the patch was not stripped correctly when the
first modified path was a submodule.

* jl/commit-v-strip-marker:
  commit -v: strip diffs and submodule shortlogs from the commit message

10 years agoMerge branch 'tr/send-email-ssl'
Junio C Hamano [Tue, 17 Dec 2013 19:47:12 +0000 (11:47 -0800)]
Merge branch 'tr/send-email-ssl'

SSL-related options were not passed correctly to underlying socket
layer in "git send-email".

* tr/send-email-ssl:
  send-email: set SSL options through IO::Socket::SSL::set_client_defaults
  send-email: --smtp-ssl-cert-path takes an argument
  send-email: pass Debug to Net::SMTP::SSL::new

10 years agoMerge branch 'nd/gettext-vsnprintf'
Junio C Hamano [Tue, 17 Dec 2013 19:47:10 +0000 (11:47 -0800)]
Merge branch 'nd/gettext-vsnprintf'

* nd/gettext-vsnprintf:
  gettext.c: detect the vsnprintf bug at runtime

10 years agoMerge branch 'mm/mv-file-to-no-such-dir-with-slash'
Junio C Hamano [Tue, 17 Dec 2013 19:47:08 +0000 (11:47 -0800)]
Merge branch 'mm/mv-file-to-no-such-dir-with-slash'

* mm/mv-file-to-no-such-dir-with-slash:
  mv: let 'git mv file no-such-dir/' error out

10 years agoMerge branch 'nd/remove-opt-boolean'
Junio C Hamano [Tue, 17 Dec 2013 19:47:05 +0000 (11:47 -0800)]
Merge branch 'nd/remove-opt-boolean'

* nd/remove-opt-boolean:
  parse-options: remove OPT_BOOLEAN

10 years agoMerge branch 'bc/doc-merge-no-op-revert'
Junio C Hamano [Tue, 17 Dec 2013 19:47:00 +0000 (11:47 -0800)]
Merge branch 'bc/doc-merge-no-op-revert'

* bc/doc-merge-no-op-revert:
  Documentation: document pitfalls with 3-way merge

10 years agoMerge branch 'fc/trivial'
Junio C Hamano [Tue, 17 Dec 2013 19:46:32 +0000 (11:46 -0800)]
Merge branch 'fc/trivial'

* fc/trivial:
  remote: fix status with branch...rebase=preserve
  fetch: add missing documentation
  t: trivial whitespace cleanups
  abspath: trivial style fix

10 years agoMerge branch 'jk/t5000-gzip-simplify'
Junio C Hamano [Tue, 17 Dec 2013 19:46:29 +0000 (11:46 -0800)]
Merge branch 'jk/t5000-gzip-simplify'

Test fix.

* jk/t5000-gzip-simplify:
  t5000: simplify gzip prerequisite checks

10 years agoMerge branch 'kb/doc-exclude-directory-semantics'
Junio C Hamano [Tue, 17 Dec 2013 19:44:18 +0000 (11:44 -0800)]
Merge branch 'kb/doc-exclude-directory-semantics'

* kb/doc-exclude-directory-semantics:
  gitignore.txt: clarify recursive nature of excluded directories

10 years agoGit 1.8.5.2
Junio C Hamano [Tue, 17 Dec 2013 19:42:12 +0000 (11:42 -0800)]
Git 1.8.5.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'rs/doc-submitting-patches' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:38:23 +0000 (11:38 -0800)]
Merge branch 'rs/doc-submitting-patches' into maint

* rs/doc-submitting-patches:
  SubmittingPatches: document how to handle multiple patches

10 years agoMerge branch 'tr/doc-git-cherry' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:37:55 +0000 (11:37 -0800)]
Merge branch 'tr/doc-git-cherry' into maint

* tr/doc-git-cherry:
  Documentation: revamp git-cherry(1)

10 years agoMerge branch 'nd/glossary-content-pathspec-markup' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:36:54 +0000 (11:36 -0800)]
Merge branch 'nd/glossary-content-pathspec-markup' into maint

* nd/glossary-content-pathspec-markup:
  glossary-content.txt: fix documentation of "**" patterns

10 years agoMerge branch 'jj/doc-markup-gitcli' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:36:38 +0000 (11:36 -0800)]
Merge branch 'jj/doc-markup-gitcli' into maint

* jj/doc-markup-gitcli:
  Documentation/gitcli.txt: fix double quotes

10 years agoMerge branch 'jj/doc-markup-hints-in-coding-guidelines' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:36:10 +0000 (11:36 -0800)]
Merge branch 'jj/doc-markup-hints-in-coding-guidelines' into maint

* jj/doc-markup-hints-in-coding-guidelines:
  State correct usage of literal examples in man pages in the coding standards

10 years agoMerge branch 'jj/log-doc' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:35:41 +0000 (11:35 -0800)]
Merge branch 'jj/log-doc' into maint

* jj/log-doc:
  Documentation/git-log.txt: mark-up fix and minor rephasing
  Documentation/git-log: update "--log-size" description

10 years agoMerge branch 'jj/rev-list-options-doc' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:34:41 +0000 (11:34 -0800)]
Merge branch 'jj/rev-list-options-doc' into maint

* jj/rev-list-options-doc:
  Documentation/rev-list-options.txt: fix some grammatical issues and typos
  Documentation/rev-list-options.txt: fix mark-up

10 years agoMerge branch 'tb/doc-fetch-pack-url' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:34:24 +0000 (11:34 -0800)]
Merge branch 'tb/doc-fetch-pack-url' into maint

* tb/doc-fetch-pack-url:
  git-fetch-pack uses URLs like git-fetch

10 years agoMerge branch 'mi/typofixes' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:34:01 +0000 (11:34 -0800)]
Merge branch 'mi/typofixes' into maint

* mi/typofixes:
  contrib: typofixes
  Documentation/technical/http-protocol.txt: typofixes
  typofixes: fix misspelt comments

10 years agoMerge branch 'jh/loose-object-dirs-creation-race' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:32:50 +0000 (11:32 -0800)]
Merge branch 'jh/loose-object-dirs-creation-race' into maint

Two processes creating loose objects at the same time could have
failed unnecessarily when the name of their new objects started
with the same byte value, due to a race condition.

* jh/loose-object-dirs-creation-race:
  sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs

10 years agoMerge branch 'jk/two-way-merge-corner-case-fix' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:32:04 +0000 (11:32 -0800)]
Merge branch 'jk/two-way-merge-corner-case-fix' into maint

"git am --abort" sometimes complained about not being able to write
a tree with an 0{40} object in it.

* jk/two-way-merge-corner-case-fix:
  t1005: add test for "read-tree --reset -u A B"
  t1005: reindent
  unpack-trees: fix "read-tree -u --reset A B" with conflicted index

10 years agoMerge branch 'sb/sha1-loose-object-info-check-existence' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:31:18 +0000 (11:31 -0800)]
Merge branch 'sb/sha1-loose-object-info-check-existence' into maint

"git cat-file --batch-check=ok" did not check the existence of the
named object.

* sb/sha1-loose-object-info-check-existence:
  sha1_loose_object_info(): do not return success on missing object

10 years agoMerge branch 'nd/magic-pathspec' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:21:34 +0000 (11:21 -0800)]
Merge branch 'nd/magic-pathspec' into maint

"git diff -- ':(icase)makefile'" was unnecessarily rejected at the
command line parser.

* nd/magic-pathspec:
  diff: restrict pathspec limitations to diff b/f case only

10 years agocmd_repack(): remove redundant local variable "nr_packs"
Michael Haggerty [Tue, 17 Dec 2013 13:43:58 +0000 (14:43 +0100)]
cmd_repack(): remove redundant local variable "nr_packs"

Its value is the same as the number of entries in the "names"
string_list, so just use "names.nr" in its place.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Stefan Beller <stefanbeller@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoprune-packed: use strbuf to avoid having to worry about PATH_MAX
Junio C Hamano [Tue, 17 Dec 2013 18:43:30 +0000 (10:43 -0800)]
prune-packed: use strbuf to avoid having to worry about PATH_MAX

A/very/long/path/to/.git that becomes exactly PATH_MAX bytes long
after suffixed with /objects/??/??38-hex??, would have overflown
the on-stack pathname[] buffer.

Noticed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoPrevent buffer overflows when path is too long
Antoine Pelisse [Sat, 14 Dec 2013 11:31:16 +0000 (12:31 +0100)]
Prevent buffer overflows when path is too long

Some buffers created with PATH_MAX length are not checked when being
written, and can overflow if PATH_MAX is not big enough to hold the
path.

Replace those buffers by strbufs so that their size is automatically
grown if necessary. They are created as static local variables to avoid
reallocating memory on each call. Note that prefix_filename() returns
this static buffer so each callers should copy or use the string
immediately (this is currently true).

Reported-by: Wataru Noguchi <wnoguchi.0727@gmail.com>
Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodiff: avoid some nesting
Thomas Gummerer [Mon, 16 Dec 2013 20:19:24 +0000 (21:19 +0100)]
diff: avoid some nesting

Avoid some nesting in builtin/diff.c, to make the code easier to read.
There are no functional changes.

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodiff: add test for --no-index executed outside repo
Thomas Gummerer [Mon, 16 Dec 2013 20:19:23 +0000 (21:19 +0100)]
diff: add test for --no-index executed outside repo

470faf9 diff: move no-index detection to builtin/diff.c breaks the error
message for "git diff --no-index", when the command is executed outside
of a git repository and the wrong number of arguments are given. 6df5762
diff: don't read index when --no-index is given fixes the problem.

Add a test to guard against similar breakages in the future.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodiff.c: fix some recent whitespace style violations
Jeff King [Mon, 16 Dec 2013 20:02:21 +0000 (15:02 -0500)]
diff.c: fix some recent whitespace style violations

These were introduced by ee7fb0b.

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