git.git
11 years agoMerge branch 'tb/t0050-maint' into maint
Junio C Hamano [Wed, 30 Jan 2013 15:47:46 +0000 (07:47 -0800)]
Merge branch 'tb/t0050-maint' into maint

Update tests that were expecting to fail due to a bug that was
fixed earlier.

* tb/t0050-maint:
  t0050: Use TAB for indentation
  t0050: honor CASE_INSENSITIVE_FS in add (with different case)
  t0050: known breakage vanished in merge (case change)

11 years agoMerge branch 'nd/fix-directory-attrs-off-by-one' into maint
Junio C Hamano [Tue, 29 Jan 2013 19:18:54 +0000 (11:18 -0800)]
Merge branch 'nd/fix-directory-attrs-off-by-one' into maint

The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
exclude mechanism does.  The initial implementation of this that was
merged to 'maint' and 1.8.1.1 had severe performance degradations.

* nd/fix-directory-attrs-off-by-one:
  attr: avoid calling find_basename() twice per path
  attr: fix off-by-one directory component length calculation

11 years agoMerge branch 'ph/rebase-preserve-all-merges' into maint
Junio C Hamano [Tue, 29 Jan 2013 19:18:31 +0000 (11:18 -0800)]
Merge branch 'ph/rebase-preserve-all-merges' into maint

"git rebase --preserve-merges" lost empty merges in recent versions
of Git.

* ph/rebase-preserve-all-merges:
  rebase --preserve-merges: keep all merge commits including empty ones

11 years agoREADME: update stale and/or incorrect information
Junio C Hamano [Tue, 29 Jan 2013 19:10:58 +0000 (11:10 -0800)]
README: update stale and/or incorrect information

Ramkumar Ramachandra noticed that the old address for the marc
archive no longer works.  Update it to its marc.info address,
and also refer to the gmane site.

Remove the reference to "note from the maintainer", which is not
usually followed by any useful discussion on status, direction nor
tasks.

Also replace the reference to "What's in git.git" with "What's
cooking".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.8.1.2
Junio C Hamano [Mon, 28 Jan 2013 19:17:54 +0000 (11:17 -0800)]
Git 1.8.1.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'ss/help-htmlpath-config-doc' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:13:31 +0000 (11:13 -0800)]
Merge branch 'ss/help-htmlpath-config-doc' into maint

* ss/help-htmlpath-config-doc:
  config.txt: Document help.htmlpath config parameter

11 years agoMerge branch 'nd/attr-debug-fix' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:13:07 +0000 (11:13 -0800)]
Merge branch 'nd/attr-debug-fix' into maint

* nd/attr-debug-fix:
  attr: make it build with DEBUG_ATTR again

11 years agoMerge branch 'ds/completion-silence-in-tree-path-probe' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:12:47 +0000 (11:12 -0800)]
Merge branch 'ds/completion-silence-in-tree-path-probe' into maint

* ds/completion-silence-in-tree-path-probe:
  git-completion.bash: silence "not a valid object" errors

11 years agoMerge branch 'jn/maint-trim-vim-contrib' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:12:36 +0000 (11:12 -0800)]
Merge branch 'jn/maint-trim-vim-contrib' into maint

* jn/maint-trim-vim-contrib:
  contrib/vim: simplify instructions for old vim support

11 years agoMerge branch 'pe/doc-email-env-is-trumped-by-config' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:12:31 +0000 (11:12 -0800)]
Merge branch 'pe/doc-email-env-is-trumped-by-config' into maint

* pe/doc-email-env-is-trumped-by-config:
  git-commit-tree(1): correct description of defaults

11 years agoMerge branch 'mk/complete-tcsh' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:11:51 +0000 (11:11 -0800)]
Merge branch 'mk/complete-tcsh' into maint

Command line completion for "tcsh" emitted an unwanted space
after completing a single directory name.

* mk/complete-tcsh:
  Prevent space after directories in tcsh completion

11 years agoMerge branch 'ap/status-ignored-in-ignored-directory' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:10:25 +0000 (11:10 -0800)]
Merge branch 'ap/status-ignored-in-ignored-directory' into maint

Output from "git status --ignored" did not work well when used with
"--untracked".

* ap/status-ignored-in-ignored-directory:
  status: always report ignored tracked directories
  git-status: Test --ignored behavior
  dir.c: Make git-status --ignored more consistent

11 years agoMerge branch 'er/stop-recommending-parsecvs' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:09:37 +0000 (11:09 -0800)]
Merge branch 'er/stop-recommending-parsecvs' into maint

* er/stop-recommending-parsecvs:
  Remove the suggestion to use parsecvs, which is currently broken.

11 years agoMerge branch 'mh/ceiling' into maint
Junio C Hamano [Mon, 28 Jan 2013 19:07:18 +0000 (11:07 -0800)]
Merge branch 'mh/ceiling' into maint

An element on GIT_CEILING_DIRECTORIES list that does not name the
real path to a directory (i.e. a symbolic link) could have caused
the GIT_DIR discovery logic to escape the ceiling.

* mh/ceiling:
  string_list_longest_prefix(): remove function
  setup_git_directory_gently_1(): resolve symlinks in ceiling paths
  longest_ancestor_length(): require prefix list entries to be normalized
  longest_ancestor_length(): take a string_list argument for prefixes
  longest_ancestor_length(): use string_list_split()
  Introduce new function real_path_if_valid()
  real_path_internal(): add comment explaining use of cwd
  Introduce new static function real_path_internal()

11 years agot0050: Use TAB for indentation
Torsten Bögershausen [Mon, 21 Jan 2013 16:46:31 +0000 (17:46 +0100)]
t0050: Use TAB for indentation

Use one TAB for indentation and remove empty lines

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0050: honor CASE_INSENSITIVE_FS in add (with different case)
Torsten Bögershausen [Mon, 21 Jan 2013 16:46:15 +0000 (17:46 +0100)]
t0050: honor CASE_INSENSITIVE_FS in add (with different case)

The test case "add (with different case)" indicates a
known breakage when run on a case insensitive file system.

The test is invalid for case sensitive file system, it will always fail.

Check the precondition CASE_INSENSITIVE_FS before running it.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0050: known breakage vanished in merge (case change)
Torsten Bögershausen [Mon, 21 Jan 2013 16:45:43 +0000 (17:45 +0100)]
t0050: known breakage vanished in merge (case change)

This test case has passed since this commit:

  commit 0047dd2fd1fc1980913901c5fa098357482c2842
  Author: Steffen Prohaska <prohaska@zib.de>
  Date:   Thu May 15 07:19:54 2008 +0200

    t0050: Fix merge test on case sensitive file systems

Remove the known breakage by using test_expect_success

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-for-each-ref.txt: 'raw' is a supported date format
John Keeping [Mon, 21 Jan 2013 16:22:06 +0000 (16:22 +0000)]
git-for-each-ref.txt: 'raw' is a supported date format

Commit 7dff9b3 (Support 'raw' date format) added a raw date format.
Update the git-for-each-ref documentation to include this.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoStart preparing for 1.8.1.2
Junio C Hamano [Mon, 21 Jan 2013 01:26:04 +0000 (17:26 -0800)]
Start preparing for 1.8.1.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'nz/send-email-headers-are-case-insensitive' into maint
Junio C Hamano [Mon, 21 Jan 2013 01:22:49 +0000 (17:22 -0800)]
Merge branch 'nz/send-email-headers-are-case-insensitive' into maint

When users spell "cc:" in lowercase in the fake "header" in the
trailer part, "git send-email" failed to pick up the addresses from
there. As e-mail headers field names are case insensitive, this
script should follow suit and treat "cc:" and "Cc:" the same way.

* nz/send-email-headers-are-case-insensitive:
  git-send-email: treat field names as case-insensitively

11 years agoMerge branch 'rs/zip-with-uncompressed-size-in-the-header' into maint
Junio C Hamano [Mon, 21 Jan 2013 01:22:27 +0000 (17:22 -0800)]
Merge branch 'rs/zip-with-uncompressed-size-in-the-header' into maint

"git archive" did not record uncompressed size in the header when
streaming a zip archive, which confused some implementations of
unzip.

* rs/zip-with-uncompressed-size-in-the-header:
  archive-zip: write uncompressed size into header even with streaming

11 years agoMerge branch 'rs/zip-tests' into maint
Junio C Hamano [Mon, 21 Jan 2013 01:22:22 +0000 (17:22 -0800)]
Merge branch 'rs/zip-tests' into maint

* rs/zip-tests:
  t5003: check if unzip supports symlinks
  t5000, t5003: move ZIP tests into their own script
  t0024, t5000: use test_lazy_prereq for UNZIP
  t0024, t5000: clear variable UNZIP, use GIT_UNZIP instead

11 years agoattr: avoid calling find_basename() twice per path
Duy Nguyen [Wed, 16 Jan 2013 06:02:38 +0000 (13:02 +0700)]
attr: avoid calling find_basename() twice per path

find_basename() is only used inside collect_all_attrs(), called once
in prepare_attr_stack, then again after prepare_attr_stack()
returns. Both calls return exact same value. Reorder the code to do
the same task once. Also avoid strlen() because we knows the length
after finding basename.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoconfig.txt: Document help.htmlpath config parameter
Sebastian Staudt [Tue, 15 Jan 2013 20:56:21 +0000 (21:56 +0100)]
config.txt: Document help.htmlpath config parameter

Signed-off-by: Sebastian Staudt <koraktor@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoattr: make it build with DEBUG_ATTR again
Nguyễn Thái Ngọc Duy [Tue, 15 Jan 2013 02:49:26 +0000 (09:49 +0700)]
attr: make it build with DEBUG_ATTR again

Commit 82dce99 (attr: more matching optimizations from .gitignore -
2012-10-15) changed match_attr structure but it did not update
DEBUG_ATTR-specific code. This fixes it.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoattr: fix off-by-one directory component length calculation
Nguyễn Thái Ngọc Duy [Tue, 15 Jan 2013 13:35:24 +0000 (20:35 +0700)]
attr: fix off-by-one directory component length calculation

94bc671 (Add directory pattern matching to attributes - 2012-12-08)
uses find_basename() to calculate the length of directory part in
prepare_attr_stack. This function expects the directory without the
trailing slash (as "origin" field in match_attr struct is without the
trailing slash). find_basename() includes the trailing slash and
confuses push/pop algorithm.

Consider path = "abc/def" and the push down code:

while (1) {
len = strlen(attr_stack->origin);
if (dirlen <= len)
break;
cp = memchr(path + len + 1, '/', dirlen - len - 1);
if (!cp)
cp = path + dirlen;

dirlen is 4, not 3, without this patch. So when attr_stack->origin is
"abc", it'll miss the exit condition because 4 <= 3 is wrong. It'll
then try to push "abc/" down the attr stack (because "cp" would be
NULL). So we have both "abc" and "abc/" in the stack.

Next time when "abc/ghi" is checked, "abc/" is popped out because of
the off-by-one dirlen, only to be pushed back in again by the above
code. This repeats for all files in the same directory. Which means
at least one failed open syscall per file, or more if .gitattributes
exists.

This is the perf result with 10 runs on git.git:

Test                                     94bc671^          94bc671                   HEAD
----------------------------------------------------------------------------------------------------------
7810.1: grep worktree, cheap regex       0.02(0.01+0.04)   0.05(0.03+0.05) +150.0%   0.02(0.01+0.04) +0.0%
7810.2: grep worktree, expensive regex   0.25(0.94+0.01)   0.26(0.94+0.02) +4.0%     0.25(0.93+0.02) +0.0%
7810.3: grep --cached, cheap regex       0.11(0.10+0.00)   0.12(0.10+0.02) +9.1%     0.10(0.10+0.00) -9.1%
7810.4: grep --cached, expensive regex   0.61(0.60+0.01)   0.62(0.61+0.01) +1.6%     0.61(0.60+0.00) +0.0%

Reported-by: Ross Lagerwall <rosslagerwall@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agorebase --preserve-merges: keep all merge commits including empty ones
Phil Hord [Sat, 12 Jan 2013 20:46:01 +0000 (15:46 -0500)]
rebase --preserve-merges: keep all merge commits including empty ones

Since 90e1818f9a  (git-rebase: add keep_empty flag, 2012-04-20)
'git rebase --preserve-merges' fails to preserve empty merge commits
unless --keep-empty is also specified.  Merge commits should be
preserved in order to preserve the structure of the rebased graph,
even if the merge commit does not introduce changes to the parent.

Teach rebase not to drop merge commits only because they are empty.

A special case which is not handled by this change is for a merge commit
whose parents are now the same commit because all the previous different
parents have been dropped as a result of this rebase or some previous
operation.

Signed-off-by: Phil Hord <hordp@cisco.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.8.1.1
Junio C Hamano [Mon, 14 Jan 2013 16:04:50 +0000 (08:04 -0800)]
Git 1.8.1.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jk/complete-commit-c' into maint
Junio C Hamano [Mon, 14 Jan 2013 16:02:35 +0000 (08:02 -0800)]
Merge branch 'jk/complete-commit-c' into maint

* jk/complete-commit-c:
  completion: complete refs for "git commit -c"

11 years agoMerge branch 'jk/unify-exit-code-by-receiving-signal' into maint
Junio C Hamano [Mon, 14 Jan 2013 16:01:27 +0000 (08:01 -0800)]
Merge branch 'jk/unify-exit-code-by-receiving-signal' into maint

* jk/unify-exit-code-by-receiving-signal:
  run-command: encode signal death as a positive integer

11 years agoMerge branch 'jn/xml-depends-on-asciidoc-conf' into maint
Junio C Hamano [Mon, 14 Jan 2013 16:01:00 +0000 (08:01 -0800)]
Merge branch 'jn/xml-depends-on-asciidoc-conf' into maint

* jn/xml-depends-on-asciidoc-conf:
  docs: manpage XML depends on asciidoc.conf

11 years agoMerge branch 'jk/maint-fast-import-doc-reorder' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:59:46 +0000 (07:59 -0800)]
Merge branch 'jk/maint-fast-import-doc-reorder' into maint

* jk/maint-fast-import-doc-reorder:
  git-fast-import(1): reorganise options
  git-fast-import(1): combine documentation of --[no-]relative-marks

11 years agoMerge branch 'jk/shortlog-no-wrap-doc' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:59:03 +0000 (07:59 -0800)]
Merge branch 'jk/shortlog-no-wrap-doc' into maint

* jk/shortlog-no-wrap-doc:
  git-shortlog(1): document behaviour of zero-width wrap

11 years agoMerge branch 'jk/maint-fast-import-doc-dedup-done' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:48:39 +0000 (07:48 -0800)]
Merge branch 'jk/maint-fast-import-doc-dedup-done' into maint

* jk/maint-fast-import-doc-dedup-done:
  git-fast-import(1): remove duplicate '--done' option

11 years agoMerge branch 'jc/comment-cygwin-win32api-in-makefile' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:34:37 +0000 (07:34 -0800)]
Merge branch 'jc/comment-cygwin-win32api-in-makefile' into maint

* jc/comment-cygwin-win32api-in-makefile:
  Makefile: add comment on CYGWIN_V15_WIN32API

11 years agoMerge branch 'rs/leave-base-name-in-name-field-of-tar' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:34:12 +0000 (07:34 -0800)]
Merge branch 'rs/leave-base-name-in-name-field-of-tar' into maint

A tar archive created by "git archive" recorded a directory in a
way that made NetBSD's implementation of "tar" sometimes unhappy.

* rs/leave-base-name-in-name-field-of-tar:
  archive-tar: split long paths more carefully

11 years agoMerge branch 'jl/interrupt-clone-remove-separate-git-dir' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:33:48 +0000 (07:33 -0800)]
Merge branch 'jl/interrupt-clone-remove-separate-git-dir' into maint

When "git clone --separate-git-dir=$over_there" is interrupted, it
failed to remove the real location of the $GIT_DIR it created.  This
was most visible when interrupting a submodule update.

* jl/interrupt-clone-remove-separate-git-dir:
  clone: support atomic operation with --separate-git-dir

11 years agoMerge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:33:30 +0000 (07:33 -0800)]
Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit' into maint

"git merge --no-edit" computed who were involved in the work done
on the side branch, even though that information is to be discarded
without getting seen in the editor.

* jc/maint-fmt-merge-msg-no-edit-lose-credit:
  merge --no-edit: do not credit people involved in the side branch

11 years agoMerge branch 'jc/apply-trailing-blank-removal' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:33:08 +0000 (07:33 -0800)]
Merge branch 'jc/apply-trailing-blank-removal' into maint

"git apply" misbehaved when fixing whitespace breakages by removing
excess trailing blank lines.

* jc/apply-trailing-blank-removal:
  apply.c:update_pre_post_images(): the preimage can be truncated

11 years agoMerge branch 'pf/editor-ignore-sigint' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:32:25 +0000 (07:32 -0800)]
Merge branch 'pf/editor-ignore-sigint' into maint

The behaviour visible to the end users was confusing, when they
attempt to kill a process spawned in the editor that was in turn
launched by Git with SIGINT (or SIGQUIT), as Git would catch that
signal and die.  We ignore these signals now.

* pf/editor-ignore-sigint:
  fix compilation with NO_PTHREADS
  launch_editor: propagate signals from editor to git
  run-command: do not warn about child death from terminal
  launch_editor: ignore terminal signals while editor has control
  launch_editor: refactor to use start/finish_command
  run-command: drop silent_exec_failure arg from wait_or_whine

11 years agoMerge branch 'mk/maint-graph-infinity-loop' into maint
Junio C Hamano [Mon, 14 Jan 2013 15:32:18 +0000 (07:32 -0800)]
Merge branch 'mk/maint-graph-infinity-loop' into maint

* mk/maint-graph-infinity-loop:
  graph.c: infinite loop in git whatchanged --graph -m

11 years agoMerge branch 'as/api-allocation-doc' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:51:01 +0000 (16:51 -0800)]
Merge branch 'as/api-allocation-doc' into maint

* as/api-allocation-doc:
  api-allocation-growing.txt: encourage better variable naming

11 years agoMerge branch 'jk/enable-test-lint-by-default' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:49:37 +0000 (16:49 -0800)]
Merge branch 'jk/enable-test-lint-by-default' into maint

We have two simple and quick tests to catch common mistakes when
writing test scripts, but we did not run them by default when
running tests.

* jk/enable-test-lint-by-default:
  tests: turn on test-lint by default

11 years agoMerge branch 'ap/merge-stop-at-prepare-commit-msg-failure' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:49:01 +0000 (16:49 -0800)]
Merge branch 'ap/merge-stop-at-prepare-commit-msg-failure' into maint

"git merge" started calling prepare-commit-msg hook like "git
commit" does some time ago, but forgot to pay attention to the exit
status of the hook.

* ap/merge-stop-at-prepare-commit-msg-failure:
  merge: Honor prepare-commit-msg return code

11 years agoMerge branch 'jc/submittingpatches' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:48:54 +0000 (16:48 -0800)]
Merge branch 'jc/submittingpatches' into maint

* jc/submittingpatches:
  SubmittingPatches: give list and maintainer addresses
  SubmittingPatches: remove overlong checklist
  SubmittingPatches: mention subsystems with dedicated repositories
  SubmittingPatches: who am I and who cares?

11 years agoMerge branch 'os/gitweb-highlight-uncaptured' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:48:30 +0000 (16:48 -0800)]
Merge branch 'os/gitweb-highlight-uncaptured' into maint

"gitweb", when sorting by age to show repositories with new
activities first, used to sort repositories with absolutely nothing
in it early, which was not very useful.

* os/gitweb-highlight-uncaptured:
  gitweb: fix error in sanitize when highlight is enabled

11 years agoMerge branch 'jn/less-reconfigure' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:48:03 +0000 (16:48 -0800)]
Merge branch 'jn/less-reconfigure' into maint

When autoconf is used, any build on a different commit always ran
"config.status --recheck" even when unnecessary.

* jn/less-reconfigure:
  build: do not automatically reconfigure unless configure.ac changed

11 years agoMerge branch 'kb/maint-bundle-doc' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:47:56 +0000 (16:47 -0800)]
Merge branch 'kb/maint-bundle-doc' into maint

* kb/maint-bundle-doc:
  Documentation: full-ness of a bundle is significant for cloning
  Documentation: correct example restore from bundle

11 years agoMerge branch 'as/test-name-alias-uniquely' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:47:34 +0000 (16:47 -0800)]
Merge branch 'as/test-name-alias-uniquely' into maint

* as/test-name-alias-uniquely:
  Use longer alias names in subdirectory tests

11 years agoMerge branch 'jn/warn-on-inaccessible-loosen' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:47:07 +0000 (16:47 -0800)]
Merge branch 'jn/warn-on-inaccessible-loosen' into maint

When attempting to read the XDG-style $HOME/.config/git/config and
finding that $HOME/.config/git is a file, we gave a wrong error
message, instead of treating the case as "a custom config file does
not exist there" and moving on.

* jn/warn-on-inaccessible-loosen:
  config: exit on error accessing any config file
  doc: advertise GIT_CONFIG_NOSYSTEM
  config: treat user and xdg config permission problems as errors
  config, gitignore: failure to access with ENOTDIR is ok

11 years agoMerge branch 'ja/directory-attrs' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:46:46 +0000 (16:46 -0800)]
Merge branch 'ja/directory-attrs' into maint

The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
exclude mechanism does.

* ja/directory-attrs:
  Add directory pattern matching to attributes

11 years agoMerge branch 'jc/fetch-ignore-symref' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:45:44 +0000 (16:45 -0800)]
Merge branch 'jc/fetch-ignore-symref' into maint

"git fetch --mirror" and fetch that uses other forms of refspec with
wildcard used to attempt to update a symbolic ref that match the
wildcard on the receiving end, which made little sense (the real ref
that is pointed at by the symbolic ref would be updated anyway).

Symbolic refs no longer are affected by such a fetch.

* jc/fetch-ignore-symref:
  fetch: ignore wildcarded refspecs that update local symbolic refs

11 years agoMerge branch 'ss/svn-prompt' into maint
Junio C Hamano [Sat, 12 Jan 2013 00:45:06 +0000 (16:45 -0800)]
Merge branch 'ss/svn-prompt' into maint

The way "git svn" asked for password using SSH_ASKPASS and
GIT_ASKPASS was not in line with the rest of the system.

* ss/svn-prompt:
  git-svn, perl/Git.pm: extend and use Git->prompt method for querying users
  perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set
  git-svn, perl/Git.pm: add central method for prompting passwords

11 years agogit-completion.bash: silence "not a valid object" errors
Dylan Smith [Fri, 11 Jan 2013 08:06:22 +0000 (03:06 -0500)]
git-completion.bash: silence "not a valid object" errors

Trying to complete the command

  git show master:./file

would cause a "Not a valid object name" error to be output on standard
error. Silence the error so it won't appear on the command line.

Signed-off-by: Dylan Smith <dylan.ah.smith@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocontrib/vim: simplify instructions for old vim support
Jonathan Nieder [Thu, 10 Jan 2013 20:54:27 +0000 (12:54 -0800)]
contrib/vim: simplify instructions for old vim support

Rely on the upstream filetype.vim instead of duplicating its rules in
git's instructions for syntax highlighting support on pre-7.2 vim
versions.

The result is a shorter contrib/vim/README.  More importantly, it lets
us punt on maintenance of the autocmd rules.

So now when we fix the upstream gitsendemail rule in light of commit
eed6ca7, new git users stuck on old vim reading contrib/vim/README can
automagically get the fix without any further changes needed to git.

Once the world has moved on to vim 7.2+ completely, we can get rid of
these instructions, but for now if they are this simple it's
effortless to keep them.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoPrepare for 1.8.1.1
Junio C Hamano [Thu, 10 Jan 2013 22:17:13 +0000 (14:17 -0800)]
Prepare for 1.8.1.1

11 years agoMakefile: detect when PYTHON_PATH changes
Christian Couder [Tue, 18 Dec 2012 15:26:38 +0000 (16:26 +0100)]
Makefile: detect when PYTHON_PATH changes

When make is run, the python scripts are created from *.py files that
are changed to use the python given by PYTHON_PATH. And PYTHON_PATH
is set by default to /usr/bin/python on Linux.

However, next time make is run with a different value in PYTHON_PATH,
we failed to regenerate these scripts.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'ta/remove-stale-translated-tut' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:11:18 +0000 (14:11 -0800)]
Merge branch 'ta/remove-stale-translated-tut' into maint

* ta/remove-stale-translated-tut:
  Remove Documentation/pt_BR/gittutorial.txt

11 years agoMerge branch 'tb/test-t9810-no-sed-i' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:10:40 +0000 (14:10 -0800)]
Merge branch 'tb/test-t9810-no-sed-i' into maint

* tb/test-t9810-no-sed-i:
  t9810: Do not use sed -i

11 years agoMerge branch 'tb/test-t9020-no-which' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:10:36 +0000 (14:10 -0800)]
Merge branch 'tb/test-t9020-no-which' into maint

* tb/test-t9020-no-which:
  t9020: which is not portable

11 years agoMerge branch 'mh/pthreads-autoconf' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:04:26 +0000 (14:04 -0800)]
Merge branch 'mh/pthreads-autoconf' into maint

* mh/pthreads-autoconf:
  configure.ac: fix pthreads detection on Mac OS X

11 years agoMerge branch 'jc/same-encoding' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:04:24 +0000 (14:04 -0800)]
Merge branch 'jc/same-encoding' into maint

* jc/same-encoding:
  format_commit_message(): simplify calls to logmsg_reencode()

11 years agoMerge branch 'sp/shortlog-missing-lf' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:04:22 +0000 (14:04 -0800)]
Merge branch 'sp/shortlog-missing-lf' into maint

* sp/shortlog-missing-lf:
  strbuf_add_wrapped*(): Remove unused return value
  shortlog: fix wrapping lines of wraplen

11 years agoMerge branch 'md/gitweb-sort-by-age' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:04:21 +0000 (14:04 -0800)]
Merge branch 'md/gitweb-sort-by-age' into maint

* md/gitweb-sort-by-age:
  gitweb: Sort projects with undefined ages last

11 years agoMerge branch 'nd/invalidate-i-t-a-cache-tree' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:04:19 +0000 (14:04 -0800)]
Merge branch 'nd/invalidate-i-t-a-cache-tree' into maint

* nd/invalidate-i-t-a-cache-tree:
  cache-tree: invalidate i-t-a paths after generating trees
  cache-tree: fix writing cache-tree when CE_REMOVE is present
  cache-tree: replace "for" loops in update_one with "while" loops
  cache-tree: remove dead i-t-a code in verify_cache()

11 years agoMerge branch 'jk/repack-ref-racefix' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:04:17 +0000 (14:04 -0800)]
Merge branch 'jk/repack-ref-racefix' into maint

* jk/repack-ref-racefix:
  refs: do not use cached refs in repack_without_ref

11 years agoMerge branch 'rb/http-cert-cred-no-username-prompt' into maint
Junio C Hamano [Thu, 10 Jan 2013 22:03:54 +0000 (14:03 -0800)]
Merge branch 'rb/http-cert-cred-no-username-prompt' into maint

* rb/http-cert-cred-no-username-prompt:
  http.c: Avoid username prompt for certifcate credentials

11 years agogit-commit-tree(1): correct description of defaults
Peter Eisentraut [Thu, 10 Jan 2013 12:29:58 +0000 (07:29 -0500)]
git-commit-tree(1): correct description of defaults

The old phrasing indicated that the EMAIL environment variable takes
precedence over the user.email configuration setting, but it is the
other way around.

Signed-off-by: Peter Eisentraut <peter@eisentraut.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-fast-import(1): reorganise options
John Keeping [Wed, 9 Jan 2013 19:45:29 +0000 (19:45 +0000)]
git-fast-import(1): reorganise options

The options in git-fast-import(1) are not currently arranged in a
logical order, which has caused the '--done' options to be documented
twice (commit 3266de10).

Rearrange them into logical groups under subheadings.

Suggested-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-fast-import(1): combine documentation of --[no-]relative-marks
John Keeping [Wed, 9 Jan 2013 19:44:38 +0000 (19:44 +0000)]
git-fast-import(1): combine documentation of --[no-]relative-marks

The descriptions of '--relative-marks' and '--no-relative-marks' make
more sense when read together instead of as two independent options.
Combine them into a single description block.

Signed-off-by: John Keeping <john@keeping.me.uk>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-shortlog(1): document behaviour of zero-width wrap
John Keeping [Wed, 9 Jan 2013 20:16:45 +0000 (20:16 +0000)]
git-shortlog(1): document behaviour of zero-width wrap

Commit 00d3947 (Teach --wrap to only indent without wrapping) added
special behaviour for a width of zero in the '-w' argument to
'git-shortlog' but this was not documented.  Fix this.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-fast-import(1): remove duplicate '--done' option
John Keeping [Mon, 7 Jan 2013 11:57:09 +0000 (11:57 +0000)]
git-fast-import(1): remove duplicate '--done' option

The '--done' option to git-fast-import is documented twice in its manual
page.  Combine the best bits of each description, keeping the location
of the instance that was added first.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot1402: work around shell quoting issue on NetBSD
René Scharfe [Tue, 8 Jan 2013 20:23:01 +0000 (21:23 +0100)]
t1402: work around shell quoting issue on NetBSD

The test fails for me on NetBSD 6.0.1 and reports:

ok 1 - ref name '' is invalid
ok 2 - ref name '/' is invalid
ok 3 - ref name '/' is invalid with options --allow-onelevel
ok 4 - ref name '/' is invalid with options --normalize
error: bug in the test script: not 2 or 3 parameters to test-expect-success

The alleged bug is in this line:

invalid_ref NOT_MINGW '/' '--allow-onelevel --normalize'

invalid_ref() constructs a test case description using its last argument,
but the shell seems to split it up into two pieces if it contains a
space.  Minimal test case:

# on NetBSD with /bin/sh
$ a() { echo $#-$1-$2; }
$ t="x"; a "${t:+$t}"
1-x-
$ t="x y"; a "${t:+$t}"
2-x-y
$ t="x y"; a "${t:+x y}"
1-x y-

# and with bash
$ t="x y"; a "${t:+$t}"
1-x y-
$ t="x y"; a "${t:+x y}"
1-x y-

This may be a bug in the shell, but here's a simple workaround: Construct
the description string first and store it in a variable, and then use
that to call test_expect_success().

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'ms/subtree-fixlets' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:17:10 +0000 (11:17 -0800)]
Merge branch 'ms/subtree-fixlets' into maint

* ms/subtree-fixlets:
  git-subtree: fix typo in manpage
  git-subtree: ignore git-subtree executable

11 years agoMerge branch 'ss/nedmalloc-compilation' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:17:07 +0000 (11:17 -0800)]
Merge branch 'ss/nedmalloc-compilation' into maint

* ss/nedmalloc-compilation:
  nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2

11 years agoMerge branch 'jc/maint-fnmatch-old-style-definition' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:17:05 +0000 (11:17 -0800)]
Merge branch 'jc/maint-fnmatch-old-style-definition' into maint

* jc/maint-fnmatch-old-style-definition:
  compat/fnmatch: update old-style definition to ANSI

11 years agoMerge branch 'jc/test-portability' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:17:03 +0000 (11:17 -0800)]
Merge branch 'jc/test-portability' into maint

* jc/test-portability:
  t9020: use configured Python to run the test helper
  t3600: Avoid "cp -a", which is a GNUism

11 years agoMerge branch 'jc/maint-fbsd-sh-ifs-workaround' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:17:01 +0000 (11:17 -0800)]
Merge branch 'jc/maint-fbsd-sh-ifs-workaround' into maint

* jc/maint-fbsd-sh-ifs-workaround:
  sh-setup: work around "unset IFS" bug in some shells

11 years agoMerge branch 'jc/mkstemp-more-careful-error-reporting' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:16:58 +0000 (11:16 -0800)]
Merge branch 'jc/mkstemp-more-careful-error-reporting' into maint

* jc/mkstemp-more-careful-error-reporting:
  xmkstemp(): avoid showing truncated template more carefully

11 years agoMerge branch 'jc/test-cvs-no-init-in-existing-dir' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:16:56 +0000 (11:16 -0800)]
Merge branch 'jc/test-cvs-no-init-in-existing-dir' into maint

* jc/test-cvs-no-init-in-existing-dir:
  t9200: let "cvs init" create the test repository

11 years agoMerge branch 'jc/maint-test-portability' into maint
Junio C Hamano [Tue, 8 Jan 2013 19:16:52 +0000 (11:16 -0800)]
Merge branch 'jc/maint-test-portability' into maint

* jc/maint-test-portability:
  t4014: fix arguments to grep
  t9502: do not assume GNU tar
  t0200: "locale" may not exist

11 years agoremote-hg: Fix biridectionality -> bidirectionality typos
W. Trevor King [Tue, 8 Jan 2013 15:47:37 +0000 (10:47 -0500)]
remote-hg: Fix biridectionality -> bidirectionality typos

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoPrevent space after directories in tcsh completion
Marc Khouzam [Mon, 7 Jan 2013 19:07:10 +0000 (19:07 +0000)]
Prevent space after directories in tcsh completion

If git-completion.bash returns a single directory as a completion,
tcsh will automatically add a space after it, which is not what the
user wants.

This commit prevents tcsh from doing this.

Also, a check is added to make sure the tcsh version used is recent
enough to allow completion to work as expected.

Signed-off-by: Marc Khouzam <marc.khouzam@ericsson.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agostatus: always report ignored tracked directories
Antoine Pelisse [Sun, 6 Jan 2013 22:09:39 +0000 (23:09 +0100)]
status: always report ignored tracked directories

When enumerating paths that are ignored, paths the index knows
about are not included in the result.  The "index knows about"
check is done by consulting the name hash, not the actual
contents of the index:

 - When core.ignorecase is false, directory names are not in the
   name hash, and ignored ones are shown as ignored (directories
   can never be tracked anyway).

 - When core.ignorecase is true, however, the name hash keeps
   track of the names of directories, in order to detect
   additions of the paths under different cases.  This causes
   ignored directories to be mistakenly excluded when
   enumerating ignored paths.

Stop excluding directories that are in the name hash when
looking for ignored files in dir_add_name(); the names that are
actually in the index are excluded much earlier in the callchain
in treat_file(), so this fix will not make them mistakenly
identified as ignored.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot5003: check if unzip supports symlinks
René Scharfe [Sun, 6 Jan 2013 17:59:39 +0000 (18:59 +0100)]
t5003: check if unzip supports symlinks

Only add a symlink to the repository if both the filesystem and
unzip support symlinks.  To check the latter, add a ZIP file
containing a symlink, created like this with InfoZIP zip 3.0:

$ echo sample text >textfile
$ ln -s textfile symlink
$ zip -y infozip-symlinks.zip textfile symlink

If we can extract it successfully, we add a symlink to the test
repository for git archive --format=zip, or otherwise skip that
step.  Users can see the skipped test and perhaps run it again
with a different unzip version.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot5000, t5003: move ZIP tests into their own script
René Scharfe [Sun, 6 Jan 2013 17:51:34 +0000 (18:51 +0100)]
t5000, t5003: move ZIP tests into their own script

This makes ZIP specific tweaks easier.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0024, t5000: use test_lazy_prereq for UNZIP
René Scharfe [Sun, 6 Jan 2013 17:49:00 +0000 (18:49 +0100)]
t0024, t5000: use test_lazy_prereq for UNZIP

This change makes the code smaller and we can put it at the top of
the script, its rightful place as setup code.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-send-email: treat field names as case-insensitively
Nickolai Zeldovich [Mon, 7 Jan 2013 01:34:58 +0000 (20:34 -0500)]
git-send-email: treat field names as case-insensitively

Field names like To:, Cc:, etc. are case-insensitive; use a
case-insensitive regexp to match them as such.

Previously, git-send-email would fail to pick-up the addresses when
in-body "fake" headers with different cases (e.g. lowercase "cc:")
are manually inserted to the messages it was asked to send, even
though the text will still show them.

Signed-off-by: Nickolai Zeldovich <nickolai@csail.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0024, t5000: clear variable UNZIP, use GIT_UNZIP instead
René Scharfe [Sun, 6 Jan 2013 17:47:57 +0000 (18:47 +0100)]
t0024, t5000: clear variable UNZIP, use GIT_UNZIP instead

InfoZIP's unzip takes default parameters from the environment variable
UNZIP.  Unset it in the test library and use GIT_UNZIP for specifying
alternate versions of the unzip command instead.

t0024 wasn't even using variable for the actual extraction.  t5000
was, but when setting it to InfoZIP's unzip it would try to extract
from itself (because it treats the contents of $UNZIP as parameters),
which failed of course.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: add comment on CYGWIN_V15_WIN32API
Mark Levedahl [Sun, 6 Jan 2013 19:56:33 +0000 (11:56 -0800)]
Makefile: add comment on CYGWIN_V15_WIN32API

There is no documented, reliable, and future-proof method to
determine the installed w32api version on Cygwin. There are many
things that can be done that will work frequently, except when they
won't.

The only sane thing is to follow the guidance of the Cygwin
developers: the only supported configuration is that which the
current setup.exe produces, and in the case of problems, if the
installation is not up to date then updating is the first required
action.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoapi-allocation-growing.txt: encourage better variable naming
Adam Spiers [Sun, 6 Jan 2013 15:35:05 +0000 (15:35 +0000)]
api-allocation-growing.txt: encourage better variable naming

The documentation for the ALLOC_GROW API implicitly encouraged
developers to use "ary" as the variable name for the array which is
dynamically grown.  However "ary" is an unusual abbreviation hardly
used anywhere else in the source tree, and it is also better to name
variables based on their contents not on their type.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoarchive-zip: write uncompressed size into header even with streaming
René Scharfe [Sun, 6 Jan 2013 15:20:57 +0000 (16:20 +0100)]
archive-zip: write uncompressed size into header even with streaming

We record the uncompressed and compressed sizes and the CRC of streamed
files as zero in the local header of the file.  The actual values are
recorded in an extra data descriptor after the file content, and in the
usual ZIP directory entry at the end of the archive.

While we know the compressed size and the CRC only after we processed
the contents, we actually know the uncompressed size right from the
start.  And for files that we store uncompressed we also already know
their final size.

Do it like InfoZIP's zip and recored the known values, even though they
can be reconstructed using the ZIP directory and the data descriptors
alone.  InfoZIP's unzip worked fine before, but NetBSD's version
actually depends on these fields.

The uncompressed size is already set by sha1_object_info().  We just
need to initialize the compressed size to zero or the uncompressed size
depending on the compression method (0 means storing).  The CRC was
propertly initialized already.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodocs: manpage XML depends on asciidoc.conf
Jonathan Nieder [Sun, 6 Jan 2013 12:01:53 +0000 (04:01 -0800)]
docs: manpage XML depends on asciidoc.conf

When building manual pages, the source text is transformed to XML with
AsciiDoc before the man pages are generated from the XML with xmlto.

Fix the dependencies in the Makefile so that the XML files are rebuilt
when asciidoc.conf changes and not just the manual pages from
unchanged XML, and move the dependencies from a recipeless rule to the
rules with commands that use asciidoc.conf to make the dependencies
easier to understand and maintain.

Reported-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Tested-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agorun-command: encode signal death as a positive integer
Jeff King [Sat, 5 Jan 2013 14:49:49 +0000 (09:49 -0500)]
run-command: encode signal death as a positive integer

When a sub-command dies due to a signal, we encode the
signal number into the numeric exit status as "signal -
128". This is easy to identify (versus a regular positive
error code), and when cast to an unsigned integer (e.g., by
feeding it to exit), matches what a POSIX shell would return
when reporting a signal death in $? or through its own exit
code.

So we have a negative value inside the code, but once it
passes across an exit() barrier, it looks positive (and any
code we receive from a sub-shell will have the positive
form). E.g., death by SIGPIPE (signal 13) will look like
-115 to us in inside git, but will end up as 141 when we
call exit() with it. And a program killed by SIGPIPE but run
via the shell will come to us with an exit code of 141.

Unfortunately, this means that when the "use_shell" option
is set, we need to be on the lookout for _both_ forms. We
might or might not have actually invoked the shell (because
we optimize out some useless shell calls). If we didn't invoke
the shell, we will will see the sub-process's signal death
directly, and run-command converts it into a negative value.
But if we did invoke the shell, we will see the shell's
128+signal exit status. To be thorough, we would need to
check both, or cast the value to an unsigned char (after
checking that it is not -1, which is a magic error value).

Fortunately, most callsites do not care at all whether the
exit was from a code or from a signal; they merely check for
a non-zero status, and sometimes propagate the error via
exit(). But for the callers that do care, we can make life
slightly easier by just using the consistent positive form.

This actually fixes two minor bugs:

  1. In launch_editor, we check whether the editor died from
     SIGINT or SIGQUIT. But we checked only the negative
     form, meaning that we would fail to notice a signal
     death exit code which was propagated through the shell.

  2. In handle_alias, we assume that a negative return value
     from run_command means that errno tells us something
     interesting (like a fork failure, or ENOENT).
     Otherwise, we simply propagate the exit code. Negative
     signal death codes confuse us, and we print a useless
     "unable to run alias 'foo': Success" message. By
     encoding signal deaths using the positive form, the
     existing code just propagates it as it would a normal
     non-zero exit code.

The downside is that callers of run_command can no longer
differentiate between a signal received directly by the
sub-process, and one propagated. However, no caller
currently cares, and since we already optimize out some
calls to the shell under the hood, that distinction is not
something that should be relied upon by callers.

Fix the same logic in t/test-terminal.perl for consistency [jc:
raised by Jonathan in the discussion].

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoarchive-tar: split long paths more carefully
René Scharfe [Sat, 5 Jan 2013 22:49:54 +0000 (23:49 +0100)]
archive-tar: split long paths more carefully

The name field of a tar header has a size of 100 characters.  This limit
was extended long ago in a backward compatible way by providing the
additional prefix field, which can hold 155 additional characters.  The
actual path is constructed at extraction time by concatenating the prefix
field, a slash and the name field.

get_path_prefix() is used to determine which slash in the path is used as
the cutting point and thus which part of it is placed into the field
prefix and which into the field name.  It tries to cram as much into the
prefix field as possible.  (And only if we can't fit a path into the
provided 255 characters we use a pax extended header to store it.)

If a path is longer than 100 but shorter than 156 characters and ends
with a slash (i.e. is for a directory) then get_path_prefix() puts the
whole path in the prefix field and leaves the name field empty.  GNU tar
reconstructs the path without complaint, but the tar included with
NetBSD 6 does not: It reports the header to be invalid.

For compatibility with this version of tar, make sure to never leave the
name field empty.  In order to do that, trim the trailing slash from the
part considered as possible prefix, if it exists -- that way the last
path component (or more, but not less) will end up in the name field.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agofix compilation with NO_PTHREADS
Jeff King [Sat, 5 Jan 2013 14:52:29 +0000 (09:52 -0500)]
fix compilation with NO_PTHREADS

Commit 1327452 cleaned up an unused parameter from
wait_or_whine, but forgot to update a caller that is inside
"#ifdef NO_PTHREADS".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoclone: support atomic operation with --separate-git-dir
Jens Lehmann [Sat, 5 Jan 2013 20:17:04 +0000 (21:17 +0100)]
clone: support atomic operation with --separate-git-dir

Since b57fb80a7d (init, clone: support --separate-git-dir for .git file)
git clone supports the --separate-git-dir option to create the git dir
outside the work tree. But when that option is used, the git dir won't be
deleted in case the clone fails like it would be without this option. This
makes clone lose its atomicity as in case of a failure a partly set up git
dir is left behind. A real world example where this leads to problems is
when "git submodule update" fails to clone a submodule and later calls to
"git submodule update" stumble over the partially set up git dir and try
to revive the submodule from there, which then fails with a not very user
friendly error message.

Fix that by updating the junk_git_dir variable (used to remember if and
what git dir should be removed in case of failure) to the new value given
with the --seperate-git-dir option. Also add a test for this to t5600 (and
while at it fix the former last test to not cd into a directory to test
for its existence but use "test -d" instead).

Reported-by: Manlio Perillo <manlio.perillo@gmail.com>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge: Honor prepare-commit-msg return code
Antoine Pelisse [Wed, 2 Jan 2013 18:42:50 +0000 (19:42 +0100)]
merge: Honor prepare-commit-msg return code

65969d4 (merge: honor prepare-commit-msg hook, 2011-02-14) tried to
make "git commit" and "git merge" consistent, because a merge that
required user assistance has to be concluded with "git commit", but
back then only "git commit" triggered prepare-commit-msg hook.

When it added a call to run the prepare-commit-msg hook, however, it
forgot to check the exit code from the hook like "git commit" does,
and ended up replacing one inconsistency with another.

When prepare-commit-msg hook that is run from "git merge" exits with
a non-zero status, abort the commit.

Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotests: turn on test-lint by default
Jeff King [Thu, 3 Jan 2013 07:17:51 +0000 (02:17 -0500)]
tests: turn on test-lint by default

The test Makefile knows about a few "lint" checks for common
errors. However, they are not enabled as part of "make test"
by default, which means that many people do not bother
running them. Since they are both quick to run and accurate
(i.e., no false positives), there should be no harm in
turning them on and helping submitters catch errors earlier.

We could just set:

  TEST_LINT = test-lint

to enable all tests. But that would be unnecessarily
annoying later on if we add slower or less accurate tests
that should not be part of the default. Instead, we name the
tests individually.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agobuild: do not automatically reconfigure unless configure.ac changed
Jonathan Nieder [Wed, 2 Jan 2013 08:25:44 +0000 (00:25 -0800)]
build: do not automatically reconfigure unless configure.ac changed

Starting with v1.7.12-rc0~4^2 (build: reconfigure automatically if
configure.ac changes, 2012-07-19), "config.status --recheck" is
automatically run every time the "configure" script changes.  In
particular, that means the configuration procedure repeats whenever
the version number changes (since the configure script changes to
support "./configure --version" and "./configure --help"), making
bisecting painfully slow.

The intent was to make the reconfiguration process only trigger for
changes to configure.ac's logic.  Tweak the Makefile rule to match
that intent by depending on configure.ac instead of configure.

Reported-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Reviewed-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>