git
11 years agolog -L: store the path instead of a diff_filespec
Thomas Rast [Fri, 12 Apr 2013 16:05:11 +0000 (18:05 +0200)] 
log -L: store the path instead of a diff_filespec

line_log_data has held a diff_filespec* since the very early versions
of the code.  However, the only place in the code where we actually
need the full filespec is parse_range_arg(); in all other cases, we
are only interested in the path, so there is hardly a reason to store
a filespec.  Even worse, it causes a lot of redundant ->spec->path
pointer dereferencing.

And *even* worse, it caused the following bug.  If you merge a rename
with a modification to the old filename, like so:

  * Merge
  | \
  |  * Modify foo
  |  |
  *  | Rename foo->bar
  | /
  * Create foo

we internally -- in process_ranges_merge_commit() -- scan all parents.
We are mainly looking for one that doesn't have any modifications, so
that we can assign all the blame to it and simplify away the merge.
In doing so, we run the normal machinery on all parents in a loop.
For each parent, we prepare a "working set" line_log_data by making a
copy with line_log_data_copy(), which does *not* make a copy of the
spec.

Now suppose the rename is the first parent.  The diff machinery tells
us that the filepair is ('foo', 'bar').  We duly update the path we
are interested in:

  rg->spec->path = xstrdup(pair->one->path);

But that 'struct spec' is shared between the output line_log_data and
the original input line_log_data.  So we just wrecked the state of
process_ranges_merge_commit().  When we get around to the second
parent, the ranges tell us we are interested in a file 'foo' while the
commits touch 'bar'.

So most of this patch is just s/->spec->path/->path/ and associated
management changes.  This implicitly fixes the bug because we removed
the shared parts between input and output of line_log_data_copy(); it
is now safe to overwrite the path in the copy.

There's one only somewhat related change: the comment in
process_all_files() explains the reasoning behind using 'range' there.
That bit of half-correct code had me sidetracked for a while.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agolog -L: test merge of parallel modify/rename
Thomas Rast [Fri, 12 Apr 2013 16:05:10 +0000 (18:05 +0200)] 
log -L: test merge of parallel modify/rename

This tests a toy example of a history like

  * Merge
  | \
  |  * Modify foo
  |  |
  *  | Rename foo->bar
  | /
  * Create foo

Current log -L fails on this; we'll fix it in the next commit.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot4211: pass -M to 'git log -M -L...' test
Thomas Rast [Fri, 12 Apr 2013 16:05:09 +0000 (18:05 +0200)] 
t4211: pass -M to 'git log -M -L...' test

Embarrassingly, the -M test did not actually invoke -M, and thus not
really test the feature.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agolog -L: fix overlapping input ranges
Thomas Rast [Fri, 5 Apr 2013 14:34:48 +0000 (16:34 +0200)] 
log -L: fix overlapping input ranges

The existing code was too defensive, and would trigger the assert in
range_set_append() if the user gave overlapping ranges.

The intent was always to define overlapping ranges as just the union
of all of them, as evidenced by the call to sort_and_merge_range_set().
(Which was already used, unlike what the comment said.)

Fix by splitting out the meat of range_set_append() to a new _unsafe()
function that lacks the paranoia.  sort_and_merge_range_set will fix
up the ranges, so we don't need the checks there.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agolog -L: check range set invariants when we look it up
Thomas Rast [Fri, 5 Apr 2013 14:34:47 +0000 (16:34 +0200)] 
log -L: check range set invariants when we look it up

lookup_line_range() is a good place to check that the range sets
satisfy the invariants: they have been computed and set in earlier
iterations, and we now start working with them.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSpeed up log -L... -M
Thomas Rast [Thu, 28 Mar 2013 16:47:34 +0000 (17:47 +0100)] 
Speed up log -L... -M

So far log -L only used the implicit diff filtering by pathspec.  If
the user specifies -M, we cannot do that, and so we simply handed the
whole diff queue (which is approximately 'git show --raw') to
diffcore_std().

Unfortunately this is very slow.  We can optimize a lot if we throw
out files that we know cannot possibly be interesting, in the same
spirit that the pathspec filtering reduces the number of files.

However, in this case, we have to be more careful.  Because we want to
look out for renames, we need to keep all filepairs where something
was deleted.

This is a bit hacky and should really be replaced by equivalent
support in --follow, and just using that.  However, in the meantime it
speeds up 'log -M -L' by an order of magnitude.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agolog -L: :pattern:file syntax to find by funcname
Thomas Rast [Thu, 28 Mar 2013 16:47:33 +0000 (17:47 +0100)] 
log -L: :pattern:file syntax to find by funcname

This new syntax finds a funcname matching /pattern/, and then takes from there
up to (but not including) the next funcname.  So you can say

  git log -L:main:main.c

and it will dig up the main() function and show its line-log, provided
there are no other funcnames matching 'main'.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoImplement line-history search (git log -L)
Thomas Rast [Thu, 28 Mar 2013 16:47:32 +0000 (17:47 +0100)] 
Implement line-history search (git log -L)

This is a rewrite of much of Bo's work, mainly in an effort to split
it into smaller, easier to understand routines.

The algorithm is built around the struct range_set, which encodes a
series of line ranges as intervals [a,b).  This is used in two
contexts:

* A set of lines we are tracking (which will change as we dig through
  history).
* To encode diffs, as pairs of ranges.

The main routine is range_set_map_across_diff().  It processes the
diff between a commit C and some parent P.  It determines which diff
hunks are relevant to the ranges tracked in C, and computes the new
ranges for P.

The algorithm is then simply to process history in topological order
from newest to oldest, computing ranges and (partial) diffs.  At
branch points, we need to merge the ranges we are watching.  We will
find that many commits do not affect the chosen ranges, and mark them
TREESAME (in addition to those already filtered by pathspec limiting).
Another pass of history simplification then gets rid of such commits.

This is wired as an extra filtering pass in the log machinery.  This
currently only reduces code duplication, but should allow for other
simplifications and options to be used.

Finally, we hook a diff printer into the output chain.  Ideally we
would wire directly into the diff logic, to optionally use features
like word diff.  However, that will require some major reworking of
the diff chain, so we completely replace the output with our own diff
for now.

As this was a GSoC project, and has quite some history by now, many
people have helped.  In no particular order, thanks go to

  Jakub Narebski <jnareb@gmail.com>
  Jens Lehmann <Jens.Lehmann@web.de>
  Jonathan Nieder <jrnieder@gmail.com>
  Junio C Hamano <gitster@pobox.com>
  Ramsay Jones <ramsay@ramsay1.demon.co.uk>
  Will Palmer <wmpalmer@gmail.com>

Apologies to everyone I forgot.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoExport rewrite_parents() for 'log -L'
Bo Yang [Thu, 28 Mar 2013 16:47:31 +0000 (17:47 +0100)] 
Export rewrite_parents() for 'log -L'

The function rewrite_one is used to rewrite a single
parent of the current commit, and is used by rewrite_parents
to rewrite all the parents.

Decouple the dependence between them by making rewrite_one
a callback function that is passed to rewrite_parents. Then
export rewrite_parents for reuse by the line history browser.

We will use this function in line-log.c.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoRefactor parse_loc
Bo Yang [Thu, 28 Mar 2013 16:47:30 +0000 (17:47 +0100)] 
Refactor parse_loc

We want to use the same style of -L n,m argument for 'git log -L' as
for git-blame.  Refactor the argument parsing of the range arguments
from builtin/blame.c to the (new) file that will hold the 'git log -L'
logic.

To accommodate different data structures in blame and log -L, the file
contents are abstracted away; parse_range_arg takes a callback that it
uses to get the contents of a line of the (notional) file.

The new test is for a case that made me pause during debugging: the
'blame -L with invalid end' test was the only one that noticed an
outright failure to parse the end *at all*.  So make a more explicit
test for that.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint'
Junio C Hamano [Wed, 27 Feb 2013 18:10:28 +0000 (10:10 -0800)] 
Merge branch 'maint'

* maint:
  Update draft release notes to 1.8.1.5
  Documentation/submodule: Add --force to update synopsis

11 years agoUpdate draft release notes to 1.8.1.5
Junio C Hamano [Wed, 27 Feb 2013 18:09:59 +0000 (10:09 -0800)] 
Update draft release notes to 1.8.1.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'ef/non-ascii-parse-options-error-diag' into maint
Junio C Hamano [Wed, 27 Feb 2013 18:04:26 +0000 (10:04 -0800)] 
Merge branch 'ef/non-ascii-parse-options-error-diag' into maint

* ef/non-ascii-parse-options-error-diag:
  parse-options: report uncorrupted multi-byte options

11 years agoMerge branch 'wk/man-deny-current-branch-is-default-these-days' into maint
Junio C Hamano [Wed, 27 Feb 2013 18:01:21 +0000 (10:01 -0800)] 
Merge branch 'wk/man-deny-current-branch-is-default-these-days' into maint

* wk/man-deny-current-branch-is-default-these-days:
  user-manual: typofix (ofthe->of the)
  user-manual: Update for receive.denyCurrentBranch=refuse

11 years agoMerge branch 'jn/less-reconfigure' into maint
Junio C Hamano [Wed, 27 Feb 2013 17:59:19 +0000 (09:59 -0800)] 
Merge branch 'jn/less-reconfigure' into maint

* jn/less-reconfigure:
  Makefile: avoid infinite loop on configure.ac change

11 years agoMerge branch 'mh/maint-ceil-absolute'
Junio C Hamano [Wed, 27 Feb 2013 17:47:27 +0000 (09:47 -0800)] 
Merge branch 'mh/maint-ceil-absolute'

An earlier workaround designed to help people who list logical
directories that will not match what getcwd(3) returns in the
GIT_CEILING_DIRECTORIES had an adverse effect when it is slow to
stat and readlink a directory component of an element listed on it.

* mh/maint-ceil-absolute:
  Provide a mechanism to turn off symlink resolution in ceiling paths

11 years agoDocumentation/submodule: Add --force to update synopsis
Brad King [Wed, 27 Feb 2013 00:41:34 +0000 (19:41 -0500)] 
Documentation/submodule: Add --force to update synopsis

In commit 9db31bdf (submodule: Add --force option for git submodule
update, 2011-04-01) we added the option to the implementation's usage
synopsis but forgot to add it to the synopsis in the command
documentation.  Add the option to the synopsis in the same location it
is reported in usage and re-wrap the options to avoid long lines.

Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'for-junio' of git://github.com/kusma/git
Junio C Hamano [Tue, 26 Feb 2013 17:17:08 +0000 (09:17 -0800)] 
Merge branch 'for-junio' of git://github.com/kusma/git

* 'for-junio' of git://github.com/kusma/git:
  wincred: improve compatibility with windows versions
  wincred: accept CRLF on stdin to simplify console usage

11 years agoRevert "compat: add strtok_r()"
Erik Faye-Lund [Tue, 26 Feb 2013 16:58:38 +0000 (17:58 +0100)] 
Revert "compat: add strtok_r()"

This reverts commit 78457bc0ccc1af8b9eb776a0b17986ebd50442bc.

commit 28c5d9e ("vcs-svn: drop string_pool") previously removed
the only call-site for strtok_r. So let's get rid of the compat
implementation as well.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agowincred: improve compatibility with windows versions
Karsten Blees [Thu, 10 Jan 2013 10:52:12 +0000 (11:52 +0100)] 
wincred: improve compatibility with windows versions

On WinXP, the windows credential helper doesn't work at all (due to missing
Cred[Un]PackAuthenticationBuffer APIs). On Win7, the credential format used
by wincred is incompatible with native Windows tools (such as the control
panel applet or 'cmdkey.exe /generic'). These Windows tools only set the
TargetName, UserName and CredentialBlob members of the CREDENTIAL
structure (where CredentialBlob is the UTF-16-encoded password).

Remove the unnecessary packing / unpacking of the password, along with the
related API definitions, for compatibility with Windows XP.

Don't use CREDENTIAL_ATTRIBUTEs to identify credentials for compatibility
with Windows credential manager tools. Parse the protocol, username, host
and path fields from the credential's target name instead.

Credentials created with an old wincred version will have mangled or empty
passwords after this change.

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
11 years agowincred: accept CRLF on stdin to simplify console usage
Karsten Blees [Wed, 9 Jan 2013 11:49:26 +0000 (12:49 +0100)] 
wincred: accept CRLF on stdin to simplify console usage

The windows credential helper currently only accepts LF on stdin, but bash
and cmd.exe both send CRLF. This prevents interactive use in the console.

Change the stdin parser to optionally accept CRLF.

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
11 years agoGit 1.8.2-rc1 v1.8.2-rc1
Junio C Hamano [Mon, 25 Feb 2013 16:39:23 +0000 (08:39 -0800)] 
Git 1.8.2-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Mon, 25 Feb 2013 17:02:58 +0000 (09:02 -0800)] 
Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
  l10n: vi.po: Updated 5 new messages (2009t0f0u)
  l10n: Update Swedish translation (2009t0f0u)
  l10n: Update Swedish translation (2004t0f0u)
  l10n: zh_CN.po: translate 5 new messages
  l10n: git.pot: v1.8.2 round 3 (5 new)

11 years agoSync with 'maint'
Junio C Hamano [Mon, 25 Feb 2013 16:27:50 +0000 (08:27 -0800)] 
Sync with 'maint'

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'wk/user-manual'
Junio C Hamano [Mon, 25 Feb 2013 16:27:17 +0000 (08:27 -0800)] 
Merge branch 'wk/user-manual'

Further updates to the user manual.

* wk/user-manual:
  user-manual: Flesh out uncommitted changes and submodule updates
  user-manual: Use request-pull to generate "please pull" text
  user-manual: Reorganize the reroll sections, adding 'git rebase -i'

11 years agoMerge branch 'jn/less-reconfigure'
Junio C Hamano [Mon, 25 Feb 2013 16:27:13 +0000 (08:27 -0800)] 
Merge branch 'jn/less-reconfigure'

A change made on v1.8.1.x maintenance track had a nasty regression
to break the build when autoconf is used.

* jn/less-reconfigure:
  Makefile: avoid infinite loop on configure.ac change

11 years agoMerge branch 'as/check-ignore'
Junio C Hamano [Mon, 25 Feb 2013 16:27:09 +0000 (08:27 -0800)] 
Merge branch 'as/check-ignore'

"git check-ignore ." segfaulted, as a function it calls deep in its
callchain took a string in the <ptr, length> form but did not stop
when given an empty string.

* as/check-ignore:
  name-hash: allow hashing an empty string
  t0008: document test_expect_success_multi

11 years agoMerge branch 'ct/autoconf-htmldir'
Junio C Hamano [Mon, 25 Feb 2013 16:27:04 +0000 (08:27 -0800)] 
Merge branch 'ct/autoconf-htmldir'

An earlier change to config.mak.autogen broke a build driven by the
./configure script when --htmldir is not specified on the command
line of ./configure.

* ct/autoconf-htmldir:
  Bugfix: undefined htmldir in config.mak.autogen

11 years agoMerge branch 'wk/man-deny-current-branch-is-default-these-days'
Junio C Hamano [Mon, 25 Feb 2013 16:26:59 +0000 (08:26 -0800)] 
Merge branch 'wk/man-deny-current-branch-is-default-these-days'

* wk/man-deny-current-branch-is-default-these-days:
  user-manual: typofix (ofthe->of the)

11 years agoPrepare for 1.8.1.5
Junio C Hamano [Mon, 25 Feb 2013 16:15:40 +0000 (08:15 -0800)] 
Prepare for 1.8.1.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/mention-tracking-for-pull-default' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:04:19 +0000 (08:04 -0800)] 
Merge branch 'jc/mention-tracking-for-pull-default' into maint

* jc/mention-tracking-for-pull-default:
  doc: mention tracking for pull.default

11 years agoMerge branch 'mm/config-intro-in-git-doc' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:04:17 +0000 (08:04 -0800)] 
Merge branch 'mm/config-intro-in-git-doc' into maint

* mm/config-intro-in-git-doc:
  git.txt: update description of the configuration mechanism

11 years agoMerge branch 'da/p4merge-mktemp-fix' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:04:05 +0000 (08:04 -0800)] 
Merge branch 'da/p4merge-mktemp-fix' into maint

* da/p4merge-mktemp-fix:
  p4merge: fix printf usage

11 years agoMerge branch 'bw/get-tz-offset-perl' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:04:03 +0000 (08:04 -0800)] 
Merge branch 'bw/get-tz-offset-perl' into maint

* bw/get-tz-offset-perl:
  cvsimport: format commit timestamp ourselves without using strftime
  perl/Git.pm: fix get_tz_offset to properly handle DST boundary cases
  Move Git::SVN::get_tz to Git::get_tz_offset

11 years agoMerge branch 'al/mergetool-printf-fix' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:04:01 +0000 (08:04 -0800)] 
Merge branch 'al/mergetool-printf-fix' into maint

* al/mergetool-printf-fix:
  difftool--helper: fix printf usage
  git-mergetool: print filename when it contains %

11 years agoMerge branch 'jx/utf8-printf-width' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:59 +0000 (08:03 -0800)] 
Merge branch 'jx/utf8-printf-width' into maint

* jx/utf8-printf-width:
  Add utf8_fprintf helper that returns correct number of columns

11 years agoMerge branch 'mg/bisect-doc' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:57 +0000 (08:03 -0800)] 
Merge branch 'mg/bisect-doc' into maint

* mg/bisect-doc:
  git-bisect.txt: clarify that reset quits bisect

11 years agoMerge branch 'sp/smart-http-content-type-check' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:54 +0000 (08:03 -0800)] 
Merge branch 'sp/smart-http-content-type-check' into maint

* sp/smart-http-content-type-check:
  http_request: reset "type" strbuf before adding
  t5551: fix expected error output
  Verify Content-Type from smart HTTP servers

11 years agoMerge branch 'jc/combine-diff-many-parents' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:51 +0000 (08:03 -0800)] 
Merge branch 'jc/combine-diff-many-parents' into maint

* jc/combine-diff-many-parents:
  t4038: add tests for "diff --cc --raw <trees>"
  combine-diff: lift 32-way limit of combined diff

11 years agoMerge branch 'jk/apply-similaritly-parsing' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:44 +0000 (08:03 -0800)] 
Merge branch 'jk/apply-similaritly-parsing' into maint

* jk/apply-similaritly-parsing:
  builtin/apply: tighten (dis)similarity index parsing

11 years agoMerge branch 'jk/remote-helpers-doc' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:37 +0000 (08:03 -0800)] 
Merge branch 'jk/remote-helpers-doc' into maint

* jk/remote-helpers-doc:
  Rename {git- => git}remote-helpers.txt

11 years agoMerge branch 'ab/gitweb-use-same-scheme' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:34 +0000 (08:03 -0800)] 
Merge branch 'ab/gitweb-use-same-scheme' into maint

* ab/gitweb-use-same-scheme:
  gitweb: refer to picon/gravatar images over the same scheme

11 years agoMerge branch 'zk/clean-report-failure' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:32 +0000 (08:03 -0800)] 
Merge branch 'zk/clean-report-failure' into maint

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

11 years agoMerge branch 'nd/clone-no-separate-git-dir-with-bare' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:27 +0000 (08:03 -0800)] 
Merge branch 'nd/clone-no-separate-git-dir-with-bare' into maint

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

11 years agoMerge branch 'da/p4merge-mktemp' into maint
Junio C Hamano [Mon, 25 Feb 2013 16:03:20 +0000 (08:03 -0800)] 
Merge branch 'da/p4merge-mktemp' into maint

* da/p4merge-mktemp:
  mergetools/p4merge: Honor $TMPDIR for the /dev/null placeholder

11 years agoDocumentation: "advice" is uncountable
Greg Price [Mon, 25 Feb 2013 05:27:20 +0000 (00:27 -0500)] 
Documentation: "advice" is uncountable

"Advice" is a mass noun, not a count noun; it's not ordinarily
pluralized.

Signed-off-by: Greg Price <price@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoProvide a mechanism to turn off symlink resolution in ceiling paths
Michael Haggerty [Wed, 20 Feb 2013 09:09:24 +0000 (10:09 +0100)] 
Provide a mechanism to turn off symlink resolution in ceiling paths

Commit 1b77d83cab 'setup_git_directory_gently_1(): resolve symlinks
in ceiling paths' changed the setup code to resolve symlinks in the
entries in GIT_CEILING_DIRECTORIES.  Because those entries are
compared textually to the symlink-resolved current directory, an
entry in GIT_CEILING_DIRECTORIES that contained a symlink would have
no effect.  It was known that this could cause performance problems
if the symlink resolution *itself* touched slow filesystems, but it
was thought that such use cases would be unlikely.  The intention of
the earlier change was to deal with a case when the user has this:

GIT_CEILING_DIRECTORIES=/home/gitster

but in reality, /home/gitster is a symbolic link to somewhere else,
e.g. /net/machine/home4/gitster. A textual comparison between the
specified value /home/gitster and the location getcwd(3) returns
would not help us, but readlink("/home/gitster") would still be
fast.

After this change was released, Anders Kaseorg <andersk@mit.edu>
reported:

> [...] my computer has been acting so slow when I’m not connected to
> the network.  I put various network filesystem paths in
> $GIT_CEILING_DIRECTORIES, such as
> /afs/athena.mit.edu/user/a/n/andersk (to avoid hitting its parents
> /afs/athena.mit.edu, /afs/athena.mit.edu/user/a, and
> /afs/athena.mit.edu/user/a/n which all live in different AFS
> volumes).  Now when I’m not connected to the network, every
> invocation of Git, including the __git_ps1 in my shell prompt, waits
> for AFS to timeout.

To allow users to work around this problem, give them a mechanism to
turn off symlink resolution in GIT_CEILING_DIRECTORIES entries.  All
the entries that follow an empty entry will not be checked for symbolic
links and used literally in comparison.  E.g. with these:

GIT_CEILING_DIRECTORIES=:/foo/bar:/xyzzy or
GIT_CEILING_DIRECTORIES=/foo/bar::/xyzzy

we will not readlink("/xyzzy") because it comes after an empty entry.

With the former (but not with the latter), "/foo/bar" comes after an
empty entry, and we will not readlink it, either.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: avoid infinite loop on configure.ac change
Jeff King [Thu, 21 Feb 2013 06:26:14 +0000 (01:26 -0500)] 
Makefile: avoid infinite loop on configure.ac change

If you are using autoconf and change the configure.ac, the
Makefile will notice that config.status is older than
configure.ac, and will attempt to rebuild and re-run the
configure script to pick up your changes. The first step in
doing so is to run "make configure". Unfortunately, this
tries to include config.mak.autogen, which depends on
config.status, which depends on configure.ac; so we must
rebuild config.status. Which leads to us running "make
configure", and so on.

It's easy to demonstrate with:

  make configure
  ./configure
  touch configure.ac
  make

We can break this cycle by not re-invoking make to build
"configure", and instead just putting its rules inline into
our config.status rebuild procedure.  We can avoid a copy by
factoring the rules into a make variable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with v1.8.1.4
Junio C Hamano [Wed, 20 Feb 2013 05:57:27 +0000 (21:57 -0800)] 
Sync with v1.8.1.4

11 years agoGit 1.8.1.4 v1.8.1.4
Junio C Hamano [Tue, 19 Feb 2013 05:48:05 +0000 (05:48 +0000)] 
Git 1.8.1.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'ob/imap-send-ssl-verify' into maint
Junio C Hamano [Wed, 20 Feb 2013 05:54:15 +0000 (21:54 -0800)] 
Merge branch 'ob/imap-send-ssl-verify' into maint

* ob/imap-send-ssl-verify:
  imap-send: support subjectAltName as well
  imap-send: the subject of SSL certificate must match the host
  imap-send: move #ifdef around

11 years agoimap-send: support subjectAltName as well
Oswald Buddenhagen [Fri, 15 Feb 2013 20:59:53 +0000 (12:59 -0800)] 
imap-send: support subjectAltName as well

Check not only the common name of the certificate subject, but also
check the subject alternative DNS names as well, when verifying that
the certificate matches that of the host we are trying to talk to.

Signed-off-by: Oswald Buddenhagen <ossi@kde.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoimap-send: the subject of SSL certificate must match the host
Oswald Buddenhagen [Fri, 15 Feb 2013 20:50:35 +0000 (12:50 -0800)] 
imap-send: the subject of SSL certificate must match the host

We did not check a valid certificate's subject at all, and would
have happily talked with a wrong host after connecting to an
incorrect address and getting a valid certificate that does not
belong to the host we intended to talk to.

Signed-off-by: Oswald Buddenhagen <ossi@kde.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agol10n: vi.po: Updated 5 new messages (2009t0f0u)
Tran Ngoc Quan [Wed, 20 Feb 2013 00:16:44 +0000 (07:16 +0700)] 
l10n: vi.po: Updated 5 new messages (2009t0f0u)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
11 years agoBugfix: undefined htmldir in config.mak.autogen
Jiang Xin [Tue, 19 Feb 2013 11:23:29 +0000 (19:23 +0800)] 
Bugfix: undefined htmldir in config.mak.autogen

Html documents will be installed to root dir (/) no matter what prefix
is set, if run these commands before `make` and `make install-html`:

    $ make configure
    $ ./configure --prefix=<PREFIX>

After the installation, all the html documents will copy to rootdir (/),
and:

    $ git --html-path
    <PREFIX>

    $ git help -w something
    fatal: '<PREFIX>': not a documentation directory.

This is because the variable "htmldir" points to a undefined variable
"$(docdir)" in file "config.mak.autogen", which is generated by running
`./configure`. By default $(docdir) generated by configure is supposed
be set this way:

        datarootdir='${prefix}/share'
        htmldir='${docdir}'
        docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'

but since fc1c5415d69d (Honor configure's htmldir switch, 2013-02-02),
we only set and export htmldir without doing so for PACKAGE_TARNAME
(which is set to 'git' by the configure script).

Add the required two variables "PACKAGE_TARNAME" and "docdir" to file
"config.mak.in" will work this issue around.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoname-hash: allow hashing an empty string
Junio C Hamano [Tue, 19 Feb 2013 19:56:44 +0000 (11:56 -0800)] 
name-hash: allow hashing an empty string

Usually we do not pass an empty string to the function hash_name()
because we almost always ask for hash values for a path that is a
candidate to be added to the index. However, check-ignore (and most
likely check-attr, but I didn't check) apparently has a callchain
to ask the hash value for an empty path when it was given a "." from
the top-level directory to ask "Is the path . excluded by default?"

Make sure that hash_name() does not overrun the end of the given
pathname even when it is empty.

Remove a sweep-the-issue-under-the-rug conditional in check-ignore
that avoided to pass an empty string to the callchain while at it.
It is a valid question to ask for check-ignore if the top-level is
set to be ignored by default, even though the answer is most likely
no, if only because there is currently no way to specify such an
entry in the .gitignore file. But it is an unusual thing to ask and
it is not worth optimizing for it by special casing at the top level
of the call chain.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: Flesh out uncommitted changes and submodule updates
W. Trevor King [Tue, 19 Feb 2013 10:05:02 +0000 (05:05 -0500)] 
user-manual: Flesh out uncommitted changes and submodule updates

If you try and update a submodule with a dirty working directory, you
get an error message like:

  $ git submodule update
  error: Your local changes to the following files would be overwritten by checkout:
  ...
  Please, commit your changes or stash them before you can switch branches.
  Aborting
  ...

Mention this in the submodule notes.  The previous phrase was short
enough that I originally thought it might have been referring to the
reflog note (obviously, uncommitted changes will not show up in the
reflog either ;).

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: Use request-pull to generate "please pull" text
W. Trevor King [Tue, 19 Feb 2013 10:05:01 +0000 (05:05 -0500)] 
user-manual: Use request-pull to generate "please pull" text

Less work and more error checking (e.g. does a merge base exist?).
Add an explicit push before request-pull to satisfy request-pull,
which checks to make sure the references are publically available.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: Reorganize the reroll sections, adding 'git rebase -i'
W. Trevor King [Tue, 19 Feb 2013 10:05:00 +0000 (05:05 -0500)] 
user-manual: Reorganize the reroll sections, adding 'git rebase -i'

I think this interface is often more convenient than extended cherry
picking or using 'git format-patch'.  In fact, I removed the
cherry-pick section entirely.  The entry-level suggestions for
rerolling are now:

    1. git commit --amend
    2. git format-patch origin
       git reset --hard origin
       ...edit and reorder patches...
       git am *.patch
    3. git rebase -i origin

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot0008: document test_expect_success_multi
Adam Spiers [Tue, 19 Feb 2013 14:06:22 +0000 (14:06 +0000)] 
t0008: document test_expect_success_multi

test_expect_success_multi() helper function warrants some explanation,
since at first sight it may seem like generic test framework plumbing,
but is in fact specific to testing check-ignore, and allows more
thorough testing of the various output formats without significantly
increase the size of t0008.

Signed-off-by: Adam Spiers <git@adamspiers.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agol10n: Update Swedish translation (2009t0f0u)
Peter Krefting [Tue, 19 Feb 2013 09:26:36 +0000 (10:26 +0100)] 
l10n: Update Swedish translation (2009t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
11 years agol10n: Update Swedish translation (2004t0f0u)
Peter Krefting [Mon, 18 Feb 2013 22:01:07 +0000 (23:01 +0100)] 
l10n: Update Swedish translation (2004t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
11 years agol10n: zh_CN.po: translate 5 new messages
Jiang Xin [Tue, 19 Feb 2013 06:52:24 +0000 (14:52 +0800)] 
l10n: zh_CN.po: translate 5 new messages

Translate 5 new messages came from git.pot update in 235537a
(l10n: git.pot: v1.8.2 round 3 (5 new)).

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
11 years agol10n: git.pot: v1.8.2 round 3 (5 new)
Jiang Xin [Tue, 19 Feb 2013 05:36:11 +0000 (13:36 +0800)] 
l10n: git.pot: v1.8.2 round 3 (5 new)

Generate po/git.pot from v1.8.2-rc0-16-g20a59 for git v1.8.2
l10n round 3.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
11 years agoimap-send: move #ifdef around
Junio C Hamano [Fri, 15 Feb 2013 20:32:19 +0000 (12:32 -0800)] 
imap-send: move #ifdef around

Instead of adding an early return to the inside of the
ssl_socket_connect() function for NO_OPENSSL compilation, split it
into a separate stub function.

No functional change, but the next change to extend ssl_socket_connect()
will become easier to read this way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/mention-tracking-for-pull-default'
Junio C Hamano [Tue, 19 Feb 2013 00:05:02 +0000 (16:05 -0800)] 
Merge branch 'jc/mention-tracking-for-pull-default'

We stopped mentioning `tracking` is a deprecated but supported
synonym for `upstream` in pull.default even though we have no
intention of removing the support for it.

* jc/mention-tracking-for-pull-default:
  doc: mention tracking for pull.default

11 years agoMerge branch 'mm/config-intro-in-git-doc'
Junio C Hamano [Tue, 19 Feb 2013 00:04:58 +0000 (16:04 -0800)] 
Merge branch 'mm/config-intro-in-git-doc'

* mm/config-intro-in-git-doc:
  git.txt: update description of the configuration mechanism

11 years agoRelNotes 1.8.2: push-simple will not be in effect in this release
Junio C Hamano [Mon, 18 Feb 2013 23:59:33 +0000 (15:59 -0800)] 
RelNotes 1.8.2: push-simple will not be in effect in this release

Also migration path for the default behaviour of "git add -u/-A" run
in a subdirectory is worth mentioning.

Both pointed out by Matthieu Moy.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoshell-prompt: clean up nested if-then
Martin Erik Werner [Mon, 18 Feb 2013 22:59:03 +0000 (23:59 +0100)] 
shell-prompt: clean up nested if-then

Minor clean up of if-then nesting in checks for environment variables
and config options. No functional changes.

Signed-off-by: Martin Erik Werner <martinerikwerner@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: typofix (ofthe->of the)
Junio C Hamano [Mon, 18 Feb 2013 20:43:00 +0000 (12:43 -0800)] 
user-manual: typofix (ofthe->of the)

Noticed by Drew Northup

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint'
Junio C Hamano [Mon, 18 Feb 2013 08:50:33 +0000 (00:50 -0800)] 
Merge branch 'maint'

* maint:
  user-manual: use -o latest.tar.gz to create a gzipped tarball
  user-manual: use 'git config --global user.*' for setup
  user-manual: mention 'git remote add' for remote branch config
  user-manual: give 'git push -f' as an alternative to +master
  user-manual: use 'remote add' to setup push URLs

11 years agouser-manual: use -o latest.tar.gz to create a gzipped tarball
W. Trevor King [Mon, 18 Feb 2013 00:16:01 +0000 (19:16 -0500)] 
user-manual: use -o latest.tar.gz to create a gzipped tarball

This functionality was introduced by 0e804e09 (archive: provide
builtin .tar.gz filter, 2011-07-21) for v1.7.7.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: use 'git config --global user.*' for setup
W. Trevor King [Mon, 18 Feb 2013 00:15:58 +0000 (19:15 -0500)] 
user-manual: use 'git config --global user.*' for setup

A simple command line call is easier than spawning an editor,
especially for folks new to ideas like the "command line" and "text
editors".  This is also the approach suggested by 'git commit' if you
try and commit without having configured user.name or user.email.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: mention 'git remote add' for remote branch config
W. Trevor King [Mon, 18 Feb 2013 00:15:56 +0000 (19:15 -0500)] 
user-manual: mention 'git remote add' for remote branch config

I hardly ever setup remote.<name>.url using 'git config'.  While it
may be instructive to do so, we should also point out 'git remote
add'.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: give 'git push -f' as an alternative to +master
W. Trevor King [Mon, 18 Feb 2013 00:15:55 +0000 (19:15 -0500)] 
user-manual: give 'git push -f' as an alternative to +master

This mirrors existing language in the description of 'git fetch'.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: use 'remote add' to setup push URLs
W. Trevor King [Mon, 18 Feb 2013 00:15:53 +0000 (19:15 -0500)] 
user-manual: use 'remote add' to setup push URLs

There is no need to use here documents to setup this configuration.
It is easier, less confusing, and more robust to use `git remote add`
directly.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Mon, 18 Feb 2013 08:01:12 +0000 (00:01 -0800)] 
Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
  l10n: zh_CN.po: translate 35 new messages
  l10n: vi.po: update new strings (2004t0u0f)
  l10n: Update git.pot (35 new, 14 removed messages)

11 years agol10n: zh_CN.po: translate 35 new messages
Jiang Xin [Thu, 14 Feb 2013 09:47:45 +0000 (17:47 +0800)] 
l10n: zh_CN.po: translate 35 new messages

Translate 35 new messages came from git.pot update in 9caaf23
(l10n: Update git.pot (35 new, 14 removed messages)).

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
11 years agoGit 1.8.2-rc0 v1.8.2-rc0
Junio C Hamano [Sun, 17 Feb 2013 23:35:33 +0000 (15:35 -0800)] 
Git 1.8.2-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/hidden-refs'
Junio C Hamano [Sun, 17 Feb 2013 23:25:57 +0000 (15:25 -0800)] 
Merge branch 'jc/hidden-refs'

Allow the server side to redact the refs/ namespace it shows to the
client.

Will merge to 'master'.

* jc/hidden-refs:
  upload/receive-pack: allow hiding ref hierarchies
  upload-pack: simplify request validation
  upload-pack: share more code

11 years agoMerge branch 'mp/diff-algo-config'
Junio C Hamano [Sun, 17 Feb 2013 23:25:51 +0000 (15:25 -0800)] 
Merge branch 'mp/diff-algo-config'

Add diff.algorithm configuration so that the user does not type
"diff --histogram".

* mp/diff-algo-config:
  diff: Introduce --diff-algorithm command line option
  config: Introduce diff.algorithm variable
  git-completion.bash: Autocomplete --minimal and --histogram for git-diff

11 years agoMerge branch 'mw/bash-prompt-show-untracked-config'
Junio C Hamano [Sun, 17 Feb 2013 23:25:46 +0000 (15:25 -0800)] 
Merge branch 'mw/bash-prompt-show-untracked-config'

Allows skipping the untracked check GIT_PS1_SHOWUNTRACKEDFILES
asks for the git-prompt (in contrib/) per repository.

* mw/bash-prompt-show-untracked-config:
  t9903: add extra tests for bash.showDirtyState
  t9903: add tests for bash.showUntrackedFiles
  shell prompt: add bash.showUntrackedFiles option

11 years agoMerge branch 'jk/rebase-i-comment-char'
Junio C Hamano [Sun, 17 Feb 2013 23:25:19 +0000 (15:25 -0800)] 
Merge branch 'jk/rebase-i-comment-char'

Finishing touches to the earlier core.commentchar topic to cover
"rebase -i" as well.

* jk/rebase-i-comment-char:
  rebase -i: respect core.commentchar

11 years agoMerge branch 'jk/read-commit-buffer-data-after-free'
Junio C Hamano [Sun, 17 Feb 2013 23:23:20 +0000 (15:23 -0800)] 
Merge branch 'jk/read-commit-buffer-data-after-free'

"git log --grep=<pattern>" used to look for the pattern in literal
bytes of the commit log message and ignored the log-output encoding.

* jk/read-commit-buffer-data-after-free:
  log: re-encode commit messages before grepping

11 years agol10n: vi.po: update new strings (2004t0u0f)
Tran Ngoc Quan [Sun, 17 Feb 2013 01:42:47 +0000 (08:42 +0700)] 
l10n: vi.po: update new strings (2004t0u0f)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
11 years agoUpdate draft release notes to 1.8.2
Junio C Hamano [Fri, 15 Feb 2013 20:24:54 +0000 (12:24 -0800)] 
Update draft release notes to 1.8.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit.txt: update description of the configuration mechanism
Matthieu Moy [Thu, 14 Feb 2013 15:36:54 +0000 (16:36 +0100)] 
git.txt: update description of the configuration mechanism

The old Git version where it appeared is now useful only to historians,
not to normal users. Also, the text was mentioning only the per-repo
config file, but this is a good place to teach that customization can
also be made per-user.

While at it, remove a now-defunct e-mail from an example.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'wk/man-deny-current-branch-is-default-these-days'
Junio C Hamano [Fri, 15 Feb 2013 00:06:29 +0000 (16:06 -0800)] 
Merge branch 'wk/man-deny-current-branch-is-default-these-days'

* wk/man-deny-current-branch-is-default-these-days:
  user-manual: Update for receive.denyCurrentBranch=refuse

11 years agoMerge branch 'mk/make-rm-depdirs-could-be-empty'
Junio C Hamano [Fri, 15 Feb 2013 00:06:24 +0000 (16:06 -0800)] 
Merge branch 'mk/make-rm-depdirs-could-be-empty'

"make COMPUTE_HEADER_DEPENDENCIES=no clean" would try to run "rm
-rf $(dep_dirs)" with an empty dep_dir, but some implementations of
"rm -rf" barf on an empty argument list.

* mk/make-rm-depdirs-could-be-empty:
  Makefile: don't run "rm" without any files

11 years agoMerge branch 'mm/config-local-completion'
Junio C Hamano [Fri, 15 Feb 2013 00:06:19 +0000 (16:06 -0800)] 
Merge branch 'mm/config-local-completion'

* mm/config-local-completion:
  completion: support 'git config --local'

11 years agoMerge branch 'ef/non-ascii-parse-options-error-diag'
Junio C Hamano [Fri, 15 Feb 2013 00:06:14 +0000 (16:06 -0800)] 
Merge branch 'ef/non-ascii-parse-options-error-diag'

* ef/non-ascii-parse-options-error-diag:
  parse-options: report uncorrupted multi-byte options

11 years agoMerge branch 'mk/old-expat'
Junio C Hamano [Fri, 15 Feb 2013 00:06:08 +0000 (16:06 -0800)] 
Merge branch 'mk/old-expat'

* mk/old-expat:
  Allow building with xmlparse.h

11 years agoMerge branch 'da/p4merge-mktemp-fix'
Junio C Hamano [Fri, 15 Feb 2013 00:05:56 +0000 (16:05 -0800)] 
Merge branch 'da/p4merge-mktemp-fix'

* da/p4merge-mktemp-fix:
  p4merge: fix printf usage

11 years agoDocumentation/git-add: kill remaining <filepattern>
Junio C Hamano [Thu, 14 Feb 2013 23:51:43 +0000 (15:51 -0800)] 
Documentation/git-add: kill remaining <filepattern>

The merge at 5bf72ed2 missed another instance of <filepattern> that
we were converting to <pathspec>.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouser-manual: Update for receive.denyCurrentBranch=refuse
W. Trevor King [Fri, 8 Feb 2013 17:04:20 +0000 (12:04 -0500)] 
user-manual: Update for receive.denyCurrentBranch=refuse

acd2a45 (Refuse updating the current branch in a non-bare repository
via push, 2009-02-11) changed the default to refuse such a push, but
it forgot to update the docs.

7d182f5 (Documentation: receive.denyCurrentBranch defaults to
'refuse', 2010-03-17) updated Documentation/config.txt, but forgot to
update the user manual.

Signed-off-by: W. Trevor King <wking@tremily.us>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUpdate draft release notes to 1.8.2
Junio C Hamano [Thu, 14 Feb 2013 18:43:07 +0000 (10:43 -0800)] 
Update draft release notes to 1.8.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jk/diff-graph-cleanup'
Junio C Hamano [Thu, 14 Feb 2013 18:29:59 +0000 (10:29 -0800)] 
Merge branch 'jk/diff-graph-cleanup'

Refactors a lot of repetitive code sequence from the graph drawing
code and adds it to the combined diff output.

* jk/diff-graph-cleanup:
  combine-diff.c: teach combined diffs about line prefix
  diff.c: use diff_line_prefix() where applicable
  diff: add diff_line_prefix function
  diff.c: make constant string arguments const
  diff: write prefix to the correct file
  graph: output padding for merge subsequent parents

11 years agoMerge branch 'nd/status-show-in-progress'
Junio C Hamano [Thu, 14 Feb 2013 18:29:54 +0000 (10:29 -0800)] 
Merge branch 'nd/status-show-in-progress'

* nd/status-show-in-progress:
  status: show the branch name if possible in in-progress info

11 years agoMerge branch 'mm/remote-mediawiki-build'
Junio C Hamano [Thu, 14 Feb 2013 18:29:49 +0000 (10:29 -0800)] 
Merge branch 'mm/remote-mediawiki-build'

* mm/remote-mediawiki-build:
  git-remote-mediawiki: use toplevel's Makefile
  Makefile: make script-related rules usable from subdirectories

11 years agoMerge branch 'bw/get-tz-offset-perl'
Junio C Hamano [Thu, 14 Feb 2013 18:29:44 +0000 (10:29 -0800)] 
Merge branch 'bw/get-tz-offset-perl'

* bw/get-tz-offset-perl:
  cvsimport: format commit timestamp ourselves without using strftime
  perl/Git.pm: fix get_tz_offset to properly handle DST boundary cases
  Move Git::SVN::get_tz to Git::get_tz_offset