gitweb.git
fetch: Speed up fetch of large numbers of refsJulian Phillips Sun, 25 Oct 2009 21:28:12 +0000 (21:28 +0000)

fetch: Speed up fetch of large numbers of refs

When there are large numbers of refs, calling read_ref for each ref is
inefficent (and infact downright slow) - so instead use for_each_ref
to build up a string list of all the refs that we currently have,
which significantly improves the volume.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: Make ref_remove_duplicates faster for large... Julian Phillips Sun, 25 Oct 2009 21:28:11 +0000 (21:28 +0000)

remote: Make ref_remove_duplicates faster for large numbers of refs

The ref_remove_duplicates function was very slow at dealing with very
large numbers of refs. This is because it was using a linear search
through all remaining refs to find any duplicates of the current ref.

Rewriting it to use a string list to keep track of which refs have
already been seen and removing duplicates when they are found is much
more efficient.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: Speed up fetch by rewriting find_non_local_tagsJulian Phillips Thu, 17 Sep 2009 07:33:19 +0000 (08:33 +0100)

fetch: Speed up fetch by rewriting find_non_local_tags

When trying to get a list of remote tags to see if we need to fetch
any we were doing a linear search for the matching tag ref for the
tag^{} commit entries. This proves to be incredibly slow for large
numbers of tags. Rewrite the function so that we build up a
string_list of refs to fetch and then process that instead.

As an extreme example, for a repository with 50000 tags (and just a
single commit on a single branch), a fetch that does nothing goes from
~1m50s to ~4.1s.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge 1.6.4.4 inJunio C Hamano Wed, 16 Sep 2009 22:04:21 +0000 (15:04 -0700)

Merge 1.6.4.4 in

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

GIT 1.6.4.4 v1.6.4.4Junio C Hamano Wed, 16 Sep 2009 21:53:26 +0000 (14:53 -0700)

GIT 1.6.4.4

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

Merge branch 'jc/maint-unpack-objects-strict' into... Junio C Hamano Wed, 16 Sep 2009 21:45:18 +0000 (14:45 -0700)

Merge branch 'jc/maint-unpack-objects-strict' into maint

* jc/maint-unpack-objects-strict:
Fix "unpack-objects --strict"

Conflicts:
builtin-unpack-objects.c

Merge branch 'tf/diff-whitespace-incomplete-line' into... Junio C Hamano Wed, 16 Sep 2009 21:27:08 +0000 (14:27 -0700)

Merge branch 'tf/diff-whitespace-incomplete-line' into maint

* tf/diff-whitespace-incomplete-line:
xutils: Fix xdl_recmatch() on incomplete lines
xutils: Fix hashing an incomplete line with whitespaces at the end

Merge branch 'jk/maint-1.6.3-checkout-unborn' into... Junio C Hamano Wed, 16 Sep 2009 21:26:56 +0000 (14:26 -0700)

Merge branch 'jk/maint-1.6.3-checkout-unborn' into maint

* jk/maint-1.6.3-checkout-unborn:
checkout: do not imply "-f" on unborn branches

Merge branch 'jc/maint-checkout-index-to-prefix' into... Junio C Hamano Wed, 16 Sep 2009 21:26:40 +0000 (14:26 -0700)

Merge branch 'jc/maint-checkout-index-to-prefix' into maint

* jc/maint-checkout-index-to-prefix:
check_path(): allow symlinked directories to checkout-index --prefix

Merge branch 'maint'Junio C Hamano Mon, 14 Sep 2009 21:48:27 +0000 (14:48 -0700)

Merge branch 'maint'

* maint:
http.c: avoid freeing an uninitialized pointer

Merge branch 'rc/maint-http-no-head-pack-check' into... Junio C Hamano Mon, 14 Sep 2009 21:48:20 +0000 (14:48 -0700)

Merge branch 'rc/maint-http-no-head-pack-check' into maint

* rc/maint-http-no-head-pack-check:
http.c: avoid freeing an uninitialized pointer

http.c: avoid freeing an uninitialized pointerJunio C Hamano Mon, 14 Sep 2009 21:48:15 +0000 (14:48 -0700)

http.c: avoid freeing an uninitialized pointer

An earlier 59b8d38 (http.c: remove verification of remote packs) left
the variable "url" uninitialized; "goto cleanup" codepath can free it
which is not very nice.

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

web--browse: fix Mac OS X GUI detection for 10.6Heiko Voigt Mon, 14 Sep 2009 08:49:01 +0000 (10:49 +0200)

web--browse: fix Mac OS X GUI detection for 10.6

Since OS X 10.6 the variable $SECURITYSESSIONID does not exist anymore,
so lets look for the $TERM_PROGRAM variable as backup.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remove logical typo in documentation of sample update... Heiko Voigt Mon, 14 Sep 2009 08:47:06 +0000 (10:47 +0200)

remove logical typo in documentation of sample update hook

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nicolas Pitre has a new email addressNicolas Pitre Mon, 14 Sep 2009 06:41:16 +0000 (02:41 -0400)

Nicolas Pitre has a new email address

Due to problems at cam.org, my nico@cam.org email address is no longer
valid. From now on, nico@fluxnic.net should be used instead.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-archive: infer output format from filename when... Dmitry Potapov Sun, 13 Sep 2009 20:17:01 +0000 (00:17 +0400)

git-archive: infer output format from filename when unspecified

A command line

$ git archive -o my-v2.0.zip v2.0

almost certainly wants the output in zip format, even though it does not
specify any --format option.

When --format is not given, but output filename is, try to infer what
format is requested from the filename extension. Currently this code only
knows about '.zip'. When the format is unspecified and the filename does
not tell us, the output will be in 'tar' format as before.

Of course, an explicit --format will not trigger this guesswork.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: Replace config --list with --get-regexpTodd Zullinger Fri, 11 Sep 2009 23:23:45 +0000 (19:23 -0400)

completion: Replace config --list with --get-regexp

James Bardin noted that the completion spewed warnings when no git config
file is present. This is likely a bug to be fixed in git config, but it's
also good to simplify the completion code by using the --get-regexp option
as Jeff King pointed out.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Trivially-acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-archive: add '-o' as a alias for '--output'Dmitry Potapov Sun, 13 Sep 2009 12:05:52 +0000 (16:05 +0400)

git-archive: add '-o' as a alias for '--output'

The '-o' option is commonly used in many tools to specify the output file.
Typing '--output' every time is a bit too long to be a practical alternative
to redirecting output. But specifying the output name has the advantage of
making possible to guess the desired output format by filename extension.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test local clone by copyingClemens Buchacher Sun, 13 Sep 2009 10:49:45 +0000 (12:49 +0200)

test local clone by copying

Test the effect of an earlier change by f7835a2 (preserve mtime of local
clone, 2009-09-12) to keep stale loose object files stale in the new
repository when a local clone is made by copying files in .git/
directory.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-clone doc: typofixJohannes Gilger Sun, 13 Sep 2009 13:35:05 +0000 (15:35 +0200)

git-clone doc: typofix

Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-push: Accept -n as a synonym for --dry-run.Nelson Elhage Sun, 13 Sep 2009 16:56:45 +0000 (12:56 -0400)

git-push: Accept -n as a synonym for --dry-run.

git-push is not currently using -n for anything else, and it seems
unlikely we will want to use it to mean anything else in the future,
so add it as an alias for convenience.

Signed-off-by: Nelson Elhage <nelhage@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-commit doc: remove duplicated --dry-run descriptionJunio C Hamano Sun, 13 Sep 2009 18:23:34 +0000 (11:23 -0700)

git-commit doc: remove duplicated --dry-run description

60c2993 (Documentation/git-commit.txt: describe --dry-run, 2009-08-15)
wanted to update the documentation to say that "git status" is not the
same as "git commit --dry-run" anymore, but it screwed up and also added
the description of --dry-run that was already present.

Noticed by Johannes Gilger.

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

GIT 1.6.5-rc1 v1.6.5-rc1Junio C Hamano Sun, 13 Sep 2009 08:50:22 +0000 (01:50 -0700)

GIT 1.6.5-rc1

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

Improve --patch option documentation in git-addJari Aalto Sun, 13 Sep 2009 06:43:10 +0000 (09:43 +0300)

Improve --patch option documentation in git-add

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'pk/fast-import-tars'Junio C Hamano Sun, 13 Sep 2009 08:33:29 +0000 (01:33 -0700)

Merge branch 'pk/fast-import-tars'

* pk/fast-import-tars:
import-tars: Allow per-tar author and commit message.

Merge branch 'pk/fast-import-dirs'Junio C Hamano Sun, 13 Sep 2009 08:33:26 +0000 (01:33 -0700)

Merge branch 'pk/fast-import-dirs'

* pk/fast-import-dirs:
Add script for importing bits-and-pieces to Git.

Merge branch 'jt/pushinsteadof'Junio C Hamano Sun, 13 Sep 2009 08:33:20 +0000 (01:33 -0700)

Merge branch 'jt/pushinsteadof'

* jt/pushinsteadof:
Add url.<base>.pushInsteadOf: URL rewriting for push only
Wrap rewrite globals in a struct in preparation for adding another set

Merge branch 'jk/unwanted-advices'Junio C Hamano Sun, 13 Sep 2009 08:33:18 +0000 (01:33 -0700)

Merge branch 'jk/unwanted-advices'

* jk/unwanted-advices:
status: make "how to stage" messages optional
push: make non-fast-forward help message configurable

Merge branch 'jc/merge-saner-messages'Junio C Hamano Sun, 13 Sep 2009 08:33:15 +0000 (01:33 -0700)

Merge branch 'jc/merge-saner-messages'

* jc/merge-saner-messages:
merge-recursive: give less scary messages when merge did not start

quiltimport documentation: --dry-run and -n are synonymsJunio C Hamano Sun, 13 Sep 2009 02:40:27 +0000 (19:40 -0700)

quiltimport documentation: --dry-run and -n are synonyms

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

preserve mtime of local cloneClemens Buchacher Sat, 12 Sep 2009 09:03:48 +0000 (11:03 +0200)

preserve mtime of local clone

A local clone without hardlinks copies all objects, including dangling
ones, to the new repository. Since the mtimes are renewed, those
dangling objects cannot be pruned by "git gc --prune", even if they
would have been old enough for pruning in the original repository.

Instead, preserve mtime during copy. "git gc --prune" will then work
in the clone just like it did in the original.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

don't dereference NULL upon fdopen failureJim Meyering Sat, 12 Sep 2009 08:43:27 +0000 (10:43 +0200)

don't dereference NULL upon fdopen failure

There were several unchecked use of fdopen(); replace them with xfdopen()
that checks and dies.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use write_str_in_full helper to avoid literal string... Jim Meyering Sat, 12 Sep 2009 08:54:32 +0000 (10:54 +0200)

use write_str_in_full helper to avoid literal string lengths

This is the same fix to use write_str_in_full() helper to write a constant
string out without counting the length of it ourselves.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'db/vcs-helper'Junio C Hamano Sun, 13 Sep 2009 08:31:55 +0000 (01:31 -0700)

Merge branch 'db/vcs-helper'

* db/vcs-helper:
Makefile: remove remnant of separate http/https/ftp helpers
Use a clearer style to issue commands to remote helpers
Make the "traditionally-supported" URLs a special case
Makefile: install hardlinks for git-remote-<scheme> supported by libcurl if possible
Makefile: do not link three copies of git-remote-* programs
Makefile: git-http-fetch does not need expat
http-fetch: Fix Makefile dependancies
Add transport native helper executables to .gitignore
git-http-fetch: not a builtin
Use an external program to implement fetching with curl
Add support for external programs for handling native fetches

use write_str_in_full helper to avoid literal string... Jim Meyering Sat, 12 Sep 2009 08:54:32 +0000 (10:54 +0200)

use write_str_in_full helper to avoid literal string lengths

In 2d14d65 (Use a clearer style to issue commands to remote helpers,
2009-09-03) I happened to notice two changes like this:

- write_in_full(helper->in, "list\n", 5);
+
+ strbuf_addstr(&buf, "list\n");
+ write_in_full(helper->in, buf.buf, buf.len);
+ strbuf_reset(&buf);

IMHO, it would be better to define a new function,

static inline ssize_t write_str_in_full(int fd, const char *str)
{
return write_in_full(fd, str, strlen(str));
}

and then use it like this:

- strbuf_addstr(&buf, "list\n");
- write_in_full(helper->in, buf.buf, buf.len);
- strbuf_reset(&buf);
+ write_str_in_full(helper->in, "list\n");

Thus not requiring the added allocation, and still avoiding
the maintenance risk of literal string lengths.
These days, compilers are good enough that strlen("literal")
imposes no run-time cost.

Transformed via this:

perl -pi -e \
's/write_in_full\((.*?), (".*?"), \d+\)/write_str_in_full($1, $2)/'\
$(git grep -l 'write_in_full.*"')

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wrap git's main usage string.Matthieu Moy Sat, 12 Sep 2009 10:39:30 +0000 (12:39 +0200)

wrap git's main usage string.

It's now similar wrapped the same way as in Documentation/git.txt, and
fits in a 67 characters wide terminal.

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

Merge branch 'maint'Junio C Hamano Sun, 13 Sep 2009 08:30:53 +0000 (01:30 -0700)

Merge branch 'maint'

* maint:
GIT 1.6.4.3
svn: properly escape arguments for authors-prog
http.c: remove verification of remote packs
grep: accept relative paths outside current working directory
grep: fix exit status if external_grep() punts

Conflicts:
GIT-VERSION-GEN
RelNotes

GIT 1.6.4.3 v1.6.4.3Junio C Hamano Sun, 13 Sep 2009 08:04:23 +0000 (01:04 -0700)

GIT 1.6.4.3

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

svn: properly escape arguments for authors-progMark Lodato Sun, 13 Sep 2009 00:33:23 +0000 (20:33 -0400)

svn: properly escape arguments for authors-prog

Previously, the call to authors-prog was not properly escaped, so any
special characters in the Subversion username, such as spaces and
semi-colons, would be interpreted by the shell rather than being passed
in as the first argument. Now all unsafe characters are escaped using
"git rev-parse --sq-quote"

[ew: switched from "\Q..\E" to "rev-parse --sq-quote"]

Signed-off-by: Mark Lodato <lodatom@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'cb/maint-1.6.3-grep-relative-up' into... Junio C Hamano Sun, 13 Sep 2009 08:24:20 +0000 (01:24 -0700)

Merge branch 'cb/maint-1.6.3-grep-relative-up' into maint

* cb/maint-1.6.3-grep-relative-up:
grep: accept relative paths outside current working directory
grep: fix exit status if external_grep() punts

Conflicts:
t/t7002-grep.sh

Makefile: remove remnant of separate http/https/ftp... Junio C Hamano Sat, 12 Sep 2009 05:35:30 +0000 (22:35 -0700)

Makefile: remove remnant of separate http/https/ftp helpers

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

rebase: use plumbing to show dirty stateJeff King Wed, 9 Sep 2009 14:59:37 +0000 (10:59 -0400)

rebase: use plumbing to show dirty state

Commit 4cfbe06 introduced the use of "git diff" to show
dirty state in a format more familiar to users. However, it
should have used the plumbing "git diff-files" instead.

Not only is it good practice in general to use plumbing in
scripts, but in this case we really don't want the automatic
pager to kick in for an error message.

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

status: make "how to stage" messages optionalJeff King Wed, 9 Sep 2009 11:43:03 +0000 (07:43 -0400)

status: make "how to stage" messages optional

These messages are nice for new users, but experienced git
users know how to manipulate the index, and these messages
waste a lot of screen real estate.

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

push: make non-fast-forward help message configurableJeff King Wed, 9 Sep 2009 11:38:58 +0000 (07:38 -0400)

push: make non-fast-forward help message configurable

This message is designed to help new users understand what
has happened when refs fail to push. However, it does not
help experienced users at all, and significantly clutters
the output, frequently dwarfing the regular status table and
making it harder to see.

This patch introduces a general configuration mechanism for
optional messages, with this push message as the first
example.

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

pager: set LESS=FRSX also on WindowsJohannes Sixt Fri, 11 Sep 2009 17:45:07 +0000 (19:45 +0200)

pager: set LESS=FRSX also on Windows

Previously, this environment variable was set in the pager_preexec
callback, which is conditionally-compiled only on Unix, because it is not,
and cannot be, called on Windows.

With this patch the env member of struct child_process is used to set
the environment variable, which also works on Windows.

Noticed by Alexey Borzenkov.

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

start_command: do not clobber cmd->env on Windows code... Johannes Sixt Fri, 11 Sep 2009 17:40:08 +0000 (19:40 +0200)

start_command: do not clobber cmd->env on Windows code path

Previously, it would not be possible to call start_command twice for the
same struct child_process that has env set.

The fix is achieved by moving the loop that modifies the environment block
into a helper function. This also allows us to make two other helper
functions static.

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

http.c: remove verification of remote packsTay Ray Chuan Wed, 9 Sep 2009 12:33:50 +0000 (20:33 +0800)

http.c: remove verification of remote packs

Make http.c::fetch_pack_index() no longer check for the remote pack
with a HEAD request before fetching the corresponding pack index file.

Not only does sending a HEAD request before we do a GET incur a
performance penalty, it does not offer any significant error-
prevention advantages (pack fetching in the *_http_pack_request()
methods is capable of handling any errors on its own).

This addresses an issue raised elsewhere:

http://code.google.com/p/msysgit/issues/detail?id=323
http://support.github.com/discussions/repos/957-cant-clone-over-http-or-git

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add documentation for mailinfo.scissors and '--no-scissors'Nicolas Sebrecht Fri, 11 Sep 2009 00:29:58 +0000 (02:29 +0200)

add documentation for mailinfo.scissors and '--no-scissors'

Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailinfo: add '--scissors' to usage messageNicolas Sebrecht Fri, 11 Sep 2009 00:09:20 +0000 (02:09 +0200)

mailinfo: add '--scissors' to usage message

Signed-off-by: Nicolas Sebrecht <nicolas.s.dev@gmx.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

INSTALL: Describe dependency knobs from MakefileBrian Gernhardt Thu, 10 Sep 2009 20:28:19 +0000 (16:28 -0400)

INSTALL: Describe dependency knobs from Makefile

We said that some of our dependencies were optional, but didn't say
how to turn them off. Add information for that and mention where to
save the options close to the top of the file.

Also, standardize on both using quotes for the names of the dependencies
and tabs for indentation of the list.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

INSTALL: Reorder dependencies, split shell and PerlBrian Gernhardt Wed, 9 Sep 2009 01:51:00 +0000 (21:51 -0400)

INSTALL: Reorder dependencies, split shell and Perl

The most important and non-optional dependencies should go first, so put
them there. While we're moving them, the descriptions for shell and perl
were archaic, referring to "bare-bones Porcelainish scripts" that have
become powerful and essential.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: Avoid modules deprecated in Python 2.6.Reilly Grant Thu, 10 Sep 2009 07:02:38 +0000 (00:02 -0700)

git-p4: Avoid modules deprecated in Python 2.6.

The popen2, sha and sets modules are deprecated in Python 2.6 (sha in
Python 2.5). Both popen2 and sha are not actually used in git-p4.
Replace usage of sets.Set with the builtin set object.

The built-in set object was added in Python 2.4 and is already used in
other parts of this script, so this dependency is nothing new.

Signed-off-by: Reilly Grant <reillyeon@qotw.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: Add NEEDS_CRYPTO_WITH_SSLBrian Gernhardt Tue, 8 Sep 2009 13:54:38 +0000 (09:54 -0400)

Makefile: Add NEEDS_CRYPTO_WITH_SSL

The Makefile comment for NEEDS_SSL_WITH_CRYPTO says to define it "if
you need -lcrypto with -lssl (Darwin)." However, what it actually
does is add -lssl when you use -lcrypto and not the other way around.
However, libcrypto contains a majority of the ERR_* functions from
OpenSSL (at least on OS X) so we need it both ways.

So, add NEEDS_CRYPTO_WITH_SSL which adds -lcrypto to the OpenSSL link
flags and clarify the difference between it and NEEDS_SSL_WITH_CRYPTO.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git.el: Use git-add-file for unmerged files, remove... Martin Nordholts Thu, 3 Sep 2009 20:27:24 +0000 (22:27 +0200)

git.el: Use git-add-file for unmerged files, remove git-resolve-file

Use `git-add-file' to mark unmerged files as resolved in the
*git-status* buffer to be consistent with git's CLI instructions. Also
remove `git-resolve-file' to make it clear that that "R" is a now a
free keybinding.

Signed-off-by: Martin Nordholts <martinn@src.gnome.org>
Acked-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

INSTALL: Update description of our SHA-1 codeBrian Gernhardt Wed, 9 Sep 2009 01:50:59 +0000 (21:50 -0400)

INSTALL: Update description of our SHA-1 code

We haven't had Mozilla's code or an ARM optimized algorithm since
30ae47b. Reword the paragraph to give credit but not authorship to
Mozilla.

Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive: give less scary messages when merge... Junio C Hamano Tue, 8 Sep 2009 05:43:11 +0000 (22:43 -0700)

merge-recursive: give less scary messages when merge did not start

When unpack_trees() three-way merge logic is called from merge-recursive
and finds that local changes are going to be clobbered, its plumbing level
messages were given as errors first, and then the merge driver added even
more scary message "fatal: merging of trees <a long object name> and
<another long object name> failed".

This is most often encountered by new CVS/SVN migrants who are used to
start a merge from a dirty work tree. The saddest part is that the merge
refused to run to prevent _any_ damage from being done to your work tree
when these messages are given, but the messages look a lot more scarier
than the conflicted case where the user needs to resolve them.

Replace the plumbing level messages so that they talk about what it is
protecting the user from, and end the messages with "Aborting." so that it
becomes clear that the command did not do any harm.

The final "merging of trees failed" message is superfluous, unless you are
interested in debugging the merge-recursive itself. Squelch the current
die() message by default, but allow it to help people who debug git with
verbosity level 4 or greater.

Unless there is some bug, an inner merge that does not touch working tree
should not trigger any such error, so emit the current die() message when
we see an error return from it while running the inner merge, too. It
would also help people who debug git.

We could later add instructions on how to recover (i.e. "stash changes
away or commit on a side branch and retry") instead of the silent
exit(128) I have in this patch, and then use Peff's advice.* mechanism to
squelch it (e.g. "advice.mergeindirtytree"), but they are separate topics.

Tested-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add url.<base>.pushInsteadOf: URL rewriting for push... Josh Triplett Mon, 7 Sep 2009 08:56:33 +0000 (01:56 -0700)

Add url.<base>.pushInsteadOf: URL rewriting for push only

This configuration option allows systematically rewriting fetch-only URLs
to push-capable URLs when used with push. For instance:

[url "ssh://example.org/"]
pushInsteadOf = "git://example.org/"

This will allow clones of "git://example.org/path/to/repo" to subsequently
push to "ssh://example.org/path/to/repo", without manually configuring
pushurl for that remote.

Includes documentation for the new option, bash completion updates, and
test cases (both that pushInsteadOf applies to push, that it does not
apply to fetch, and that it is ignored when pushURL is already defined).

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

GIT 1.6.5-rc0 v1.6.5-rc0Junio C Hamano Tue, 8 Sep 2009 00:20:02 +0000 (17:20 -0700)

GIT 1.6.5-rc0

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

Merge branch 'maint'Junio C Hamano Mon, 7 Sep 2009 22:45:48 +0000 (15:45 -0700)

Merge branch 'maint'

* maint:
git-pull: do not mention --quiet and --verbose twice
githooks.txt: put hooks into subsections

git-pull: do not mention --quiet and --verbose twiceEmmanuel Trillaud Mon, 7 Sep 2009 12:34:35 +0000 (14:34 +0200)

git-pull: do not mention --quiet and --verbose twice

git-pull.txt includes fetch-options.txt and merge-options.txt, both of
which document the --quiet and --verbose.

Supress the ones from fetch-options.txt.

Signed-off-by: Emmanuel Trillaud <etrillaud@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

githooks.txt: put hooks into subsectionsBert Wesarg Sun, 6 Sep 2009 10:22:58 +0000 (12:22 +0200)

githooks.txt: put hooks into subsections

All hooks are currently in its own section. Which may confuse users,
because the section name serves as the hook file name and sections are
all caps for man pages. Putting them into a new HOOKS section and each
hook into a subsection keeps the case to lower case.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/mailinfo-scissors'Junio C Hamano Mon, 7 Sep 2009 22:25:37 +0000 (15:25 -0700)

Merge branch 'jc/mailinfo-scissors'

* jc/mailinfo-scissors:
mailinfo.scissors: new configuration
am/mailinfo: Disable scissors processing by default
Documentation: describe the scissors mark support of "git am"
Teach mailinfo to ignore everything before -- >8 -- mark
builtin-mailinfo.c: fix confusing internal API to mailinfo()

Merge branch 'jk/clone-b'Junio C Hamano Mon, 7 Sep 2009 22:24:53 +0000 (15:24 -0700)

Merge branch 'jk/clone-b'

* jk/clone-b:
clone: add --branch option to select a different HEAD

Merge branch 'jc/upload-pack-hook'Junio C Hamano Mon, 7 Sep 2009 22:24:47 +0000 (15:24 -0700)

Merge branch 'jc/upload-pack-hook'

* jc/upload-pack-hook:
upload-pack: feed "kind [clone|fetch]" to post-upload-pack hook
upload-pack: add a trigger for post-upload-pack hook

Merge branch 'tr/reset-checkout-patch'Junio C Hamano Mon, 7 Sep 2009 22:24:38 +0000 (15:24 -0700)

Merge branch 'tr/reset-checkout-patch'

* tr/reset-checkout-patch:
stash: simplify defaulting to "save" and reject unknown options
Make test case number unique
tests: disable interactive hunk selection tests if perl is not available
DWIM 'git stash save -p' for 'git stash -p'
Implement 'git stash save --patch'
Implement 'git checkout --patch'
Implement 'git reset --patch'
builtin-add: refactor the meat of interactive_add()
Add a small patch-mode testing library
git-apply--interactive: Refactor patch mode code
Make 'git stash -k' a short form for 'git stash save --keep-index'

Merge branch 'np/maint-1.6.3-deepen'Junio C Hamano Mon, 7 Sep 2009 22:23:50 +0000 (15:23 -0700)

Merge branch 'np/maint-1.6.3-deepen'

* np/maint-1.6.3-deepen:
pack-objects: free preferred base memory after usage
make shallow repository deepening more network efficient

grep: accept relative paths outside current working... Clemens Buchacher Sat, 5 Sep 2009 12:31:17 +0000 (14:31 +0200)

grep: accept relative paths outside current working directory

"git grep" would barf at relative paths pointing outside the current
working directory (or subdirectories thereof). Use quote_path_relative(),
which can handle such cases just fine.

[jc: added tests.]

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: fix exit status if external_grep() puntsClemens Buchacher Mon, 7 Sep 2009 08:48:01 +0000 (10:48 +0200)

grep: fix exit status if external_grep() punts

If external_grep() is called and punts, grep_cache() mistakenly reported a
hit, even if there were none. The bug can be triggered by calling "git
grep --no-color" from a subdirectory.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Wrap rewrite globals in a struct in preparation for... Josh Triplett Mon, 7 Sep 2009 08:56:00 +0000 (01:56 -0700)

Wrap rewrite globals in a struct in preparation for adding another set

remote.c has a global set of URL rewrites, accessed by alias_url and
make_rewrite. Wrap them in a new "struct rewrites", passed to alias_url
and make_rewrite. This allows adding other sets of rewrites.

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Sun, 6 Sep 2009 07:39:32 +0000 (00:39 -0700)

Merge branch 'maint'

* maint:
push: re-flow non-fast-forward message
push: fix english in non-fast-forward message

push: re-flow non-fast-forward messageJeff King Sun, 6 Sep 2009 06:47:20 +0000 (02:47 -0400)

push: re-flow non-fast-forward message

The extreme raggedness of the right edge make this jarring
to read. Let's re-flow the text to fill the lines in a more
even way.

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

push: fix english in non-fast-forward messageJeff King Sun, 6 Sep 2009 06:46:25 +0000 (02:46 -0400)

push: fix english in non-fast-forward message

We must use an article when referring to the section
because it is a non-proper noun, and it must be the definite
article because we are referring to a specific section.

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

Do not scramble password read from .cvspassPascal Obry Fri, 4 Sep 2009 11:58:32 +0000 (13:58 +0200)

Do not scramble password read from .cvspass

Passwords stored in .cvspass are already scrambled, we do not
want to scramble them twice. Only passwords read from the
command line are scrambled.

This fixes a regression introduced by b2139db (git-cvsimport: add support
for cvs pserver password scrambling., 2009-08-14).

Signed-off-by: Pascal Obry <pascal@obry.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: free preferred base memory after usageNicolas Pitre Fri, 4 Sep 2009 01:54:03 +0000 (21:54 -0400)

pack-objects: free preferred base memory after usage

When adding objects for preferred delta base, the content from tree
objects leading to given paths is kept in a cache. This has the
potential to grow significantly, especially with large directories as
the whole tree object content is loaded in memory, even if in practice
the number of those objects is limited to the 256 cache entries plus the
$window root tree objects. Still, that can't hurt freeing that up after
object enumeration is done, and before more memory is needed for delta
search.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

make shallow repository deepening more network efficientNicolas Pitre Thu, 3 Sep 2009 23:08:33 +0000 (19:08 -0400)

make shallow repository deepening more network efficient

First of all, I can't find any reason why thin pack generation is
explicitly disabled when dealing with a shallow repository. The
possible delta base objects are collected from the edge commits which
are always obtained through history walking with the same shallow refs
as the client, Therefore the client is always going to have those base
objects available. So let's remove that restriction.

Then we can make shallow repository deepening much more efficient by
using the remote's unshallowed commits as edge commits to get preferred
base objects for thin pack generation. On git.git, this makes the data
transfer for the deepening of a shallow repository from depth 1 to depth 2
around 134 KB instead of 3.68 MB.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use a clearer style to issue commands to remote helpersDaniel Barkalow Fri, 4 Sep 2009 02:13:51 +0000 (22:13 -0400)

Use a clearer style to issue commands to remote helpers

This style is overkill for some commands, but it's worthwhile to use
the same style to issue all commands, and it's useful to avoid
open-coding string lengths.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make the "traditionally-supported" URLs a special caseDaniel Barkalow Fri, 4 Sep 2009 02:13:49 +0000 (22:13 -0400)

Make the "traditionally-supported" URLs a special case

Instead of trying to make http://, https://, and ftp:// URLs
indicative of some sort of pattern of transport helper usage, make
them a special case which runs the "curl" helper, and leave the
mechanism by which arbitrary helpers will be chosen entirely to future
work.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add script for importing bits-and-pieces to Git.Peter Krefting Thu, 3 Sep 2009 12:15:00 +0000 (13:15 +0100)

Add script for importing bits-and-pieces to Git.

Allows the user to import version history that is stored in bits and
pieces in the file system, for instance snapshots of old development
trees, or day-by-day backups. A configuration file is used to
describe the relationship between the different files and allow
describing branches and merges, as well as authorship and commit
messages.

Output is created in a format compatible with git-fast-import.

Full documentation is provided inline in perldoc format.

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

import-tars: Allow per-tar author and commit message.Peter Krefting Thu, 3 Sep 2009 12:15:00 +0000 (13:15 +0100)

import-tars: Allow per-tar author and commit message.

If the "--metainfo=<ext>" option is given on the command line, a file
called "<filename.tar>.<ext>" will be used to create the commit message
for "<filename.tar>", instead of using "Imported from filename.tar".

The author and committer of the tar ball can also be overridden by
embedding an "Author:" or "Committer:" header in the metainfo file.

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

Merge branch 'maint'Junio C Hamano Thu, 3 Sep 2009 16:43:08 +0000 (09:43 -0700)

Merge branch 'maint'

* maint:
git-clone: add missing comma in --reference documentation

Merge branch 'maint-1.6.3' into maintJunio C Hamano Thu, 3 Sep 2009 16:42:56 +0000 (09:42 -0700)

Merge branch 'maint-1.6.3' into maint

* maint-1.6.3:
git-clone: add missing comma in --reference documentation
git-cvsserver: no longer use deprecated 'git-subcommand' commands
clone: disconnect transport after fetching

Merge branch 'maint-1.6.2' into maint-1.6.3Junio C Hamano Thu, 3 Sep 2009 16:42:38 +0000 (09:42 -0700)

Merge branch 'maint-1.6.2' into maint-1.6.3

* maint-1.6.2:
git-clone: add missing comma in --reference documentation
clone: disconnect transport after fetching

git-clone: add missing comma in --reference documentationMiklos Vajna Thu, 3 Sep 2009 11:24:16 +0000 (13:24 +0200)

git-clone: add missing comma in --reference documentation

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Thu, 3 Sep 2009 02:52:18 +0000 (19:52 -0700)

Merge branch 'maint'

* maint:
git-cvsserver: no longer use deprecated 'git-subcommand' commands
clone: disconnect transport after fetching

Merge branch 'maint-1.6.3' into maintJunio C Hamano Thu, 3 Sep 2009 02:51:55 +0000 (19:51 -0700)

Merge branch 'maint-1.6.3' into maint

* maint-1.6.3:
git-cvsserver: no longer use deprecated 'git-subcommand' commands
clone: disconnect transport after fetching

push: teach --quiet to suppress "Everything up-to-date"Jeff King Mon, 31 Aug 2009 19:28:34 +0000 (15:28 -0400)

push: teach --quiet to suppress "Everything up-to-date"

This should have been part of 481c7a6, whose goal was to
make "git push -q" silent unless there is an error.

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

Merge branch 'maint-1.6.2' into maint-1.6.3Junio C Hamano Thu, 3 Sep 2009 01:45:44 +0000 (18:45 -0700)

Merge branch 'maint-1.6.2' into maint-1.6.3

* maint-1.6.2:
clone: disconnect transport after fetching

git-cvsserver: no longer use deprecated 'git-subcommand... Gerrit Pape Wed, 2 Sep 2009 09:23:10 +0000 (09:23 +0000)

git-cvsserver: no longer use deprecated 'git-subcommand' commands

git-cvsserver still references git commands like 'git-config', which
is depcrecated. This commit changes git-cvsserver to use the
'git subcommand' form.

Sylvain Beucler reported the problem through
http://bugs.debian.org/536067

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: disconnect transport after fetchingJeff King Wed, 2 Sep 2009 06:36:47 +0000 (02:36 -0400)

clone: disconnect transport after fetching

The current code just leaves the transport in whatever state
it was in after performing the fetch. For a non-empty clone
over the git protocol, the transport code already
disconnects at the end of the fetch.

But for an empty clone, we leave the connection hanging, and
eventually close the socket when clone exits. This causes
the remote upload-pack to complain "the remote end hung up
unexpectedly". While this message is harmless to the clone
itself, it is unnecessarily scary for a user to see and may
pollute git-daemon logs.

This patch just explicitly calls disconnect after we are
done with the remote end, which sends a flush packet to
upload-pack and cleanly disconnects, avoiding the error
message.

Other transports are unaffected or slightly improved:

- for a non-empty repo over the git protocol, the second
disconnect is a no-op (since we are no longer connected)

- for "walker" transports (like HTTP or FTP), we actually
free some used memory (which previously just sat until
the clone process exits)

- for "rsync", disconnect is always a no-op anyway

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

status: list unmerged files much laterJohannes Sixt Tue, 1 Sep 2009 20:13:53 +0000 (22:13 +0200)

status: list unmerged files much later

When resolving a conflicted merge, two lists in the status output need
more attention from the user than other parts.

- the list of updated paths is useful to review the amount of changes the
merge brings in (the user cannot do much about them other than
reviewing, though); and

- the list of unmerged paths needs the most attention from the user; the
user needs to resolve them in order to proceed.

Since the output of git status does not by default go through the pager,
the early parts of the output can scroll away at the top. It is better to
put the more important information near the bottom. During a merge, local
changes that are not in the index are minimum, and you should keep the
untracked list small in any case, so moving the unmerged list from the top
of the output to immediately after the list of updated paths would give us
the optimum layout.

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

stash: simplify defaulting to "save" and reject unknown... Matthieu Moy Tue, 18 Aug 2009 21:38:40 +0000 (23:38 +0200)

stash: simplify defaulting to "save" and reject unknown options

With the earlier DWIM patches, certain combination of options defaulted
to the "save" command correctly while certain equally valid combination
did not. For example, "git stash -k" were Ok but "git stash -q -k" did
not work.

This makes the logic of defaulting to "save" much simpler. If there are no
non-flag arguments, it is clear that there is no command word, and we
default to "save" subcommand. This rule prevents "git stash -q apply"
from quietly creating a stash with "apply" as the message.

This also teaches "git stash save" to reject an unknown option. This is
to keep a mistyped "git stash save --quite" from creating a stash with a
message "--quite", and this safety is more important with the new logic
to default to "save" with any option-looking argument without an explicit
comand word.

[jc: this is based on Matthieu's 3-patch series, and a follow-up
discussion, and he and Peff take all the credit; if I have introduced bugs
while reworking, they are mine.]

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

builtin-apply.c: get rid of an unnecessary use of tempo... Junio C Hamano Tue, 1 Sep 2009 09:18:29 +0000 (02:18 -0700)

builtin-apply.c: get rid of an unnecessary use of temporary array

Instead of allocating a temporary array imglen[], copying contents to it
from another array img->line[], and then using imglen[], use the value
from img->line[], whose value does not change during the whole process.

This incidentally removes a use of C99 variable length array, which some
older compilers apparently are not happy with.

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

builtin-pack-objects.c: avoid vlaJunio C Hamano Tue, 1 Sep 2009 09:18:52 +0000 (02:18 -0700)

builtin-pack-objects.c: avoid vla

This is one of only two places that we use C99 variable length array on
the stack, which some older compilers apparently are not happy with.

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

Style fixes, add a space after if/for/while.Brian Gianforcaro Tue, 1 Sep 2009 05:35:10 +0000 (01:35 -0400)

Style fixes, add a space after if/for/while.

The majority of code in core git appears to use a single
space after if/for/while. This is an attempt to bring more
code to this standard. These are entirely cosmetic changes.

Signed-off-by: Brian Gianforcaro <b.gianfo@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'lt/approxidate'Junio C Hamano Tue, 1 Sep 2009 05:11:36 +0000 (22:11 -0700)

Merge branch 'lt/approxidate'

* lt/approxidate:
fix approxidate parsing of relative months and years
tests: add date printing and parsing tests
refactor test-date interface
Add date formatting and parsing functions relative to a given time
Further 'approxidate' improvements
Improve on 'approxidate'

Conflicts:
date.c

Merge branch 'mr/gitweb-snapshot'Junio C Hamano Tue, 1 Sep 2009 05:09:53 +0000 (22:09 -0700)

Merge branch 'mr/gitweb-snapshot'

* mr/gitweb-snapshot:
gitweb: add t9501 tests for checking HTTP status codes
gitweb: split test suite into library and tests
gitweb: improve snapshot error handling

Merge branch 'tf/diff-whitespace-incomplete-line'Junio C Hamano Tue, 1 Sep 2009 05:08:57 +0000 (22:08 -0700)

Merge branch 'tf/diff-whitespace-incomplete-line'

* tf/diff-whitespace-incomplete-line:
xutils: Fix xdl_recmatch() on incomplete lines
xutils: Fix hashing an incomplete line with whitespaces at the end

fix approxidate parsing of relative months and yearsJeff King Mon, 31 Aug 2009 02:31:42 +0000 (22:31 -0400)

fix approxidate parsing of relative months and years

These were broken by b5373e9. The problem is that the code
marks the month and year with "-1" for "we don't know it
yet", but the month and year code paths were not adjusted to
fill in the current time before doing their calculations
(whereas other units follow a different code path and are
fine).

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

tests: add date printing and parsing testsJeff King Mon, 31 Aug 2009 02:30:16 +0000 (22:30 -0400)

tests: add date printing and parsing tests

Until now, there was no coverage of relative date printing
or approxidate parsing routines (mainly because we had no
way of faking the "now" time for relative date calculations,
which made consistent testing impossible).

This new script tries to exercise the basic features of
show_date and approxidate. Most of the tests are just "this
obvious thing works" to prevent future regressions, with a
few exceptions:

- We confirm the fix in 607a9e8 that relative year/month
dates in the latter half of a year round correctly.

- We confirm that the improvements in b5373e9 and 1bddb25
work.

- A few tests are marked to expect failure, which are
regressions recently introduced by the two commits
above.

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

refactor test-date interfaceJeff King Mon, 31 Aug 2009 02:26:46 +0000 (22:26 -0400)

refactor test-date interface

The test-date program goes back to the early days of git,
where it was presumably used to do manual sanity checks on
changes to the date code. However, it is not actually used
by the test suite to do any sort of automatic of systematic
tests.

This patch refactors the interface to the program to try to
make it more suitable for use by the test suite. There
should be no fallouts to changing the interface since it is
not actually installed and is not internally called by any
other programs.

The changes are:

- add a "mode" parameter so the caller can specify which
operation to test

- add a mode to test relative date output from show_date

- allow faking a fixed time via the TEST_DATE_NOW
environment variable, which allows consistent automated
testing

- drop the use of ctime for showing dates in favor of our
internal iso8601 printing routines. The ctime output is
somewhat redundant (because of the day-of-week) which
makes writing test cases more annoying.

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