gitweb.git
Update draft release notes to 2.0Junio C Hamano Thu, 3 Apr 2014 20:40:59 +0000 (13:40 -0700)

Update draft release notes to 2.0

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

Merge branch 'maint'Junio C Hamano Thu, 3 Apr 2014 20:40:31 +0000 (13:40 -0700)

Merge branch 'maint'

* maint:
Start preparing for 1.9.1

Start preparing for 1.9.1Junio C Hamano Thu, 3 Apr 2014 20:37:29 +0000 (13:37 -0700)

Start preparing for 1.9.1

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

Merge branch 'jk/mv-submodules-fix' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:06 +0000 (13:39 -0700)

Merge branch 'jk/mv-submodules-fix' into maint

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

Conflicts:
t/t7001-mv.sh

Merge branch 'mh/remove-subtree-long-pathname-fix'... Junio C Hamano Thu, 3 Apr 2014 20:39:05 +0000 (13:39 -0700)

Merge branch 'mh/remove-subtree-long-pathname-fix' into maint

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

Merge branch 'jk/lib-terminal-lazy' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:04 +0000 (13:39 -0700)

Merge branch 'jk/lib-terminal-lazy' into maint

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

Merge branch 'nd/index-pack-error-message' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:04 +0000 (13:39 -0700)

Merge branch 'nd/index-pack-error-message' into maint

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

Merge branch 'us/printf-not-echo' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:04 +0000 (13:39 -0700)

Merge branch 'us/printf-not-echo' into maint

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

Merge branch 'rr/doc-merge-strategies' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:03 +0000 (13:39 -0700)

Merge branch 'rr/doc-merge-strategies' into maint

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

Merge branch 'jk/shallow-update-fix' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:03 +0000 (13:39 -0700)

Merge branch 'jk/shallow-update-fix' into maint

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

Merge branch 'jc/stash-pop-not-popped' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:03 +0000 (13:39 -0700)

Merge branch 'jc/stash-pop-not-popped' into maint

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

Merge branch 'jn/wt-status' into maintJunio C Hamano Thu, 3 Apr 2014 20:39:02 +0000 (13:39 -0700)

Merge branch 'jn/wt-status' into maint

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

Merge branch 'nd/gc-aggressive'Junio C Hamano Thu, 3 Apr 2014 19:38:46 +0000 (12:38 -0700)

Merge branch 'nd/gc-aggressive'

Allow tweaking the maximum length of the delta-chain produced by
"gc --aggressive".

* nd/gc-aggressive:
environment.c: fix constness for odb_pack_keep()
gc --aggressive: make --depth configurable

Merge branch 'jc/fix-diff-no-index-diff-opt-parse'Junio C Hamano Thu, 3 Apr 2014 19:38:42 +0000 (12:38 -0700)

Merge branch 'jc/fix-diff-no-index-diff-opt-parse'

"diff --no-index -Mq a b" fell into an infinite loop.

* jc/fix-diff-no-index-diff-opt-parse:
diff-no-index: correctly diagnose error return from diff_opt_parse()

Merge branch 'cb/aix'Junio C Hamano Thu, 3 Apr 2014 19:38:38 +0000 (12:38 -0700)

Merge branch 'cb/aix'

* cb/aix:
tests: don't rely on strerror text when testing rmdir failure
dir.c: make git_fnmatch() not inline

Merge branch 'cn/fetch-prune-overlapping-destination'Junio C Hamano Thu, 3 Apr 2014 19:38:18 +0000 (12:38 -0700)

Merge branch 'cn/fetch-prune-overlapping-destination'

Protect refs in a hierarchy that can come from more than one remote
hierarcies from incorrect removal by "git fetch --prune".

* cn/fetch-prune-overlapping-destination:
fetch: handle overlaping refspecs on --prune
fetch: add a failing test for prunning with overlapping refspecs

Merge branch 'nd/log-show-linear-break'Junio C Hamano Thu, 3 Apr 2014 19:38:11 +0000 (12:38 -0700)

Merge branch 'nd/log-show-linear-break'

Attempts to show where a single-strand-of-pearls break in "git log"
output.

* nd/log-show-linear-break:
log: add --show-linear-break to help see non-linear history
object.h: centralize object flag allocation

Merge branch 'ep/shell-command-substitution'Junio C Hamano Thu, 3 Apr 2014 19:38:04 +0000 (12:38 -0700)

Merge branch 'ep/shell-command-substitution'

* ep/shell-command-substitution:
git-am.sh: use the $(...) construct for command substitution
check-builtins.sh: use the $(...) construct for command substitution

Merge branch 'ap/remote-hg-skip-null-bookmarks'Junio C Hamano Wed, 2 Apr 2014 21:18:23 +0000 (14:18 -0700)

Merge branch 'ap/remote-hg-skip-null-bookmarks'

* ap/remote-hg-skip-null-bookmarks:
remote-hg: do not fail on invalid bookmarks

Merge branch 'rs/pickaxe-i'Junio C Hamano Wed, 2 Apr 2014 21:18:19 +0000 (14:18 -0700)

Merge branch 'rs/pickaxe-i'

Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
to be used together and work as expected to perform a pickaxe
search using case-insensitive regular expression matching.

* rs/pickaxe-i:
pickaxe: simplify kwset loop in contains()
pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
pickaxe: move pickaxe() after pickaxe_match()
pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
pickaxe: honor -i when used with -S and --pickaxe-regex
t4209: use helper functions to test --author
t4209: use helper functions to test --grep
t4209: factor out helper function test_log_icase()
t4209: factor out helper function test_log()
t4209: set up expectations up front

Revert part of 384364b (Start preparing for Git 2.0... Junio C Hamano Tue, 1 Apr 2014 18:55:56 +0000 (11:55 -0700)

Revert part of 384364b (Start preparing for Git 2.0, 2014-03-07)

As we are not shipping with the submodule change, remove the
entry for it.

Revert "submodule: explicit local branch creation in... Junio C Hamano Wed, 2 Apr 2014 21:15:36 +0000 (14:15 -0700)

Revert "submodule: explicit local branch creation in module_clone"

This reverts commit 23d25e48f5ead73c9ce233986f90791abec9f1e8, as it is
broken for users who haven't opted into the new feature of checking
out submodule.*.branch with update mode set to checkout.

Revert "Merge branch 'wt/doc-submodule-name-path-confus... Junio C Hamano Tue, 1 Apr 2014 18:52:37 +0000 (11:52 -0700)

Revert "Merge branch 'wt/doc-submodule-name-path-confusion-2'"

This reverts commit 00d4ff1a69883e24b095f45251d99143b5bc0320, reversing
changes made to d3badc6eb0961382788c2670129d5ee133d079fd.

Update draft release notes to 2.0Junio C Hamano Mon, 31 Mar 2014 23:41:23 +0000 (16:41 -0700)

Update draft release notes to 2.0

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

Merge branch 'mm/status-porcelain-format-i18n-fix'Junio C Hamano Mon, 31 Mar 2014 23:31:25 +0000 (16:31 -0700)

Merge branch 'mm/status-porcelain-format-i18n-fix'

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

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

Merge branch 'an/branch-config-message'

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

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

Merge branch 'jk/tests-cleanup'

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

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

Merge branch 'wt/doc-submodule-name-path-confusion-2'

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

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

Merge branch 'wt/doc-submodule-name-path-confusion-1'

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

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

Merge branch 'mr/msvc-link-with-lcurl'

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

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

Merge branch 'ib/rev-parse-parseopt-argh'

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

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

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

Merge branch 'dp/makefile-charset-lib-doc'

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

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

Merge branch 'js/userdiff-cc'

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

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

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

Merge branch 'dw/doc-status-no-longer-shows-pound-prefix'

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

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

Merge branch 'ca/doc-config-third-party'

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

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

Merge branch 'hs/simplify-bit-setting-in-fsck-tree'

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

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

Merge branch 'dt/tests-with-env-not-subshell'

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

tests: don't rely on strerror text when testing rmdir... Charles Bailey Sat, 29 Mar 2014 15:39:01 +0000 (15:39 +0000)

tests: don't rely on strerror text when testing rmdir failure

AIX doesn't make a distiction between EEXIST and ENOTEMPTY; relying
on the strerror string for the rmdir failure is fragile. Just test
that the start of the string matches the Git controlled "failed to
rmdir..." error. The exact text of the OS generated error string
isn't important to the test.

Signed-off-by: Charles Bailey <cbailey32@bloomberg.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

dir.c: make git_fnmatch() not inlineCharles Bailey Sat, 29 Mar 2014 15:39:00 +0000 (15:39 +0000)

dir.c: make git_fnmatch() not inline

Now that it calls a static inline function, it cannot be an inline
definition with external linkage. Remove inline and make it an
external definition.

Signed-off-by: Charles Bailey <cbailey32@bloomberg.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff-no-index: correctly diagnose error return from... Junio C Hamano Mon, 31 Mar 2014 18:47:17 +0000 (11:47 -0700)

diff-no-index: correctly diagnose error return from diff_opt_parse()

diff_opt_parse() returns the number of options parsed, or often
returns error() which is defined to return -1. Yes, return value of
0 is "I did not process that option at all", which should cause the
caller to say that, but negative return should not be forgotten.

This bug caused "diff --no-index" to infinitely show the same error
message because the returned value was used to decrement the loop
control variable, e.g.

$ git diff --no-index --color=words a b
error: option `color' expects "always", "auto", or "never"
error: option `color' expects "always", "auto", or "never"
...

Instead, make it act like so:

$ git diff --no-index --color=words a b
error: option `color' expects "always", "auto", or "never"
fatal: invalid diff option/value: --color=words

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

environment.c: fix constness for odb_pack_keep()Nguyễn Thái Ngọc Duy Sun, 16 Mar 2014 13:35:00 +0000 (20:35 +0700)

environment.c: fix constness for odb_pack_keep()

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gc --aggressive: make --depth configurableNguyễn Thái Ngọc Duy Sun, 16 Mar 2014 13:35:03 +0000 (20:35 +0700)

gc --aggressive: make --depth configurable

When 1c192f3 (gc --aggressive: make it really aggressive - 2007-12-06)
made --depth=250 the default value, it didn't really explain the
reason behind, especially the pros and cons of --depth=250.

An old mail from Linus below explains it at length. Long story short,
--depth=250 is a disk saver and a performance killer. Not everybody
agrees on that aggressiveness. Let the user configure it.

From: Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH] gc --aggressive: make it really aggressive
Date: Thu, 6 Dec 2007 08:19:24 -0800 (PST)
Message-ID: <alpine.LFD.0.9999.0712060803430.13796@woody.linux-foundation.org>
Gmane-URL: http://article.gmane.org/gmane.comp.gcc.devel/94637

On Thu, 6 Dec 2007, Harvey Harrison wrote:
>
> 7:41:25elapsed 86%CPU

Heh. And this is why you want to do it exactly *once*, and then just
export the end result for others ;)

> -r--r--r-- 1 hharrison hharrison 324094684 2007-12-06 07:26 pack-1d46...pack

But yeah, especially if you allow longer delta chains, the end result can
be much smaller (and what makes the one-time repack more expensive is the
window size, not the delta chain - you could make the delta chains longer
with no cost overhead at packing time)

HOWEVER.

The longer delta chains do make it potentially much more expensive to then
use old history. So there's a trade-off. And quite frankly, a delta depth
of 250 is likely going to cause overflows in the delta cache (which is
only 256 entries in size *and* it's a hash, so it's going to start having
hash conflicts long before hitting the 250 depth limit).

So when I said "--depth=250 --window=250", I chose those numbers more as
an example of extremely aggressive packing, and I'm not at all sure that
the end result is necessarily wonderfully usable. It's going to save disk
space (and network bandwidth - the delta's will be re-used for the network
protocol too!), but there are definitely downsides too, and using long
delta chains may simply not be worth it in practice.

(And some of it might just want to have git tuning, ie if people think
that long deltas are worth it, we could easily just expand on the delta
hash, at the cost of some more memory used!)

That said, the good news is that working with *new* history will not be
affected negatively, and if you want to be _really_ sneaky, there are ways
to say "create a pack that contains the history up to a version one year
ago, and be very aggressive about those old versions that we still want to
have around, but do a separate pack for newer stuff using less aggressive
parameters"

So this is something that can be tweaked, although we don't really have
any really nice interfaces for stuff like that (ie the git delta cache
size is hardcoded in the sources and cannot be set in the config file, and
the "pack old history more aggressively" involves some manual scripting
and knowing how "git pack-objects" works rather than any nice simple
command line switch).

So the thing to take away from this is:
- git is certainly flexible as hell
- .. but to get the full power you may need to tweak things
- .. happily you really only need to have one person to do the tweaking,
and the tweaked end results will be available to others that do not
need to know/care.

And whether the difference between 320MB and 500MB is worth any really
involved tweaking (considering the potential downsides), I really don't
know. Only testing will tell.

Linus

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

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

Update draft release notes to 2.0

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

Merge branch 'ys/fsck-commit-parsing'Junio C Hamano Fri, 28 Mar 2014 20:51:24 +0000 (13:51 -0700)

Merge branch 'ys/fsck-commit-parsing'

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

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

Merge branch 'bg/rebase-off-of-previous-branch'

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

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

Merge branch 'bp/commit-p-editor'

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

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

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

Merge branch 'ah/doc-gitk-config'

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

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

Merge branch 'fr/add-interactive-argv-array'

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

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

Merge branch 'jk/subtree-prefix'

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

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

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

Merge branch 'jk/pack-bitmap-progress'

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

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

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

Merge branch 'jk/pack-bitmap'

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

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

doc: submodule.*.branch config is keyed by nameW. Trevor King Thu, 27 Mar 2014 21:06:20 +0000 (14:06 -0700)

doc: submodule.*.branch config is keyed by name

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

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

doc: submodule.* config are keyed by submodule namesW. Trevor King Thu, 27 Mar 2014 21:06:20 +0000 (14:06 -0700)

doc: submodule.* config are keyed by submodule names

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

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

MSVC: allow linking with the cURL libraryMarat Radchenko Thu, 27 Mar 2014 07:34:27 +0000 (11:34 +0400)

MSVC: allow linking with the cURL library

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

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: handle overlaping refspecs on --pruneCarlos Martín Nieto Thu, 27 Feb 2014 09:00:10 +0000 (10:00 +0100)

fetch: handle overlaping refspecs on --prune

We need to consider that a remote-tracking branch may match more than
one rhs of a fetch refspec. In such a case, it is not enough to stop at
the first match but look at all of the matches in order to determine
whether a head is stale.

To this goal, introduce a variant of query_refspecs which returns all of
the matching refspecs and loop over those answers to check for
staleness.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

status: disable translation when --porcelain is usedMatthieu Moy Thu, 20 Mar 2014 12:12:41 +0000 (13:12 +0100)

status: disable translation when --porcelain is used

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

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

Reported-by: Anarky <ghostanarky@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log: add --show-linear-break to help see non-linear... Nguyễn Thái Ngọc Duy Tue, 25 Mar 2014 13:23:27 +0000 (20:23 +0700)

log: add --show-linear-break to help see non-linear history

Option explanation is in rev-list-options.txt. The interaction with -z
is left undecided.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

object.h: centralize object flag allocationNguyễn Thái Ngọc Duy Tue, 25 Mar 2014 13:23:26 +0000 (20:23 +0700)

object.h: centralize object flag allocation

While the field "flags" is mainly used by the revision walker, it is
also used in many other places. Centralize the whole flag allocation to
one place for a better overview (and easier to move flags if we have
too).

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-am.sh: use the $(...) construct for command substit... Elia Pinto Tue, 25 Mar 2014 17:22:22 +0000 (10:22 -0700)

git-am.sh: use the $(...) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX. However, all but the
simplest uses become complicated quickly. In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

check-builtins.sh: use the $(...) construct for command... Elia Pinto Tue, 25 Mar 2014 17:22:22 +0000 (10:22 -0700)

check-builtins.sh: use the $(...) construct for command substitution

The Git CodingGuidelines prefer the $(...) construct for command
substitution instead of using the backquotes `...`.

The backquoted form is the traditional method for command
substitution, and is supported by POSIX. However, all but the
simplest uses become complicated quickly. In particular, embedded
command substitutions and/or the use of double quotes require
careful escaping with the backslash character.

The patch was generated by:

for _f in $(find . -name "*.sh")
do
sed -i 's@`\(.*\)`@$(\1)@g' ${_f}
done

and then carefully proof-read.

Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: do not fail on invalid bookmarksMax Horn Fri, 21 Mar 2014 11:36:36 +0000 (12:36 +0100)

remote-hg: do not fail on invalid bookmarks

Mercurial can have bookmarks pointing to "nullid" (the empty root
revision), while Git can not have references to it. When cloning or
fetching from a Mercurial repository that has such a bookmark, the
import failed because git-remote-hg was not be able to create the
corresponding reference.

Warn the user about the invalid reference, and do not advertise these
bookmarks as head refs, but otherwise continue the import. In
particular, we still keep track of the fact that the remote repository
has a bookmark of the given name, in case the user wants to modify that
bookmark.

Also add some test cases for this issue.

Reported-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Max Horn <max@quendi.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 2.0Junio C Hamano Tue, 25 Mar 2014 19:01:39 +0000 (12:01 -0700)

Update draft release notes to 2.0

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

Merge branch 'ss/test-on-mingw-rsync-path-no-absolute'Junio C Hamano Tue, 25 Mar 2014 18:08:35 +0000 (11:08 -0700)

Merge branch 'ss/test-on-mingw-rsync-path-no-absolute'

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

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

Merge branch 'bb/diff-no-index-dotdot'

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

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

Merge branch 'us/printf-not-echo'

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

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

Merge branch 'rr/doc-merge-strategies'

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

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

Merge branch 'nd/index-pack-error-message'

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

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

Merge branch 'jk/lib-terminal-lazy'

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

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

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

Merge branch 'dm/configure-iconv-locale-charset'

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

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

Merge branch 'nd/commit-editor-cleanup'

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

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

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

Merge branch 'jk/warn-on-object-refname-ambiguity'

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

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

Merge branch 'mh/remove-subtree-long-pathname-fix'

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

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

Merge branch 'nd/indent-fix-connect-c'

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

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

Merge branch 'jk/mv-submodules-fix'

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

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

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

Merge branch 'cp/am-patch-format-doc'

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

pickaxe: simplify kwset loop in contains()René Scharfe Sat, 22 Mar 2014 17:16:00 +0000 (18:16 +0100)

pickaxe: simplify kwset loop in contains()

Inlining the variable "found" actually makes the code shorter and
easier to read.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pickaxe: call strlen only when necessary in diffcore_pi... René Scharfe Sat, 22 Mar 2014 17:15:59 +0000 (18:15 +0100)

pickaxe: call strlen only when necessary in diffcore_pickaxe_count()

We need to determine the search term's length only when fixed-string
matching is used; regular expression compilation takes a NUL-terminated
string directly. Only call strlen() in the former case.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pickaxe: move pickaxe() after pickaxe_match()René Scharfe Sat, 22 Mar 2014 17:15:58 +0000 (18:15 +0100)

pickaxe: move pickaxe() after pickaxe_match()

pickaxe() calls pickaxe_match(); moving the definition of the former
after the latter allows us to do without an explicit function
declaration.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pickaxe: merge diffcore_pickaxe_grep() and diffcore_pic... René Scharfe Sat, 22 Mar 2014 17:15:57 +0000 (18:15 +0100)

pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()

diffcore_pickaxe_count() initializes the regular expression or kwset for
the search term, calls pickaxe() with the callback has_changes() and
cleans up afterwards. diffcore_pickaxe_grep() does the same, only it
doesn't support kwset and uses the callback diff_grep() instead. Merge
the two functions to form the new diffcore_pickaxe() and thus get rid of
the duplicate regex setup and cleanup code.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pickaxe: honor -i when used with -S and --pickaxe-regexRené Scharfe Sat, 22 Mar 2014 17:15:56 +0000 (18:15 +0100)

pickaxe: honor -i when used with -S and --pickaxe-regex

accccde4 (pickaxe: allow -i to search in patch case-insensitively)
allowed case-insenitive matching for -G and -S, but for the latter
only if fixed string matching is used. Allow it for -S and regular
expression matching as well to make the support complete.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4209: use helper functions to test --authorRené Scharfe Sat, 22 Mar 2014 17:15:55 +0000 (18:15 +0100)

t4209: use helper functions to test --author

Also add tests for case sensitive and non-matching cases.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4209: use helper functions to test --grepRené Scharfe Sat, 22 Mar 2014 17:15:54 +0000 (18:15 +0100)

t4209: use helper functions to test --grep

Also add tests for non-matching cases.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4209: factor out helper function test_log_icase()René Scharfe Sat, 22 Mar 2014 17:15:53 +0000 (18:15 +0100)

t4209: factor out helper function test_log_icase()

Reduce code duplication by introducing test_log_icase() that runs the
same test with both --regexp-ignore-case and -i. The specification of
the four basic test scenarios (matching/nomatching combined with case
sensitive/insensitive) becomes easier to read and write.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4209: factor out helper function test_log()René Scharfe Sat, 22 Mar 2014 17:15:52 +0000 (18:15 +0100)

t4209: factor out helper function test_log()

Twelve tests in t4209 follow the same simple pattern for description,
git log call and checking. Extract that shared logic into a helper
function named test_log. Test specifications become a lot more
compact, new tests can be added more easily.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch.c: install_branch_config: simplify if chainAdam Mon, 10 Mar 2014 05:32:01 +0000 (01:32 -0400)

branch.c: install_branch_config: simplify if chain

Simplify if chain in install_branch_config().

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

t4209: set up expectations up frontRené Scharfe Sat, 22 Mar 2014 17:15:51 +0000 (18:15 +0100)

t4209: set up expectations up front

Instead of creating an expect file for each test, build three files with
the possible valid values during setup and use them in the tests. This
shortens the test code and saves nine calls to git rev-parse.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t1502: protect runs of SPs used in the indentationJunio C Hamano Sun, 23 Mar 2014 22:26:36 +0000 (15:26 -0700)

t1502: protect runs of SPs used in the indentation

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

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

rev-parse --parseopt: option argument name hintsIlya Bobyr Sat, 22 Mar 2014 09:47:34 +0000 (02:47 -0700)

rev-parse --parseopt: option argument name hints

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

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

Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: describe CHARSET_LIB betterДилян Палаузов Tue, 11 Mar 2014 22:37:33 +0000 (23:37 +0100)

Makefile: describe CHARSET_LIB better

The original explanation was not even grammatically correct or
readable.

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

userdiff: have 'cpp' hunk header pattern catch more... Johannes Sixt Fri, 21 Mar 2014 21:07:22 +0000 (22:07 +0100)

userdiff: have 'cpp' hunk header pattern catch more C++ anchor points

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

The parts of the pattern have the following flaws:

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

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

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

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

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

void
func(...

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

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

. functions returning references:
const string& get_message()

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

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

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

struct random_iterator_tag {};

because no semicolon can occur on the line.

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

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

This has the following desirable consequence:

- All constructs mentioned above are recognized.

and the following likely desirable consequences:

- Definitions of global variables and typedefs are recognized:

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

- Commonly used marco-ized boilerplate code is recognized:

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

(The last one is from this very patch.)

but also the following possibly undesirable consequence:

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

next:;

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: test cases showing that the cpp pattern misses... Johannes Sixt Fri, 21 Mar 2014 21:07:21 +0000 (22:07 +0100)

t4018: test cases showing that the cpp pattern misses many anchor points

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: test cases for the built-in cpp patternJohannes Sixt Fri, 21 Mar 2014 21:07:20 +0000 (22:07 +0100)

t4018: test cases for the built-in cpp pattern

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: reduce test files for pattern compilation testsJohannes Sixt Fri, 21 Mar 2014 21:07:19 +0000 (22:07 +0100)

t4018: reduce test files for pattern compilation tests

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

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: convert custom pattern test to the new infrastru... Johannes Sixt Fri, 21 Mar 2014 21:07:18 +0000 (22:07 +0100)

t4018: convert custom pattern test to the new infrastructure

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: convert java pattern test to the new infrastructureJohannes Sixt Fri, 21 Mar 2014 21:07:17 +0000 (22:07 +0100)

t4018: convert java pattern test to the new infrastructure

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: convert perl pattern tests to the new infrastructureJohannes Sixt Fri, 21 Mar 2014 21:07:16 +0000 (22:07 +0100)

t4018: convert perl pattern tests to the new infrastructure

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4018: an infrastructure to test hunk headersJohannes Sixt Fri, 21 Mar 2014 21:07:15 +0000 (22:07 +0100)

t4018: an infrastructure to test hunk headers

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

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

userdiff: support unsigned and long long suffixes of... Johannes Sixt Fri, 21 Mar 2014 21:07:14 +0000 (22:07 +0100)

userdiff: support unsigned and long long suffixes of integer constants

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

userdiff: support C++ ->* and .* operators in the word... Johannes Sixt Fri, 21 Mar 2014 21:07:13 +0000 (22:07 +0100)

userdiff: support C++ ->* and .* operators in the word regexp

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

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0001: drop subshells just for "cd"Jeff King Thu, 20 Mar 2014 23:23:06 +0000 (19:23 -0400)

t0001: drop subshells just for "cd"

Many tests do something like:

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

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

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