gitweb.git
git-config: do not complain about duplicate entriesJeff King Tue, 23 Oct 2012 20:52:44 +0000 (16:52 -0400)

git-config: do not complain about duplicate entries

If git-config is asked for a single value, it will complain
and exit with an error if it finds multiple instances of
that value. This is unlike the usual internal config
parsing, however, which will generally overwrite previous
values, leaving only the final one. For example:

[set a multivar]
$ git config user.email one@example.com
$ git config --add user.email two@example.com

[use the internal parser to fetch it]
$ git var GIT_AUTHOR_IDENT
Your Name <two@example.com> ...

[use git-config to fetch it]
$ git config user.email
one@example.com
error: More than one value for the key user.email: two@example.com

This overwriting behavior is critical for the regular
parser, which starts with the lowest-priority file (e.g.,
/etc/gitconfig) and proceeds to the highest-priority file
($GIT_DIR/config). Overwriting yields the highest priority
value at the end.

Git-config solves this problem by implementing its own
parsing. It goes from highest to lowest priorty, but does
not proceed to the next file if it has seen a value.

So in practice, this distinction never mattered much,
because it only triggered for values in the same file. And
there was not much point in doing that; the real value is in
overwriting values from lower-priority files.

However, this changed with the implementation of config
include files. Now we might see an include overriding a
value from the parent file, which is a sensible thing to do,
but git-config will flag as a duplication.

This patch drops the duplicate detection for git-config and
switches to a pure-overwrite model (for the single case;
--get-all can still be used if callers want to do something
more fancy).

As is shown by the modifications to the test suite, this is
a user-visible change in behavior. An alternative would be
to just change the include case, but this is much cleaner
for a few reasons:

1. If you change the include case, then to what? If you
just stop parsing includes after getting a value, then
you will get a _different_ answer than the regular
config parser (you'll get the first value instead of
the last value). So you'd want to implement overwrite
semantics anyway.

2. Even though it is a change in behavior for git-config,
it is bringing us in line with what the internal
parsers already do.

3. The file-order reimplementation is the only thing
keeping us from sharing more code with the internal
config parser, which will help keep differences to a
minimum.

Going under the assumption that the primary purpose of
git-config is to behave identically to how git's internal
parsing works, this change can be seen as a bug-fix.

Signed-off-by: Jeff King <peff@peff.net>

git-config: collect values instead of immediately printingJeff King Tue, 23 Oct 2012 19:51:50 +0000 (15:51 -0400)

git-config: collect values instead of immediately printing

This is a refactor that will allow us to more easily tweak
the behavior for multi-valued variables, and it will
ultimately allow us to remove a lot git-config's custom code
in favor of the regular git_config code.

It does mean we're no longer streaming, and we're storing
more in memory for the --get-all case, but in practice it is
a tiny amount of data, and the results are instantaneous.

Signed-off-by: Jeff King <peff@peff.net>

git-config: fix regexp memory leaks on error conditionsJeff King Tue, 23 Oct 2012 19:40:06 +0000 (15:40 -0400)

git-config: fix regexp memory leaks on error conditions

The get_value function has a goto label for cleaning up on
errors, but it only cleans up half of what the function
might allocate. Let's also clean up the key and regexp
variables there.

Note that we need to take special care when compiling the
regex fails to clean it up ourselves, since it is in a
half-constructed state (we would want to free it, but not
regfree it).

Similarly, we fix git_config_parse_key to return NULL when
it fails, not a pointer to some already-freed memory.

Signed-off-by: Jeff King <peff@peff.net>

git-config: remove memory leak of key regexpJeff King Tue, 23 Oct 2012 19:36:12 +0000 (15:36 -0400)

git-config: remove memory leak of key regexp

This is only called once per invocation, so it's not a major
leak, but it's easy to fix.

Signed-off-by: Jeff King <peff@peff.net>

t1300: test "git config --get-all" more thoroughlyJeff King Tue, 23 Oct 2012 22:05:49 +0000 (18:05 -0400)

t1300: test "git config --get-all" more thoroughly

We check that we can "--get-all" a multi-valued variable,
but we do not actually confirm that the output is sensible.
Doing so reveals that it works fine, but this will help us
ensure we do not have regressions in the next few patches,
which will touch this area.

Signed-off-by: Jeff King <peff@peff.net>

t1300: remove redundant testJeff King Tue, 23 Oct 2012 19:09:22 +0000 (15:09 -0400)

t1300: remove redundant test

This test checks that git-config fails for an ambiguous
"get", but we check the exact same thing 3 tests beforehand.

Signed-off-by: Jeff King <peff@peff.net>

t1300: style updatesJeff King Tue, 23 Oct 2012 18:59:26 +0000 (14:59 -0400)

t1300: style updates

The t1300 test script is quite old, and does not use our
modern techniques or styles. This patch updates it in the
following ways:

1. Use test_cmp instead of cmp (to make failures easier to
debug).

2. Use test_cmp instead of 'test $(command) = expected'.
This makes failures much easier to debug, and also
makes sure that $(command) exits appropriately.

3. Use test_must_fail (easier to read, and checks more
rigorously for signal death).

4. Write tests with the usual style of:

test_expect_success 'test name' '
test commands &&
...
'

rather than one-liners, or using backslash-continuation.
This is purely a style fixup.

There are still a few command happening outside of
test_expect invocations, but they are all innoccuous system
commands like "cat" and "cp". In an ideal world, each test
would be self sufficient and all commands would happen
inside test_expect, but it is not immediately obvious how
the grouping should work (some of the commands impact the
subsequent tests, and some of them are setting up and
modifying state that many tests depend on). This patch just
picks the low-hanging style fruit, and we can do more fixes
on top later.

Signed-off-by: Jeff King <peff@peff.net>

Git 1.8.0 v1.8.0Junio C Hamano Sun, 21 Oct 2012 20:56:23 +0000 (13:56 -0700)

Git 1.8.0

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

Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-guiJunio C Hamano Wed, 17 Oct 2012 22:55:46 +0000 (15:55 -0700)

Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui

git-gui 0.17.0

* tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui:
git-gui 0.17
git-gui: Don't prepend the prefix if value looks like a full path
git-gui: Detect full path when parsing arguments
git-gui: remove .git/CHERRY_PICK_HEAD after committing
git-gui: Fix a loose/lose mistake
git-gui: Fix semi-working shortcuts for unstage and revert
git-gui: de.po: translate "remote" as "extern"
git-gui: de.po: translate "bare" as "bloß"
git-gui: de.po: consistently add untranslated hook names within braces
git-gui: preserve commit messages in utf-8
git-gui: open console when using --trace on windows
git-gui: fix a typo in po/ files
git-gui: Use PWD if it exists on Mac OS X
git-gui: fix git-gui crash due to uninitialized variable

git-gui 0.17 gitgui-0.17.0Pat Thoyts Wed, 17 Oct 2012 20:57:29 +0000 (21:57 +0100)

git-gui 0.17

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: Don't prepend the prefix if value looks like... Andrew Wong Tue, 2 Oct 2012 16:25:15 +0000 (12:25 -0400)

git-gui: Don't prepend the prefix if value looks like a full path

When argument parsing fails to detect a file name, "git-gui" will try to
use the previously detected "head" as the file name. We should avoid
prepending the prefix if "head" looks like a full path.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: Detect full path when parsing argumentsAndrew Wong Tue, 2 Oct 2012 16:25:14 +0000 (12:25 -0400)

git-gui: Detect full path when parsing arguments

When running "git-gui blame" from a subfolder (which means prefix is
non-empty), if we pass a full path as argument, the argument parsing
will fail to recognize the argument as a file name, because prefix is
prepended to the argument.

This patch handles that scenario by adding an additional branch that
checks the file name without using the prefix.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

Git 1.8.0-rc3 v1.8.0-rc3Junio C Hamano Wed, 17 Oct 2012 17:39:44 +0000 (10:39 -0700)

Git 1.8.0-rc3

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

Merge git://github.com/git-l10n/git-poJunio C Hamano Wed, 17 Oct 2012 17:37:40 +0000 (10:37 -0700)

Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
l10n: vi.po: update from v1.8.0-rc2-4-g42e55
l10n: Update Swedish translation (1964t0f0u)

Sync with 1.7.12.4Junio C Hamano Wed, 17 Oct 2012 17:37:32 +0000 (10:37 -0700)

Sync with 1.7.12.4

Git 1.7.12.4 v1.7.12.4Junio C Hamano Wed, 17 Oct 2012 17:36:01 +0000 (10:36 -0700)

Git 1.7.12.4

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

Merge branch 'jk/maint-http-half-auth-push' into maintJunio C Hamano Wed, 17 Oct 2012 17:29:24 +0000 (10:29 -0700)

Merge branch 'jk/maint-http-half-auth-push' into maint

* jk/maint-http-half-auth-push:
http: fix segfault in handle_curl_result

Merge branch 'rr/git-uri-doc' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:56 +0000 (10:28 -0700)

Merge branch 'rr/git-uri-doc' into maint

* rr/git-uri-doc:
Git url doc: mark ftp/ftps as read-only and deprecate them

Merge branch 'bw/cp-a-is-gnuism' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:48 +0000 (10:28 -0700)

Merge branch 'bw/cp-a-is-gnuism' into maint

* bw/cp-a-is-gnuism:
tests: "cp -a" is a GNUism

Merge branch 'nd/doc-ignore' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:42 +0000 (10:28 -0700)

Merge branch 'nd/doc-ignore' into maint

* nd/doc-ignore:
gitignore.txt: suggestions how to get literal # or ! at the beginning

Merge branch 'jc/doc-long-options' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:34 +0000 (10:28 -0700)

Merge branch 'jc/doc-long-options' into maint

* jc/doc-long-options:
gitcli: parse-options lets you omit tail of long options

Merge branch 'jc/maint-t1450-fsck-order-fix' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:19 +0000 (10:28 -0700)

Merge branch 'jc/maint-t1450-fsck-order-fix' into maint

* jc/maint-t1450-fsck-order-fix:
t1450: the order the objects are checked is undefined

Merge branch 'rr/test-use-shell-path-not-shell' into... Junio C Hamano Wed, 17 Oct 2012 17:27:28 +0000 (10:27 -0700)

Merge branch 'rr/test-use-shell-path-not-shell' into maint

* rr/test-use-shell-path-not-shell:
test-lib: use $SHELL_PATH, not $SHELL

Merge branch 'rr/test-make-sure-we-have-git' into maintJunio C Hamano Wed, 17 Oct 2012 17:27:21 +0000 (10:27 -0700)

Merge branch 'rr/test-make-sure-we-have-git' into maint

* rr/test-make-sure-we-have-git:
t/test-lib: make sure Git has already been built

Merge branch 'po/maint-docs' into maintJunio C Hamano Wed, 17 Oct 2012 17:27:10 +0000 (10:27 -0700)

Merge branch 'po/maint-docs' into maint

* po/maint-docs:
Doc branch: show -vv option and alternative
Doc clean: add See Also link
Doc add: link gitignore
Doc: separate gitignore pattern sources
Doc: shallow clone deepens _to_ new depth

Merge branch 'jc/ll-merge-binary-ours' into maintJunio C Hamano Wed, 17 Oct 2012 17:26:51 +0000 (10:26 -0700)

Merge branch 'jc/ll-merge-binary-ours' into maint

* jc/ll-merge-binary-ours:
ll-merge: warn about inability to merge binary files only when we can't
attr: "binary" attribute should choose built-in "binary" merge driver
merge: teach -Xours/-Xtheirs to binary ll-merge driver

Merge branch 'db/doc-custom-xmlto' into maintJunio C Hamano Wed, 17 Oct 2012 17:25:37 +0000 (10:25 -0700)

Merge branch 'db/doc-custom-xmlto' into maint

* db/doc-custom-xmlto:
Documentation/Makefile: Allow custom XMLTO binary

Merge branch 'master' of https://github.com/nafmo/git... Jiang Xin Wed, 17 Oct 2012 01:38:30 +0000 (09:38 +0800)

Merge branch 'master' of https://github.com/nafmo/git-l10n-sv

* 'master' of https://github.com/nafmo/git-l10n-sv:
l10n: Update Swedish translation (1964t0f0u)

Merge branch 'master' of git://github.com/vnwildman/gitJiang Xin Wed, 17 Oct 2012 01:37:30 +0000 (09:37 +0800)

Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
l10n: vi.po: update from v1.8.0-rc2-4-g42e55

l10n: vi.po: update from v1.8.0-rc2-4-g42e55Tran Ngoc Quan Wed, 17 Oct 2012 01:15:28 +0000 (08:15 +0700)

l10n: vi.po: update from v1.8.0-rc2-4-g42e55

* translate 3 new messages
* review quotes

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

Documentation/RelNotes: remove "updated up to this... Thomas Ackermann Tue, 16 Oct 2012 17:26:23 +0000 (19:26 +0200)

Documentation/RelNotes: remove "updated up to this revision" markers

These were used to keep track of the last commit a release notes
entry was written for, and should have been removed when cutting
the final release.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.8.0Junio C Hamano Tue, 16 Oct 2012 20:27:23 +0000 (13:27 -0700)

Update draft release notes to 1.8.0

We are almost there...

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

Merge branch 'jk/maint-http-half-auth-push'Junio C Hamano Tue, 16 Oct 2012 18:44:37 +0000 (11:44 -0700)

Merge branch 'jk/maint-http-half-auth-push'

Fixes a regression in maint-1.7.11 (v1.7.11.7), maint (v1.7.12.1)
and master (v1.8.0-rc0).

* jk/maint-http-half-auth-push:
http: fix segfault in handle_curl_result

l10n: Update Swedish translation (1964t0f0u)Peter Krefting Tue, 16 Oct 2012 07:38:11 +0000 (08:38 +0100)

l10n: Update Swedish translation (1964t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

l10n: Update git.pot (3 new, 6 removed messages)Jiang Xin Tue, 16 Oct 2012 00:39:10 +0000 (08:39 +0800)

l10n: Update git.pot (3 new, 6 removed messages)

This po/git.pot update is generated from v1.8.0-rc2-4-g42e55.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'master' of git://github.com/vnwildman/gitJiang Xin Tue, 16 Oct 2012 00:31:22 +0000 (08:31 +0800)

Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
l10n: vi.po: update translation upto cc76011

l10n: vi.po: update translation upto cc76011Tran Ngoc Quan Mon, 15 Oct 2012 07:35:49 +0000 (14:35 +0700)

l10n: vi.po: update translation upto cc76011

* translate all new messages (100%)
* review some others

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

Merge branch 'maint'Junio C Hamano Sun, 14 Oct 2012 06:05:54 +0000 (23:05 -0700)

Merge branch 'maint'

* maint:
Fix spelling error in post-receive-email hook

Fix spelling error in post-receive-email hookRichard Fearn Sat, 13 Oct 2012 22:32:50 +0000 (23:32 +0100)

Fix spelling error in post-receive-email hook

Signed-off-by: Richard Fearn <richardfearn@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Fri, 12 Oct 2012 18:36:06 +0000 (11:36 -0700)

Merge branch 'maint'

* maint:
gitweb.cgi: fix "comitter_tz" typo in feed

http: fix segfault in handle_curl_resultJeff King Fri, 12 Oct 2012 06:22:49 +0000 (02:22 -0400)

http: fix segfault in handle_curl_result

When we create an http active_request_slot, we can set its
"results" pointer back to local storage. The http code will
fill in the details of how the request went, and we can
access those details even after the slot has been cleaned
up.

Commit 8809703 (http: factor out http error code handling)
switched us from accessing our local results struct directly
to accessing it via the "results" pointer of the slot. That
means we're accessing the slot after it has been marked as
finished, defeating the whole purpose of keeping the results
storage separate.

Most of the time this doesn't matter, as finishing the slot
does not actually clean up the pointer. However, when using
curl's multi interface with the dumb-http revision walker,
we might actually start a new request before handing control
back to the original caller. In that case, we may reuse the
slot, zeroing its results pointer, and leading the original
caller to segfault while looking for its results inside the
slot.

Instead, we need to pass a pointer to our local results
storage to the handle_curl_result function, rather than
relying on the pointer in the slot struct. This matches what
the original code did before the refactoring (which did not
use a separate function, and therefore just accessed the
results struct directly).

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

gitweb.cgi: fix "comitter_tz" typo in feedDylan Alex Simon Thu, 11 Oct 2012 20:40:35 +0000 (16:40 -0400)

gitweb.cgi: fix "comitter_tz" typo in feed

gitweb's feeds sometimes contained committer timestamps in the wrong timezone
due to a misspelling.

Signed-off-by: Dylan Simon <dylan@dylex.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.0-rc2 v1.8.0-rc2Junio C Hamano Thu, 11 Oct 2012 18:18:56 +0000 (11:18 -0700)

Git 1.8.0-rc2

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

Merge branch 'rr/git-uri-doc'Junio C Hamano Wed, 10 Oct 2012 21:57:26 +0000 (14:57 -0700)

Merge branch 'rr/git-uri-doc'

* rr/git-uri-doc:
Git url doc: mark ftp/ftps as read-only and deprecate them

Merge branch 'bw/cp-a-is-gnuism'Junio C Hamano Wed, 10 Oct 2012 21:57:09 +0000 (14:57 -0700)

Merge branch 'bw/cp-a-is-gnuism'

* bw/cp-a-is-gnuism:
tests: "cp -a" is a GNUism

Merge branch 'nd/doc-ignore'Junio C Hamano Wed, 10 Oct 2012 21:57:02 +0000 (14:57 -0700)

Merge branch 'nd/doc-ignore'

* nd/doc-ignore:
gitignore.txt: suggestions how to get literal # or ! at the beginning

Merge branch 'jc/doc-long-options'Junio C Hamano Wed, 10 Oct 2012 21:56:52 +0000 (14:56 -0700)

Merge branch 'jc/doc-long-options'

* jc/doc-long-options:
gitcli: parse-options lets you omit tail of long options

Sync with maintJunio C Hamano Wed, 10 Oct 2012 21:54:25 +0000 (14:54 -0700)

Sync with maint

* maint:
attr: a note about the order of .gitattributes lookup

Merge git://bogomips.org/git-svnJunio C Hamano Wed, 10 Oct 2012 20:53:56 +0000 (13:53 -0700)

Merge git://bogomips.org/git-svn

* git://bogomips.org/git-svn:
svn test: escape peg revision separator using empty peg rev
git svn: work around SVN 1.7 mishandling of svn:special changes

svn test: escape peg revision separator using empty... Jonathan Nieder Tue, 9 Oct 2012 08:41:45 +0000 (01:41 -0700)

svn test: escape peg revision separator using empty peg rev

This test script uses "svn cp" to create a branch with an @-sign in
its name:

svn cp "pr ject/trunk" "pr ject/branches/not-a@{0}reflog"

That sets up for later tests that fetch the branch and check that git
svn mangles the refname appropriately.

Unfortunately, modern svn versions interpret path arguments with an
@-sign as an example of path@revision syntax (which pegs a path to a
particular revision) and truncate the path or error out with message
"svn: E205000: Syntax error parsing peg revision '{0}reflog'".

When using subversion 1.6.x, escaping the @ sign as %40 avoids trouble
(see 08fd28bb, 2010-07-08). Newer versions are stricter:

$ svn cp "$repo/pr ject/trunk" "$repo/pr ject/branches/not-a%40{reflog}"
svn: E205000: Syntax error parsing peg revision '%7B0%7Dreflog'

The recommended method for escaping a literal @ sign in a path passed
to subversion is to add an empty peg revision at the end of the path
("branches/not-a@{0}reflog@"). Do that.

Pre-1.6.12 versions of Subversion probably treat the trailing @ as
another literal @-sign (svn issue 3651). Luckily ever since
v1.8.0-rc0~155^2~7 (t9118: workaround inconsistency between SVN
versions, 2012-07-28) the test can survive that.

Tested with Debian Subversion 1.6.12dfsg-6 and 1.7.5-1 and r1395837
of Subversion trunk (1.8.x).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Tested-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git svn: work around SVN 1.7 mishandling of svn:special... Jonathan Nieder Tue, 9 Oct 2012 10:12:39 +0000 (03:12 -0700)

git svn: work around SVN 1.7 mishandling of svn:special changes

Subversion represents symlinks as ordinary files with content starting
with "link " and the svn:special property set to "*". Thus a file can
switch between being a symlink and a non-symlink simply by toggling
its svn:special property, and new checkouts will automatically write a
file of the appropriate type. Likewise, in subversion 1.6 and older,
running "svn update" would notice changes in filetype and update the
working copy appropriately.

Starting in subversion 1.7 (issue 4091), changes to the svn:special
property trip an assertion instead:

$ svn up svn-tree
Updating 'svn-tree':
svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' \
line 1583: assertion failed (action == svn_wc_conflict_action_edit \
|| action == svn_wc_conflict_action_delete || action == \
svn_wc_conflict_action_replace)

Revisions prepared with ordinary svn commands ("svn add" and not "svn
propset") don't trip this because they represent these filetype
changes using a replace operation, which is approximately equivalent
to removal followed by adding a new file and works fine. Follow suit.

Noticed using t9100. After this change, git-svn's file-to-symlink
changes are sent in a format that modern "svn update" can handle and
tests t9100.11-13 pass again.

[ew: s,git-svn\.perl,perl/Git/SVN/Editor.pm,g]

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

MALLOC_CHECK: Allow checking to be disabled from config.makRamsay Jones Sat, 6 Oct 2012 17:33:08 +0000 (18:33 +0100)

MALLOC_CHECK: Allow checking to be disabled from config.mak

The malloc checks can be disabled using the TEST_NO_MALLOC_CHECK
variable, either from the environment or command line of an
'make test' invocation. In order to allow the malloc checks to be
disabled from the 'config.mak' file, we add TEST_NO_MALLOC_CHECK
to the environment using an export directive.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

attr: a note about the order of .gitattributes lookupNguyen Thai Ngoc Duy Wed, 10 Oct 2012 13:55:52 +0000 (20:55 +0700)

attr: a note about the order of .gitattributes lookup

This is the documentation part of

1a9d7e9 (attr.c: read .gitattributes from index as well. - 2007-08-14)
06f33c1 (Read attributes from the index that is being checked out - 2009-03-13)

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

Merge branch 'maint'Junio C Hamano Tue, 9 Oct 2012 21:23:45 +0000 (14:23 -0700)

Merge branch 'maint'

* maint:
l10n: de.po: fix a few minor typos

configure.ac: Add missing comma to CC_LD_DYNPATHØyvind A. Holm Tue, 9 Oct 2012 14:26:11 +0000 (16:26 +0200)

configure.ac: Add missing comma to CC_LD_DYNPATH

40bfbde ("build: don't duplicate substitution of make variables",
2012-09-11) by mistake removed a necessary comma at the end of
"CC_LD_DYNPATH=-Wl,rpath," in line 414.

When executing "./configure --with-zlib=PATH", this resulted in

[...]
CC xdiff/xhistogram.o
AR xdiff/lib.a
LINK git-credential-store
/usr/bin/ld: bad -rpath option
collect2: ld returned 1 exit status
make: *** [git-credential-store] Error 1
$

during make.

Signed-off-by: Øyvind A. Holm <sunny@sunbase.org>
Acked-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint' of git://github.com/git-l10n/git... Junio C Hamano Tue, 9 Oct 2012 18:48:53 +0000 (11:48 -0700)

Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

* 'maint' of git://github.com/git-l10n/git-po:
l10n: de.po: fix a few minor typos

tests: "cp -a" is a GNUismBen Walton Mon, 8 Oct 2012 08:08:01 +0000 (09:08 +0100)

tests: "cp -a" is a GNUism

These tests just want a bit-for-bit identical copy; they do not need
even -H (there is no symbolic link involved) nor -p (there is no
funny permission or ownership issues involved).

Just use "cp -R" instead.

Signed-off-by: Ben Walton <bdwalton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git url doc: mark ftp/ftps as read-only and deprecate... Ramkumar Ramachandra Mon, 8 Oct 2012 17:26:53 +0000 (10:26 -0700)

Git url doc: mark ftp/ftps as read-only and deprecate them

It is not even worth mentioning their removal; just discourage
people from using them.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.0-rc1 v1.8.0-rc1Junio C Hamano Mon, 8 Oct 2012 18:45:41 +0000 (11:45 -0700)

Git 1.8.0-rc1

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

Merge branch 'jc/maint-t1450-fsck-order-fix'Junio C Hamano Mon, 8 Oct 2012 18:43:10 +0000 (11:43 -0700)

Merge branch 'jc/maint-t1450-fsck-order-fix'

The fsck test assumed too much on what kind of error it will
detect. The only important thing is the inconsistency is detected
as an error.

* jc/maint-t1450-fsck-order-fix:
t1450: the order the objects are checked is undefined

Merge branch 'jc/merge-bases-paint-fix'Junio C Hamano Mon, 8 Oct 2012 18:42:15 +0000 (11:42 -0700)

Merge branch 'jc/merge-bases-paint-fix'

"git fmt-merge-msg" (an internal helper reduce_heads() it uses) had
a severe performance regression; an empty "git pull" took forever to
finish as the result.

* jc/merge-bases-paint-fix:
paint_down_to_common(): parse commit before relying on its timestamp

Sync with 1.7.12.3Junio C Hamano Mon, 8 Oct 2012 18:41:21 +0000 (11:41 -0700)

Sync with 1.7.12.3

Git 1.7.12.3 v1.7.12.3Junio C Hamano Mon, 8 Oct 2012 18:40:43 +0000 (11:40 -0700)

Git 1.7.12.3

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

Merge branch 'os/commit-submodule-ignore' into maintJunio C Hamano Mon, 8 Oct 2012 18:34:34 +0000 (11:34 -0700)

Merge branch 'os/commit-submodule-ignore' into maint

"git status" honored the ignore=dirty settings in .gitmodules but
"git commit" didn't.

* os/commit-submodule-ignore:
commit: pay attention to submodule.$name.ignore in .gitmodules

Merge branch 'jk/receive-pack-unpack-error-to-pusher... Junio C Hamano Mon, 8 Oct 2012 18:34:19 +0000 (11:34 -0700)

Merge branch 'jk/receive-pack-unpack-error-to-pusher' into maint

"git receive-pack" (the counterpart to "git push") did not give
progress output while processing objects it received to the puser
when run over the smart-http protocol.

* jk/receive-pack-unpack-error-to-pusher:
receive-pack: drop "n/a" on unpacker errors
receive-pack: send pack-processing stderr over sideband
receive-pack: redirect unpack-objects stdout to /dev/null

Merge branch 'rt/maint-clone-single' into maintJunio C Hamano Mon, 8 Oct 2012 18:34:02 +0000 (11:34 -0700)

Merge branch 'rt/maint-clone-single' into maint

A repository created with "git clone --single" had its fetch
refspecs set up just like a clone without "--single", leading the
subsequent "git fetch" to slurp all the other branches, defeating
the whole point of specifying "only this branch".

* rt/maint-clone-single:
clone --single: limit the fetch refspec to fetched branch

Merge branch 'jc/blame-follows-renames' into maintJunio C Hamano Mon, 8 Oct 2012 18:33:35 +0000 (11:33 -0700)

Merge branch 'jc/blame-follows-renames' into maint

It was unclear in the documentation for "git blame" that it is
unnecessary for users to use the "--follow" option.

* jc/blame-follows-renames:
git blame: document that it always follows origin across whole-file renames

Merge branch 'lt/mailinfo-handle-attachment-more-sanely... Junio C Hamano Mon, 8 Oct 2012 18:32:59 +0000 (11:32 -0700)

Merge branch 'lt/mailinfo-handle-attachment-more-sanely' into maint

A patch attached as application/octet-stream (e.g. not text/*) were
mishandled, not correctly honoring Content-Transfer-Encoding
(e.g. base64).

* lt/mailinfo-handle-attachment-more-sanely:
mailinfo: don't require "text" mime type for attachments

gitignore.txt: suggestions how to get literal # or... Nguyễn Thái Ngọc Duy Sun, 7 Oct 2012 03:13:54 +0000 (10:13 +0700)

gitignore.txt: suggestions how to get literal # or ! at the beginning

We support backslash escape, but we hide the details behind the phrase
"a shell glob suitable for consumption by fnmatch(3)". So it may not
be obvious how one can get literal # or ! at the beginning of pattern.
Add a few lines on how to work around the magic characters.

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

git-svn: keep leading slash when canonicalizing paths... Jonathan Nieder Fri, 5 Oct 2012 07:04:31 +0000 (00:04 -0700)

git-svn: keep leading slash when canonicalizing paths (fallback case)

Subversion's svn_dirent_canonicalize() and svn_path_canonicalize()
APIs keep a leading slash in the return value if one was present on
the argument, which can be useful since it allows relative and
absolute paths to be distinguished.

When git-svn's canonicalize_path() learned to use these functions if
available, its semantics changed in the corresponding way. Some new
callers rely on the leading slash --- for example, if the slash is
stripped out then _canonicalize_url_ourselves() will transform
"proto://host/path/to/resource" to "proto://hostpath/to/resource".

Unfortunately the fallback _canonicalize_path_ourselves(), used when
the appropriate SVN APIs are not usable, still follows the old
semantics, so if that code path is exercised then it breaks. Fix it
to follow the new convention.

Noticed by forcing the fallback on and running tests. Without this
patch, t9101.4 fails:

Bad URL passed to RA layer: Unable to open an ra_local session to \
URL: Local URL 'file://homejrnsrcgit-scratch/t/trash%20directory.\
t9101-git-svn-props/svnrepo' contains unsupported hostname at \
/home/jrn/src/git-scratch/perl/blib/lib/Git/SVN.pm line 148

With it, the git-svn tests pass again.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

Git::SVN: rename private path fieldJonathan Nieder Mon, 17 Sep 2012 09:13:31 +0000 (02:13 -0700)

Git::SVN: rename private path field

All users of $gs->{path} should have been converted to use the
accessor by now. Check our work by renaming the underlying variable
to break callers that try to use it directly.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn: use path accessor for Git::SVN objectsEric Wong Tue, 18 Sep 2012 00:09:31 +0000 (00:09 +0000)

git-svn: use path accessor for Git::SVN objects

The accessors should improve maintainability and enforce
consistent access to Git::SVN objects.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>

Make git-svn branch patterns match complete URLAmmon Riley Thu, 30 Aug 2012 22:53:57 +0000 (15:53 -0700)

Make git-svn branch patterns match complete URL

When using the {word,[...]} style of configuration for tags and branches,
it appears the intent is to only match whole path parts, since the words
in the {} pattern are meta-character quoted.

When the pattern word appears in the beginning or middle of the url,
it's matched completely, since the left side, pattern, and (non-empty)
right side are joined together with path separators.

However, when the pattern word appears at the end of the URL, the
right side is an empty pattern, and the resulting regex matches
more than just the specified pattern.

For example, if you specify something along the lines of

branches = branches/project/{release_1,release_2}

and your repository also contains "branches/project/release_1_2", you
will also get the release_1_2 branch. By restricting the match regex
with anchors, this is avoided.

Signed-off-by: Ammon Riley <ammon.riley@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

t9164: Add missing quotes in testRobert Luberda Sun, 19 Aug 2012 22:43:19 +0000 (00:43 +0200)

t9164: Add missing quotes in test

This fixes `ambiguous redirect' error given by bash.

[ew: fix misspelled test name,
also eliminate space after ">>" to conform to guidelines]

Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn.perl: keep processing all commits in parents_ex... Steven Walter Mon, 20 Aug 2012 01:39:41 +0000 (21:39 -0400)

git-svn.perl: keep processing all commits in parents_exclude

This fixes a bug where git finds the incorrect merge parent. Consider a
repository with trunk, branch1 of trunk, and branch2 of branch1.
Without this change, git interprets a merge of branch2 into trunk as a
merge of branch1 into trunk.

Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
Reviewed-by: Sam Vilain <sam@vilain.net>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn.perl: consider all ranges for a given merge... Steven Walter Mon, 20 Aug 2012 01:39:40 +0000 (21:39 -0400)

git-svn.perl: consider all ranges for a given merge, instead of only tip-by-tip

Consider the case where you have trunk, branch1 of trunk, and branch2 of
branch1. trunk is merged back into branch2, and then branch2 is
reintegrated into trunk. The merge of branch2 into trunk will have
svn:mergeinfo property references to both branch1 and branch2. When
git-svn fetches the commit that merges branch2 (check_cherry_pick),
it is necessary to eliminate the merged contents of branch1 as well as
branch2, or else the merge will be incorrectly ignored as a cherry-pick.

Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
Reviewed-by: Sam Vilain <sam@vilain.net>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

gitcli: parse-options lets you omit tail of long optionsJunio C Hamano Thu, 4 Oct 2012 17:13:49 +0000 (10:13 -0700)

gitcli: parse-options lets you omit tail of long options

Describe the behaviour, but do warn people against taking it too
literally and expect an abbreviation valid today will stay valid
forever.

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

paint_down_to_common(): parse commit before relying... Junio C Hamano Thu, 4 Oct 2012 22:37:15 +0000 (15:37 -0700)

paint_down_to_common(): parse commit before relying on its timestamp

When refactoring the merge-base computation to reduce the pairwise
O(n*(n-1)) traversals to parallel O(n) traversals, the code forgot
that timestamp based heuristics needs each commit to have been
parsed. This caused an empty "git pull" to spend cycles, traversing
the history all the way down to 0 (because an unparsed commit object
has 0 timestamp, and any other commit object with positive timestamp
will be processed for its parents, all getting parsed), only to come
up with a merge message to be used.

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

l10n: de.po: fix a few minor typosSimon Ruderich Thu, 4 Oct 2012 14:23:14 +0000 (16:23 +0200)

l10n: de.po: fix a few minor typos

Signed-off-by: Simon Ruderich <simon@ruderich.org>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

Update draft release notes to 1.8.0Junio C Hamano Wed, 3 Oct 2012 04:18:40 +0000 (21:18 -0700)

Update draft release notes to 1.8.0

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

Merge branch 'nd/grep-reflog'Junio C Hamano Wed, 3 Oct 2012 04:13:39 +0000 (21:13 -0700)

Merge branch 'nd/grep-reflog'

Teach the commands from the "log" family the "--grep-reflog" option
to limit output by string that appears in the reflog entry when the
"--walk-reflogs" option is in effect.

* nd/grep-reflog:
revision: make --grep search in notes too if shown
log --grep-reflog: reject the option without -g
revision: add --grep-reflog to filter commits by reflog messages
grep: prepare for new header field filter

Merge branch 'lt/mailinfo-handle-attachment-more-sanely'Junio C Hamano Wed, 3 Oct 2012 04:13:35 +0000 (21:13 -0700)

Merge branch 'lt/mailinfo-handle-attachment-more-sanely'

A patch attached as application/octet-stream (e.g. not text/*) were
mishandled, not correctly honoring Content-Transfer-Encoding
(e.g. base64).

* lt/mailinfo-handle-attachment-more-sanely:
mailinfo: don't require "text" mime type for attachments

Merge branch 'tu/gc-auto-quiet'Junio C Hamano Wed, 3 Oct 2012 04:13:27 +0000 (21:13 -0700)

Merge branch 'tu/gc-auto-quiet'

"gc --auto" notified the user that auto-packing has triggered even
under the "--quiet" option.

* tu/gc-auto-quiet:
silence git gc --auto --quiet output

t1450: the order the objects are checked is undefinedJunio C Hamano Tue, 2 Oct 2012 22:08:16 +0000 (15:08 -0700)

t1450: the order the objects are checked is undefined

When a tag T points at an object X that is of a type that is
different from what the tag records as, fsck should report it as an
error.

However, depending on the order X and T are checked individually,
the actual error message can be different. If X is checked first,
fsck remembers X's type and then when it checks T, it notices that T
records X as a wrong type (i.e. the complaint is about a broken tag
T). If T is checked first, on the other hand, fsck remembers that we
need to verify X is of the type tag records, and when it later
checks X, it notices that X is of a wrong type (i.e. the complaint
is about a broken object X).

The important thing is that fsck notices such an error and diagnoses
the issue on object X, but the test was expecting that we happen to
check objects in the order to make us detect issues with tag T, not
with object X. Remove this unwarranted assumption.

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

Merge branch 'maint'Junio C Hamano Tue, 2 Oct 2012 20:47:30 +0000 (13:47 -0700)

Merge branch 'maint'

Start preparing for 1.7.12.3Junio C Hamano Tue, 2 Oct 2012 20:44:59 +0000 (13:44 -0700)

Start preparing for 1.7.12.3

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

Merge branch 'rr/maint-submodule-unknown-cmd' into... Junio C Hamano Tue, 2 Oct 2012 20:42:32 +0000 (13:42 -0700)

Merge branch 'rr/maint-submodule-unknown-cmd' into maint

"git submodule frotz" was not diagnosed as "frotz" being an unknown
subcommand to "git submodule"; the user instead got a complaint that
"git submodule status" was run with an unknown path "frotz".

* rr/maint-submodule-unknown-cmd:
submodule: if $command was not matched, don't parse other args

Merge branch 'sp/maint-http-enable-gzip' into maintJunio C Hamano Tue, 2 Oct 2012 20:42:13 +0000 (13:42 -0700)

Merge branch 'sp/maint-http-enable-gzip' into maint

"git fetch" over http advertised that it supports "deflate", which
is much less common, and did not advertise more common "gzip" on its
Accept-Encoding header.

* sp/maint-http-enable-gzip:
Enable info/refs gzip decompression in HTTP client

Merge branch 'sp/maint-http-info-refs-no-retry' into... Junio C Hamano Tue, 2 Oct 2012 20:41:38 +0000 (13:41 -0700)

Merge branch 'sp/maint-http-info-refs-no-retry' into maint

"git fetch" over http had an old workaround for an unlikely server
misconfiguration; it turns out that this hurts debuggability of the
configuration in general, and has been reverted.

* sp/maint-http-info-refs-no-retry:
Revert "retry request without query when info/refs?query fails"

l10n: Fix to Swedish translationPeter Krefting Tue, 2 Oct 2012 07:25:32 +0000 (08:25 +0100)

l10n: Fix to Swedish translation

Fix bad translation of "Receiving objects".

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: mention `push.default` in git-push.txtRamkumar Ramachandra Tue, 2 Oct 2012 15:38:00 +0000 (21:08 +0530)

Documentation: mention `push.default` in git-push.txt

It already is listed in the "git config" documentation, but people
interested in pushing would first look at "git push" documentation.

Noticed-by: David Glasser
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Acked-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Fixed-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes/1.8.0: various typo and style fixesMichael J Gruber Tue, 2 Oct 2012 14:35:55 +0000 (16:35 +0200)

RelNotes/1.8.0: various typo and style fixes

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.8.0-rc0 v1.8.0-rc0Junio C Hamano Mon, 1 Oct 2012 20:09:47 +0000 (13:09 -0700)

Git 1.8.0-rc0

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

Merge branch 'jk/completion-tests'Junio C Hamano Mon, 1 Oct 2012 19:59:10 +0000 (12:59 -0700)

Merge branch 'jk/completion-tests'

* jk/completion-tests:
t9902: add completion tests for "odd" filenames
t9902: add a few basic completion tests

Merge branch 'ep/malloc-check-perturb'Junio C Hamano Mon, 1 Oct 2012 19:59:06 +0000 (12:59 -0700)

Merge branch 'ep/malloc-check-perturb'

Fixes a brown-paper bag bug.

* ep/malloc-check-perturb:
MALLOC_CHECK: enable it, unless disabled explicitly

Merge branch 'da/mergetool-custom'Junio C Hamano Mon, 1 Oct 2012 19:58:57 +0000 (12:58 -0700)

Merge branch 'da/mergetool-custom'

The actual external command to run for mergetool backend can be
specified with difftool/mergetool.$name.cmd configuration
variables, but this mechanism was ignored for the backends we
natively support.

* da/mergetool-custom:
mergetool--lib: Allow custom commands to override built-ins

Merge branch 'os/commit-submodule-ignore'Junio C Hamano Mon, 1 Oct 2012 19:58:51 +0000 (12:58 -0700)

Merge branch 'os/commit-submodule-ignore'

"git status" honored the ignore=dirty settings in .gitmodules but
"git commit" didn't.

* os/commit-submodule-ignore:
commit: pay attention to submodule.$name.ignore in .gitmodules

Merge branch 'jc/blame-follows-renames'Junio C Hamano Mon, 1 Oct 2012 19:58:43 +0000 (12:58 -0700)

Merge branch 'jc/blame-follows-renames'

Clarify the "blame" documentation to tell the users that there is
no need to ask for "--follow".

* jc/blame-follows-renames:
git blame: document that it always follows origin across whole-file renames

Merge branch 'jk/receive-pack-unpack-error-to-pusher'Junio C Hamano Mon, 1 Oct 2012 19:58:34 +0000 (12:58 -0700)

Merge branch 'jk/receive-pack-unpack-error-to-pusher'

Send errors from "unpack-objects" and "index-pack" back to the "git
push" over the git and smart-http protocols, just like it is done
for a push over the ssh protocol.

* jk/receive-pack-unpack-error-to-pusher:
receive-pack: drop "n/a" on unpacker errors
receive-pack: send pack-processing stderr over sideband
receive-pack: redirect unpack-objects stdout to /dev/null

Merge branch 'rt/maint-clone-single'Junio C Hamano Mon, 1 Oct 2012 19:58:10 +0000 (12:58 -0700)

Merge branch 'rt/maint-clone-single'

Running "git fetch" in a repository made with "git clone --single"
slurps all the branches, defeating the point of "--single".

* rt/maint-clone-single:
clone --single: limit the fetch refspec to fetched branch