gitweb.git
Merge branch 'nd/fix-directory-attrs-off-by-one'Junio C Hamano Tue, 22 Jan 2013 17:34:28 +0000 (09:34 -0800)

Merge branch 'nd/fix-directory-attrs-off-by-one'

Fix performance regression introduced by an earlier change to let
attributes apply to directories.

Needs to be merged to maint, as 94bc671a was merged there already.

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

Merge branch 'pw/p4-branch-fixes'Junio C Hamano Tue, 22 Jan 2013 04:15:44 +0000 (20:15 -0800)

Merge branch 'pw/p4-branch-fixes'

Fix "git p4" around branch handling.

* pw/p4-branch-fixes:
git p4: fix submit when no master branch
git p4 test: keep P4CLIENT changes inside subshells
git p4: fix sync --branch when no master branch
git p4: fail gracefully on sync with no master branch
git p4: rearrange self.initialParent use
git p4: allow short ref names to --branch
git p4 doc: fix branch detection example
git p4: clone --branch should checkout master
git p4: verify expected refs in clone --bare test
git p4: create p4/HEAD on initial clone
git p4: inline listExistingP4GitBranches
git p4: add comments to p4BranchesInGit
git p4: rearrange and simplify hasOrigin handling
git p4: test sync/clone --branch behavior

Merge branch 'mh/remote-hg-mode-bits-fix'Junio C Hamano Tue, 22 Jan 2013 04:15:40 +0000 (20:15 -0800)

Merge branch 'mh/remote-hg-mode-bits-fix'

Update to the Hg remote helper (in contrib/).

* mh/remote-hg-mode-bits-fix:
remote-hg: fix handling of file perms when pushing

Merge branch 'fc/remote-hg-fixup-url'Junio C Hamano Tue, 22 Jan 2013 04:15:32 +0000 (20:15 -0800)

Merge branch 'fc/remote-hg-fixup-url'

Update to the Hg remote helper (in contrib/).

* fc/remote-hg-fixup-url:
remote-hg: store converted URL

Merge branch 'zk/clean-report-failure'Junio C Hamano Tue, 22 Jan 2013 04:15:24 +0000 (20:15 -0800)

Merge branch 'zk/clean-report-failure'

"git clean" states what it is going to remove and then goes on to
remove it, but sometimes it only discovers things that cannot be
removed after recursing into a directory, which makes the output
confusing and even wrong.

* zk/clean-report-failure:
git-clean: Display more accurate delete messages

Merge branch 'ph/rebase-preserve-all-merges'Junio C Hamano Tue, 22 Jan 2013 04:15:15 +0000 (20:15 -0800)

Merge branch 'ph/rebase-preserve-all-merges'

An earlier change to add --keep-empty option broke "git rebase
--preserve-merges" and lost merge commits that end up being the
same as its parent.

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

Merge branch 'nd/clone-no-separate-git-dir-with-bare'Junio C Hamano Tue, 22 Jan 2013 04:15:07 +0000 (20:15 -0800)

Merge branch 'nd/clone-no-separate-git-dir-with-bare'

Forbid a useless combination of options to "git clone".

* nd/clone-no-separate-git-dir-with-bare:
clone: forbid --bare --separate-git-dir <dir>

Merge branch 'maint'Junio C Hamano Tue, 22 Jan 2013 01:16:16 +0000 (17:16 -0800)

Merge branch 'maint'

* maint:
git-for-each-ref.txt: 'raw' is a supported date format

git-for-each-ref.txt: 'raw' is a supported date formatJohn 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>

Update draft release notes to 1.8.2Junio C Hamano Mon, 21 Jan 2013 01:28:13 +0000 (17:28 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'maint'Junio C Hamano Mon, 21 Jan 2013 01:27:27 +0000 (17:27 -0800)

Merge branch 'maint'

Start preparing for 1.8.1.2Junio 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>

Merge branch 'nz/send-email-headers-are-case-insensitiv... 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

Merge branch 'rs/zip-with-uncompressed-size-in-the... 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

Merge branch 'rs/zip-tests' into maintJunio 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

Merge git://git.bogomips.org/git-svnJunio C Hamano Mon, 21 Jan 2013 01:08:46 +0000 (17:08 -0800)

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

* git://git.bogomips.org/git-svn:
git-svn: do not escape certain characters in paths

Merge branch 'rt/commit-cleanup-config'Junio C Hamano Mon, 21 Jan 2013 01:07:04 +0000 (17:07 -0800)

Merge branch 'rt/commit-cleanup-config'

Add a configuration variable to set default clean-up mode other
than "strip".

* rt/commit-cleanup-config:
commit: make default of "cleanup" option configurable

Merge branch 'ap/log-mailmap'Junio C Hamano Mon, 21 Jan 2013 01:06:52 +0000 (17:06 -0800)

Merge branch 'ap/log-mailmap'

Teach commands in the "log" family to optionally pay attention to
the mailmap.

* ap/log-mailmap:
log --use-mailmap: optimize for cases without --author/--committer search
log: add log.mailmap configuration option
log: grep author/committer using mailmap
test: add test for --use-mailmap option
log: add --use-mailmap option
pretty: use mailmap to display username and email
mailmap: add mailmap structure to rev_info and pp
mailmap: simplify map_user() interface
mailmap: remove email copy and length limitation
Use split_ident_line to parse author and committer
string-list: allow case-insensitive string list

git-svn: do not escape certain characters in pathsPeter Wu Thu, 17 Jan 2013 22:07:31 +0000 (23:07 +0100)

git-svn: do not escape certain characters in paths

Subversion 1.7 and newer implement HTTPv2, an extension that should make HTTP
more efficient. Servers with support for this protocol will make the subversion
client library take an alternative code path that checks (with assertions)
whether the URL is "canonical" or not.

This patch fixes an issue I encountered while trying to `git svn dcommit` a
rename action for a file containing a single quote character ("User's Manual"
to "UserMan.tex"). It does not happen for older subversion 1.6 servers nor
non-HTTP(S) protocols such as the native svn protocol, only on an Apache server
shipping SVN 1.7. Trying to `git svn dcommit` under the aforementioned
conditions yields the following error which aborts the commit process:

Committing to http://example.com/svn ...
perl: subversion/libsvn_subr/dirent_uri.c:1520: uri_skip_ancestor:
Assertion `svn_uri_is_canonical(child_uri, ((void *)0))' failed.
error: git-svn died of signal 6

An analysis of the subversion source for the cause:

- The assertion originates from uri_skip_ancestor which calls
svn_uri_is_canonical, which fails when the URL contains percent-encoded values
that do not necessarily have to be encoded (not "canonical" enough). This is
done by a table lookup in libsvn_subr/path.c. Putting some debugging prints
revealed that the character ' is indeed encoded to %27 which is not
considered canonical.
- url_skip_ancestor is called by svn_ra_neon__get_baseline_info with the root
repository URL and path as parameters;
- which is called by copy_resource (libsvn_ra_neon/commit.c) for a copy action
(or in my case, renaming which is actually copy + delete old);
- which is called by commit_add_dir;
- which is assigned as a structure method "add_file" in
svn_ra_neon__get_commit_editor.

In the whole path, the path argument is not modified.

Through some more uninteresting wrapper functions, the Perl bindings gives you
access to the add_file method which will pass the path argument without
modifications to svn.

git-svn calls the "R"(ename) subroutine in Git::SVN::Editor which contains:
326 my $fbat = $self->add_file($self->repo_path($m->{file_b}), $pbat,
327 $self->url_path($m->{file_a}), $self->{r});
"repo_path" basically returns the path as-is, unless the "svn.pathnameencoding"
configuration property is set. "url_path" tries to escape some special
characters, but does not take all special characters into account, thereby
causing the path to contain some escaped characters which do not have to be
escaped.

The list of characters not to be escaped are taken from the
subversion/libsvn_subr/path.c file to fully account for all characters. Tested
with a filename containing all characters in the range 0x20 to 0x78 (inclusive).

Signed-off-by: Peter Wu <lekensteyn@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

Merge git://bogomips.org/git-svnJunio C Hamano Fri, 18 Jan 2013 20:40:28 +0000 (12:40 -0800)

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

* git://bogomips.org/git-svn:
git-svn: teach find-rev to find near matches
git svn: do not overescape URLs (fallback case)
Git::SVN::Editor::T: pass $deletions to ->A and ->D

Update draft release notes to 1.8.2Junio C Hamano Fri, 18 Jan 2013 19:26:11 +0000 (11:26 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'ss/help-htmlpath-config-doc'Junio C Hamano Fri, 18 Jan 2013 19:20:20 +0000 (11:20 -0800)

Merge branch 'ss/help-htmlpath-config-doc'

Add missing doc.

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

Merge branch 'nd/fix-perf-parameters-in-tests'Junio C Hamano Fri, 18 Jan 2013 19:20:15 +0000 (11:20 -0800)

Merge branch 'nd/fix-perf-parameters-in-tests'

Allow GIT_PERF_* environment variables to be passed through the
test framework.

* nd/fix-perf-parameters-in-tests:
test-lib.sh: unfilter GIT_PERF_*

Merge branch 'nd/attr-debug-fix'Junio C Hamano Fri, 18 Jan 2013 19:20:11 +0000 (11:20 -0800)

Merge branch 'nd/attr-debug-fix'

Fix debugging support that was broken in earlier change.

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

Merge branch 'rs/pretty-use-prefixcmp'Junio C Hamano Fri, 18 Jan 2013 19:20:08 +0000 (11:20 -0800)

Merge branch 'rs/pretty-use-prefixcmp'

* rs/pretty-use-prefixcmp:
pretty: use prefixcmp instead of memcmp on NUL-terminated strings

Merge branch 'ds/completion-silence-in-tree-path-probe'Junio C Hamano Fri, 18 Jan 2013 19:20:03 +0000 (11:20 -0800)

Merge branch 'ds/completion-silence-in-tree-path-probe'

An internal ls-tree call made by completion code only to probe if
a path exists in the tree recorded in a commit object leaked error
messages when the path is not there. It is not an error at all and
should not be shown to the end user.

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

Merge branch 'jn/maint-trim-vim-contrib'Junio C Hamano Fri, 18 Jan 2013 19:19:39 +0000 (11:19 -0800)

Merge branch 'jn/maint-trim-vim-contrib'

Remove instructions for old vim support, which is better described
in the upstream vim documentation.

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

Merge branch 'pe/doc-email-env-is-trumped-by-config'Junio C Hamano Fri, 18 Jan 2013 19:19:33 +0000 (11:19 -0800)

Merge branch 'pe/doc-email-env-is-trumped-by-config'

In the precedence order, the environment variable $EMAIL comes
between the built-in default (i.e. taking value by asking the
system's gethostname() etc.) and the user.email configuration
variable; the documentation implied that it is stronger than the
configuration like $GIT_COMMITTER_EMAIL is, which is wrong.

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

Merge branch 'mk/complete-tcsh'Junio C Hamano Fri, 18 Jan 2013 19:19:28 +0000 (11:19 -0800)

Merge branch 'mk/complete-tcsh'

Update tcsh command line completion so that an unwanted space is
not added to a single directory name.

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

git-svn: teach find-rev to find near matchesJohn Keeping Thu, 17 Jan 2013 22:19:33 +0000 (22:19 +0000)

git-svn: teach find-rev to find near matches

When a single SVN repository is split into multiple Git repositories
many SVN revisions will exist in only one of the Git repositories
created. For some projects the only way to build a working artifact is
to check out corresponding versions of various repositories, with no
indication of what those are in the Git world - in the SVN world the
revision numbers are sufficient.

By adding "--before" to "git-svn find-rev" we can say "tell me what this
repository looked like when that other repository looked like this":

git svn find-rev --before \
r$(git --git-dir=/over/there.git svn find-rev HEAD)

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git svn: do not overescape URLs (fallback case)Jonathan Nieder Sun, 14 Oct 2012 11:45:21 +0000 (04:45 -0700)

git svn: do not overescape URLs (fallback case)

Subversion's canonical URLs are intended to make URL comparison easy
and therefore have strict rules about what characters are special
enough to urlencode and what characters should be left alone.

When in the fallback codepath because unable to use libsvn's own
canonicalization function for some reason, escape special characters
in URIs according to the svn_uri__char_validity[] table in
subversion/libsvn_subr/path.c (r935829). The libsvn versions that
trigger this code path are not likely to be strict enough to care, but
it's nicer to be consistent.

Noticed by using SVN 1.6.17 perl bindings, which do not provide
SVN::_Core::svn_uri_canonicalize (triggering the fallback code),
with libsvn 1.7.5, whose do_switch is fussy enough to care:

Committing to file:///home/jrn/src/git/t/trash%20directory.\
t9118-git-svn-funky-branch-names/svnrepo/pr%20ject/branches\
/more%20fun%20plugin%21 ...
svn: E235000: In file '[...]/subversion/libsvn_subr/dirent_uri.c' \
line 2291: assertion failed (svn_uri_is_canonical(url, pool))
error: git-svn died of signal 6
not ok - 3 test dcommit to funky branch

After this change, the '!' in 'more%20fun%20plugin!' is not urlencoded
and t9118 passes again.

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

Git::SVN::Editor::T: pass $deletions to ->A and ->DJonathan Nieder Wed, 10 Oct 2012 21:02:18 +0000 (14:02 -0700)

Git::SVN::Editor::T: pass $deletions to ->A and ->D

This shouldn't make a difference because the $deletions hash is
only used when adding a directory (see 379862ec, 2012-02-20) but
it's nice to be consistent to make reading smoother anyway. No
functional change intended.

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

attr: avoid calling find_basename() twice per pathDuy 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>

config.txt: Document help.htmlpath config parameterSebastian 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>

test-lib.sh: unfilter GIT_PERF_*Nguyễn Thái Ngọc Duy Tue, 15 Jan 2013 13:50:56 +0000 (20:50 +0700)

test-lib.sh: unfilter GIT_PERF_*

These variables are user parameters to control how to run the perf
tests. Allow users to do so.

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

attr: make it build with DEBUG_ATTR againNguyễ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>

remote-hg: fix handling of file perms when pushingMax Horn Tue, 15 Jan 2013 13:02:39 +0000 (14:02 +0100)

remote-hg: fix handling of file perms when pushing

Previously, when changing and committing an executable file, the file
would loose its executable bit on the hg side. Likewise, symlinks ended
up as "normal" files". This was not immediately apparent on the git side
unless one did a fresh clone.

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

remote-hg: store converted URLFelipe Contreras Wed, 9 Jan 2013 19:43:38 +0000 (20:43 +0100)

remote-hg: store converted URL

Mercurial might convert the URL to something more appropriate, like an
absolute path. Lets store that instead of the original URL, which won't
work from a different working directory if it's relative.

Suggested-by: Max Horn <max@quendi.de>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Max Horn <max@quendi.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: fix submit when no master branchPete Wyckoff Tue, 15 Jan 2013 00:47:08 +0000 (19:47 -0500)

git p4: fix submit when no master branch

It finds its upstream and applies the commit properly, but
the sync step will fail unless it is told which branch to
work on.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 test: keep P4CLIENT changes inside subshellsPete Wyckoff Tue, 15 Jan 2013 00:47:07 +0000 (19:47 -0500)

git p4 test: keep P4CLIENT changes inside subshells

Tests assume that this is set to something valid. Make sure
that the 'clone --use-client-spec' does not leak its changes
out into the rest of the tests.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: fix sync --branch when no master branchPete Wyckoff Tue, 15 Jan 2013 00:47:06 +0000 (19:47 -0500)

git p4: fix sync --branch when no master branch

It is legal to sync a branch with a different name than
refs/remotes/p4/master, and to do so even when master does
not exist.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: fail gracefully on sync with no master branchPete Wyckoff Tue, 15 Jan 2013 00:47:05 +0000 (19:47 -0500)

git p4: fail gracefully on sync with no master branch

If --branch was used to build a repository with no
refs/remotes/p4/master, future syncs will not know
which branch to sync. Notice this situation and
print a helpful error message.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: rearrange self.initialParent usePete Wyckoff Tue, 15 Jan 2013 00:47:04 +0000 (19:47 -0500)

git p4: rearrange self.initialParent use

This was set in a couple of places, both of which were very
far away from its use. Move it a bit closer to importChanges(),
and add some comments.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: allow short ref names to --branchPete Wyckoff Tue, 15 Jan 2013 00:47:03 +0000 (19:47 -0500)

git p4: allow short ref names to --branch

For a clone or sync, --branch says where the newly imported
branch should go, or which existing branch to sync up. It
takes an argument, which is currently either something that
starts with "refs/", or if not, "refs/heads/p4" is prepended.

Putting it in heads seems like a bad default; these should
go in remotes/p4/ in most situations. Make that the new default,
and be more liberal in the form of the branch name.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4 doc: fix branch detection examplePete Wyckoff Tue, 15 Jan 2013 00:47:02 +0000 (19:47 -0500)

git p4 doc: fix branch detection example

Make sure that the example on how to use git-p4.branchList
works if typed directly. In particular, it does not make sense
to set a config variable until the git repository has been
initialized.

Reported-by: Olivier Delalleau <shish@keba.be>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: clone --branch should checkout masterPete Wyckoff Tue, 15 Jan 2013 00:47:01 +0000 (19:47 -0500)

git p4: clone --branch should checkout master

When using the --branch argument to "git p4 clone", one
might specify a destination for p4 changes different from
the default refs/remotes/p4/master. Both cases should
create a master branch and checkout files.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: verify expected refs in clone --bare testPete Wyckoff Tue, 15 Jan 2013 00:47:00 +0000 (19:47 -0500)

git p4: verify expected refs in clone --bare test

Make sure that the standard branches are created as expected.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: create p4/HEAD on initial clonePete Wyckoff Tue, 15 Jan 2013 00:46:59 +0000 (19:46 -0500)

git p4: create p4/HEAD on initial clone

There is code to create a symbolic reference from p4/HEAD to
p4/master. This allows saying "git show p4" as a shortcut
to "git show p4/master", for example.

But this reference was only created on the second "git p4 sync"
(or first sync after a clone). Make it work on the initial
clone or sync.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: inline listExistingP4GitBranchesPete Wyckoff Tue, 15 Jan 2013 00:46:58 +0000 (19:46 -0500)

git p4: inline listExistingP4GitBranches

It is four lines of code used in only one place. Simplify by
including it where it is used.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: add comments to p4BranchesInGitPete Wyckoff Tue, 15 Jan 2013 00:46:57 +0000 (19:46 -0500)

git p4: add comments to p4BranchesInGit

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: rearrange and simplify hasOrigin handlingPete Wyckoff Tue, 15 Jan 2013 00:46:56 +0000 (19:46 -0500)

git p4: rearrange and simplify hasOrigin handling

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git p4: test sync/clone --branch behaviorPete Wyckoff Tue, 15 Jan 2013 00:46:55 +0000 (19:46 -0500)

git p4: test sync/clone --branch behavior

Add failing tests to document behavior when there are multiple p4
branches, as created using the --branch option. In particular:

Using clone --branch populates the specified branch correctly, but
dies with an error when trying to checkout master.

Calling sync without a master branch dies with an error looking for
master. When there are two or more branches, a sync does
nothing due to branch detection code, but that is expected.

Using sync --branch to try to update just a particular branch
updates no branch, but appears to succeed.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

attr: fix off-by-one directory component length calculationNguyễ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>

pretty: use prefixcmp instead of memcmp on NUL-terminat... René Scharfe Mon, 14 Jan 2013 16:34:56 +0000 (17:34 +0100)

pretty: use prefixcmp instead of memcmp on NUL-terminated strings

This conversion avoids the need for magic string length numbers in the
code. And unlike memcmp(), prefixcmp() is careful to not run over the
end of a string.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase --preserve-merges: keep all merge commits includ... 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>

git-clean: Display more accurate delete messagesZoltan Klinger Thu, 10 Jan 2013 22:53:46 +0000 (09:53 +1100)

git-clean: Display more accurate delete messages

(1) Only print out the names of the files and directories that got
actually deleted. Also do not mention that we are not removing
directories when the user did not ask us to do so with '-d'.
(2) Show ignore message for skipped untracked git repositories.

Consider the following repo layout:

test.git/
|-- tracked_dir/
| |-- some_tracked_file
| |-- some_untracked_file
|-- tracked_file
|-- untracked_file
|-- untracked_foo/
| |-- bar/
| | |-- bar.txt
| |-- emptydir/
| |-- frotz.git/
| |-- frotz.tx
|-- untracked_some.git/
|-- some.txt

Suppose the user issues 'git clean -fd' from the test.git directory.

When -d option is used and untracked directory 'foo' contains a
subdirectory 'frotz.git' that is managed by a different git repository
therefore it will not be removed.

$ git clean -fd
Removing tracked_dir/some_untracked_file
Removing untracked_file
Removing untracked_foo/
Removing untracked_some.git/

The message displayed to the user is slightly misleading. The foo/
directory has not been removed because of foo/frotz.git still exists.
On the other hand the subdirectories 'bar' and 'emptydir' have been
deleted but they're not mentioned anywhere. Also, untracked_some.git
has not been removed either.

This behaviour is the result of the way the deletion of untracked
directories are reported. In the current implementation they are
deleted recursively but only the name of the top most directory is
printed out. The calling function does not know about any
subdirectories that could not be removed during the recursion.

Improve the way the deleted directories are reported back to
the user:
(1) Create a recursive delete function 'remove_dirs' in builtin/clean.c
to run in both dry_run and delete modes with the delete logic as
follows:
(a) Check if the current directory to be deleted is an untracked
git repository. If it is and --force --force option is not set
do not touch this directory, print ignore message, set dir_gone
flag to false for the caller and return.
(b) Otherwise for each item in current directory:
(i) If current directory cannot be accessed, print warning,
set dir_gone flag to false and return.
(ii) If the item is a subdirectory recurse into it,
check for the returned value of the dir_gone flag.
If the subdirectory is gone, add the name of the deleted
directory to a list of successfully removed items 'dels'.
Else set the dir_gone flag as the current directory
cannot be removed because we have at least one subdirectory
hanging around.
(iii) If it is a file try to remove it. If success add the
file name to the 'dels' list, else print error and set
dir_gone flag to false.
(c) After we finished deleting all items in the current directory and
the dir_gone flag is still true, remove the directory itself.
If failed set the dir_gone flag to false.

(d) If the current directory cannot be deleted because the dir_gone flag
has been set to false, print out all the successfully deleted items
for this directory from the 'dels' list.
(e) We're done with the current directory, return.

(2) Modify the cmd_clean() function to:
(a) call the recursive delete function 'remove_dirs()' for each
topmost directory it wants to remove
(b) check for the returned value of dir_gone flag. If it's true
print the name of the directory as being removed.

Consider the output of the improved version:

$ git clean -fd
Removing tracked_dir/some_untracked_file
Removing untracked_file
Skipping repository untracked_foo/frotz.git
Removing untracked_foo/bar
Removing untracked_foo/emptydir
Skipping repository untracked_some.git/

Now it displays only the file and directory names that got actually
deleted and shows the name of the untracked git repositories it ignored.

Reported-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Zoltan Klinger <zoltan.klinger@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 1.8.1.1Junio C Hamano Mon, 14 Jan 2013 16:22:27 +0000 (08:22 -0800)

Sync with 1.8.1.1

Update draft release notes to 1.8.2Junio C Hamano Mon, 14 Jan 2013 16:21:35 +0000 (08:21 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'jc/blame-no-follow'Junio C Hamano Mon, 14 Jan 2013 16:15:51 +0000 (08:15 -0800)

Merge branch 'jc/blame-no-follow'

Teaches "--no-follow" option to "git blame" to disable its
whole-file rename detection.

* jc/blame-no-follow:
blame: pay attention to --no-follow
diff: accept --no-follow option

Merge branch 'fc/remote-testgit-feature-done'Junio C Hamano Mon, 14 Jan 2013 16:15:46 +0000 (08:15 -0800)

Merge branch 'fc/remote-testgit-feature-done'

In the longer term, tightening rules is a good thing to do, and
because nobody who has worked in the remote helper area seems to be
interested in reviewing this, I would assume they do not think
such a retroactive tightening will affect their remote helpers. So
let's advance this topic to see what happens.

* fc/remote-testgit-feature-done:
remote-testgit: properly check for errors

Merge branch 'nd/upload-pack-shallow-must-be-commit'Junio C Hamano Mon, 14 Jan 2013 16:15:44 +0000 (08:15 -0800)

Merge branch 'nd/upload-pack-shallow-must-be-commit'

A minor consistency check patch that does not have much relevance
to the real world.

* nd/upload-pack-shallow-must-be-commit:
upload-pack: only accept commits from "shallow" line

Merge branch 'ap/status-ignored-in-ignored-directory'Junio C Hamano Mon, 14 Jan 2013 16:15:40 +0000 (08:15 -0800)

Merge branch 'ap/status-ignored-in-ignored-directory'

Output from "git status --ignored" showed an unexpected interaction
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

Merge branch 'nz/send-email-headers-are-case-insensitive'Junio C Hamano Mon, 14 Jan 2013 16:15:36 +0000 (08:15 -0800)

Merge branch 'nz/send-email-headers-are-case-insensitive'

When user spells "cc:" in lowercase in the fake "header" in the
trailer part, 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

Git 1.8.1.1 v1.8.1.1Junio 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>

Merge branch 'jk/complete-commit-c' into maintJunio 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"

Merge branch 'jk/unify-exit-code-by-receiving-signal... 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

Merge branch 'jn/xml-depends-on-asciidoc-conf' into... 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

Merge branch 'jk/maint-fast-import-doc-reorder' into... 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

Merge branch 'jk/shortlog-no-wrap-doc' into maintJunio 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

Merge branch 'jk/maint-fast-import-doc-dedup-done'... 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

Merge branch 'jc/comment-cygwin-win32api-in-makefile... 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

Merge branch 'rs/leave-base-name-in-name-field-of-tar... 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

Merge branch 'jl/interrupt-clone-remove-separate-git... 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

Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credi... 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

Merge branch 'jc/apply-trailing-blank-removal' into... 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

Merge branch 'pf/editor-ignore-sigint' into maintJunio 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

Merge branch 'mk/maint-graph-infinity-loop' into maintJunio 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

Update draft release notes to 1.8.2Junio C Hamano Sat, 12 Jan 2013 02:51:09 +0000 (18:51 -0800)

Update draft release notes to 1.8.2

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

Merge branch 'jk/maint-fast-import-doc-reorder'Junio C Hamano Sat, 12 Jan 2013 02:35:07 +0000 (18:35 -0800)

Merge branch 'jk/maint-fast-import-doc-reorder'

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

Merge branch 'jk/shortlog-no-wrap-doc'Junio C Hamano Sat, 12 Jan 2013 02:35:01 +0000 (18:35 -0800)

Merge branch 'jk/shortlog-no-wrap-doc'

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

Merge branch 'rs/zip-with-uncompressed-size-in-the... Junio C Hamano Sat, 12 Jan 2013 02:34:55 +0000 (18:34 -0800)

Merge branch 'rs/zip-with-uncompressed-size-in-the-header'

Improve compatibility of our zip output to fill uncompressed size
in the header, which we can do without seeking back (even though it
should not be necessary).

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

Merge branch 'rs/zip-tests'Junio C Hamano Sat, 12 Jan 2013 02:34:43 +0000 (18:34 -0800)

Merge branch 'rs/zip-tests'

Update zip tests to skip some that cannot be handled on platform
unzip.

* 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

Merge branch 'jn/xml-depends-on-asciidoc-conf'Junio C Hamano Sat, 12 Jan 2013 02:34:38 +0000 (18:34 -0800)

Merge branch 'jn/xml-depends-on-asciidoc-conf'

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

Merge branch 'jk/unify-exit-code-by-receiving-signal'Junio C Hamano Sat, 12 Jan 2013 02:34:32 +0000 (18:34 -0800)

Merge branch 'jk/unify-exit-code-by-receiving-signal'

The internal logic had to deal with two representations of a death
of a child process by a signal.

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

Merge branch 'jc/merge-blobs'Junio C Hamano Sat, 12 Jan 2013 02:34:24 +0000 (18:34 -0800)

Merge branch 'jc/merge-blobs'

Update the disused merge-tree proof-of-concept code.

* jc/merge-blobs:
merge-tree: fix d/f conflicts
merge-tree: add comments to clarify what these functions are doing
merge-tree: lose unused "resolve_directories"
merge-tree: lose unused "flags" from merge_list
Which merge_file() function do you mean?

Merge branch 'jc/format-patch-reroll'Junio C Hamano Sat, 12 Jan 2013 02:34:10 +0000 (18:34 -0800)

Merge branch 'jc/format-patch-reroll'

Teach "format-patch" to prefix v4- to its output files for the
fourth iteration of a patch series, to make it easier for the
submitter to keep separate copies for iterations.

* jc/format-patch-reroll:
format-patch: give --reroll-count a short synonym -v
format-patch: document and test --reroll-count
format-patch: add --reroll-count=$N option
get_patch_filename(): split into two functions
get_patch_filename(): drop "just-numbers" hack
get_patch_filename(): simplify function signature
builtin/log.c: stop using global patch_suffix
builtin/log.c: drop redundant "numbered_files" parameter from make_cover_letter()
builtin/log.c: drop unused "numbered" parameter from make_cover_letter()

Merge branch 'maint'Junio C Hamano Sat, 12 Jan 2013 02:33:27 +0000 (18:33 -0800)

Merge branch 'maint'

Merge branch 'as/api-allocation-doc' into maintJunio 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

Merge branch 'jk/enable-test-lint-by-default' into... 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

Merge branch 'ap/merge-stop-at-prepare-commit-msg-failu... 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

Merge branch 'jc/submittingpatches' into maintJunio 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?

Merge branch 'os/gitweb-highlight-uncaptured' into... 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

Merge branch 'jn/less-reconfigure' into maintJunio 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

Merge branch 'kb/maint-bundle-doc' into maintJunio 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

Merge branch 'as/test-name-alias-uniquely' into maintJunio 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

Merge branch 'jn/warn-on-inaccessible-loosen' into... 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

Merge branch 'ja/directory-attrs' into maintJunio 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

Merge branch 'jc/fetch-ignore-symref' into maintJunio 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

Merge branch 'ss/svn-prompt' into maintJunio 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

git-completion.bash: silence "not a valid object" errorsDylan 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>