gitweb.git
diff.c: output correct index lines for a split diffJunio C Hamano Mon, 26 Jan 2009 08:08:24 +0000 (00:08 -0800)

diff.c: output correct index lines for a split diff

A patch that changes the filetype (e.g. regular file to symlink) of a path
must be split into a deletion event followed by a creation event, which
means that we need to have two independent metainfo lines for each.
However, the code reused the single set of metainfo lines.

As the blob object names recorded on the index lines are usually not used
nor validated on the receiving end, this is not an issue with normal use
of the resulting patch. However, when accepting a binary patch to delete
a blob, git-apply verified that the postimage blob object name on the
index line is 0{40}, hence a patch that deletes a regular file blob that
records binary contents to create a blob with different filetype (e.g. a
symbolic link) failed to apply. "git am -3" also uses the blob object
names recorded on the index line, so it would also misbehave when
synthesizing a preimage tree.

This moves the code to generate metainfo lines around, so that two
independent sets of metainfo lines are used for the split halves.

Additional tests by Jeff King.

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

tests: Avoid single-shot environment export for shell... Junio C Hamano Tue, 27 Jan 2009 05:13:00 +0000 (21:13 -0800)

tests: Avoid single-shot environment export for shell function invocation

Some shells have issues with a single-shot environment variable export
when invoking a shell function. This fixes the ones I found that invoke
test_must_fail that way.

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

rebase -i: correctly remember --root flag across -... Junio C Hamano Mon, 26 Jan 2009 09:05:22 +0000 (10:05 +0100)

rebase -i: correctly remember --root flag across --continue

d911d14 (rebase -i: learn to rebase root commit, 2009-01-02) tried to
remember the --root flag across a merge conflict in a broken way.
Introduce a flag file $DOTEST/rebase-root to fix and clarify.

While at it, also make sure $UPSTREAM is always initialized to guard
against existing values in the environment.

[tr: added tests]

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

make: Remove -pthread on Darwin (it is included by... Ted Pavlic Mon, 26 Jan 2009 19:03:59 +0000 (14:03 -0500)

make: Remove -pthread on Darwin (it is included by cstdlib).

As discussed in

http://lists.apple.com/archives/Unix-porting/2005/Mar/msg00019.html

the Mac OS X C standard library is always thread safe and always
includes the pthread library. So explicitly using -pthread causes an
'unrecognized option' compiler warning.

This patch clears PTHREAD_LIBS if Darwin is detected.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Mention "local convention" rule in the CodingGuidelinesNanako Shiraishi Mon, 26 Jan 2009 08:32:22 +0000 (17:32 +0900)

Mention "local convention" rule in the CodingGuidelines

The document suggests to imitate the existing code, but didn't
say which existing code it should imitate. This clarifies.

Signed-off-by: しらいしななこ <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Windows: Revert to default paths and convert them by... Steffen Prohaska Sun, 18 Jan 2009 12:00:15 +0000 (13:00 +0100)

Windows: Revert to default paths and convert them by RUNTIME_PREFIX

The RUNTIME_PREFIX mechanism allows us to use the default paths on
Windows too. Defining RUNTIME_PREFIX explicitly requests for
translation of paths relative to the executable at runtime.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Compute prefix at runtime if RUNTIME_PREFIX is setSteffen Prohaska Sun, 18 Jan 2009 12:00:14 +0000 (13:00 +0100)

Compute prefix at runtime if RUNTIME_PREFIX is set

This commit adds support for relocatable binaries (called
RUNTIME_PREFIX). Such binaries can be moved together with the
system configuration files to a different directory, as long as the
relative paths from the binary to the configuration files is
preserved. This functionality is essential on Windows where we
deliver git binaries with an installer that allows to freely choose
the installation location.

If RUNTIME_PREFIX is unset we use the static prefix. This will be
the default on Unix. Thus, the behavior on Unix will remain
identical to the old implementation, which used to add the prefix
in the Makefile.

If RUNTIME_PREFIX is set the prefix is computed from the location
of the executable. In this case, system_path() tries to strip
known directories that executables can be located in from the path
of the executable. If the path is successfully stripped it is used
as the prefix. For example, if the executable is
"/msysgit/bin/git" and BINDIR is "bin", then the prefix computed is
"/msysgit".

If the runtime prefix computation fails, we fall back to the static
prefix specified in the makefile. This can be the case if the
executable is not installed at a known location. Note that our
test system sets GIT_CONFIG_NOSYSTEM to tell git to ignore global
configuration files during testing. Hence testing does not trigger
the fall back.

Note that RUNTIME_PREFIX only works on Windows, though adding
support on Unix should not be too hard. The implementation
requires argv0_path to be set to an absolute path. argv0_path must
point to the directory of the executable. We use assert() to
verify this in debug builds. On Windows, the wrapper for main()
(see compat/mingw.h) guarantees that argv0_path is correctly
initialized. On Unix, further work is required before
RUNTIME_PREFIX can be enabled.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Modify setup_path() to only add git_exec_path() to... Steffen Prohaska Sun, 18 Jan 2009 12:00:13 +0000 (13:00 +0100)

Modify setup_path() to only add git_exec_path() to PATH

Searching git programs only in the highest priority location is
sufficient. It does not make sense that some of the required
programs are located at the highest priority location but other
programs are picked up from a lower priority exec-path. If
exec-path is overridden a complete set of commands should be
provided, otherwise several different versions could get mixed,
which is likely to cause confusion.

If a user explicitly overrides the default location (by --exec-path
or GIT_EXEC_PATH), we now expect that all the required programs are
found there. Instead of adding the directories "argv_exec_path",
"getenv(EXEC_PATH_ENVIRONMENT)", and "system_path(GIT_EXEC_PATH)"
to PATH, we now rely on git_exec_path(), which implements the same
order, but only returns the highest priority location to search for
executables.

Accessing only the location with highest priority is also required
for testing executables built with RUNTIME_PREFIX. The call to
system_path() should be avoided if RUNTIME_PREFIX is set and the
executable is not installed at its final destination. Because we
test before installing, we want to avoid calling system_path()
during tests. The modifications in this commit avoid calling
system_path(GIT_EXEC_PATH) if a higher-priority location is
provided, which is the case when running the tests.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add calls to git_extract_argv0_path() in programs that... Steffen Prohaska Sun, 18 Jan 2009 12:00:12 +0000 (13:00 +0100)

Add calls to git_extract_argv0_path() in programs that call git_config_*

Programs that use git_config need to find the global configuration.
When runtime prefix computation is enabled, this requires that
git_extract_argv0_path() is called early in the program's main().

This commit adds the necessary calls.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git_extract_argv0_path(): Move check for valid argv0... Steffen Prohaska Sun, 18 Jan 2009 12:00:11 +0000 (13:00 +0100)

git_extract_argv0_path(): Move check for valid argv0 from caller to callee

This simplifies the calling code.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Refactor git_set_argv0_path() to git_extract_argv0_path()Steve Haslam Sun, 18 Jan 2009 12:00:10 +0000 (13:00 +0100)

Refactor git_set_argv0_path() to git_extract_argv0_path()

This commit moves the code that computes the dirname of argv[0]
from git.c's main() to git_set_argv0_path() and renames the function
to git_extract_argv0_path(). This makes the code in git.c's main
less cluttered, and we can use the dirname computation from other
main() functions too.

[ spr:
- split Steve's original commit and wrote new commit message.
- Integrated Johannes Schindelin's
cca1704897e7fdb182f68d4c48a437c5d7bc5203 while rebasing onto master.
]

Signed-off-by: Steve Haslam <shaslam@lastminute.com>
Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move computation of absolute paths from Makefile to... Steffen Prohaska Sun, 18 Jan 2009 12:00:09 +0000 (13:00 +0100)

Move computation of absolute paths from Makefile to runtime (in preparation for RUNTIME_PREFIX)

This commit prepares the Makefile for relocatable binaries (called
RUNTIME_PREFIX). Such binaries will be able to be moved together
with the system configuration files to a different directory,
requiring to compute the prefix at runtime.

In a first step, we make all paths relative in the Makefile and
teach system_path() to add the prefix instead. We used to compute
absolute paths in the Makefile and passed them to C as defines. We
now pass relative paths to C and call system_path() to add the
prefix at runtime.

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://git.bogomips.org/git-svnJunio C Hamano Mon, 26 Jan 2009 06:27:52 +0000 (22:27 -0800)

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

* git://git.bogomips.org/git-svn:
git-svn: Add test for --ignore-paths parameter
git-svn: documented --ignore-paths
git-svn: add --ignore-paths option for fetching
git-svn: fix memory leak when checking for empty symlinks

Documentation: rework src/dst description in git pushAnders Melchiorsen Sun, 25 Jan 2009 23:45:33 +0000 (00:45 +0100)

Documentation: rework src/dst description in git push

This tries to make the description of ref matching in git push easier
to read. Beauty is in the eye of the beholder, though.

Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: more git push examplesAnders Melchiorsen Sun, 25 Jan 2009 23:45:32 +0000 (00:45 +0100)

Documentation: more git push examples

Include examples of using HEAD. The order of examples
introduces new concepts one by one. This pushes the
example of deleting a ref to the end of the list.

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

Documentation: simplify refspec format descriptionJunio C Hamano Mon, 26 Jan 2009 06:25:20 +0000 (22:25 -0800)

Documentation: simplify refspec format description

The refspec format description was a mix of regexp and BNF, making it
very difficult to read. The format was also wrong: it did not show
that each part of a refspec is optional in different situations.

Rather than having a confusing grammar, just present the format in
informal prose.

Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase -i --root: fix check for number of argumentsJohannes Schindelin Sun, 25 Jan 2009 23:32:13 +0000 (00:32 +0100)

rebase -i --root: fix check for number of arguments

If we are not rebasing with --root, then $# can only be either 1 (base)
or 2 (base and the name of the branch to be rebased).

If we are rebasing with --root, then it is Ok if $# is 0 (rebase the
current branch down to everything) or 1 (rebase the named branch down to
everything).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gittutorial: remove misleading noteMiklos Vajna Fri, 23 Jan 2009 18:02:29 +0000 (19:02 +0100)

gittutorial: remove misleading note

In the tutorial Alice initializes the repository, and Bob clones it. So
Bob can just do a 'git pull', but Alice will need 'git pull <url>
<branch>'.

The note suggested that the branch parameter is not necessary, which is
no longer true these days.

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

git-am: Add --ignore-date optionNanako Shiraishi Sat, 24 Jan 2009 01:18:02 +0000 (10:18 +0900)

git-am: Add --ignore-date option

This new option tells 'git-am' to ignore the date header field
recorded in the format-patch output. The commits will have the
timestamp when they are created instead.

You can work a lot in one day to accumulate many changes, but
apply and push to the public repository only some of them at
the end of the first day. Then next day you can spend all your
working hours reading comics or chatting with your coworkers,
and apply your remaining patches from the previous day using
this option to pretend that you have been working at the end
of the day.

Signed-off-by: しらいしななこ <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

am: Add --committer-date-is-author-date optionJunio C Hamano Fri, 23 Jan 2009 00:14:58 +0000 (16:14 -0800)

am: Add --committer-date-is-author-date option

This new option tells 'git-am' to use the timestamp recorded
in the Email message as both author and committer date.

Signed-off-by: しらいしななこ <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'kb/lstat-cache'Junio C Hamano Mon, 26 Jan 2009 01:13:34 +0000 (17:13 -0800)

Merge branch 'kb/lstat-cache'

* kb/lstat-cache:
lstat_cache(): introduce clear_lstat_cache() function
lstat_cache(): introduce invalidate_lstat_cache() function
lstat_cache(): introduce has_dirs_only_path() function
lstat_cache(): introduce has_symlink_or_noent_leading_path() function
lstat_cache(): more cache effective symlink/directory detection

Merge branch 'js/diff-color-words'Junio C Hamano Mon, 26 Jan 2009 01:13:29 +0000 (17:13 -0800)

Merge branch 'js/diff-color-words'

* js/diff-color-words:
Change the spelling of "wordregex".
color-words: Support diff.wordregex config option
color-words: make regex configurable via attributes
color-words: expand docs with precise semantics
color-words: enable REG_NEWLINE to help user
color-words: take an optional regular expression describing words
color-words: change algorithm to allow for 0-character word boundaries
color-words: refactor word splitting and use ALLOC_GROW()
Add color_fwrite_lines(), a function coloring each line individually

Merge branch 'cb/add-pathspec'Junio C Hamano Mon, 26 Jan 2009 01:13:11 +0000 (17:13 -0800)

Merge branch 'cb/add-pathspec'

* cb/add-pathspec:
remove pathspec_match, use match_pathspec instead
clean up pathspec matching

Merge branch 'js/maint-all-implies-HEAD'Junio C Hamano Mon, 26 Jan 2009 01:13:02 +0000 (17:13 -0800)

Merge branch 'js/maint-all-implies-HEAD'

* js/maint-all-implies-HEAD:
bundle: allow the same ref to be given more than once
revision walker: include a detached HEAD in --all

Merge branch 'sr/clone-empty'Junio C Hamano Mon, 26 Jan 2009 01:11:30 +0000 (17:11 -0800)

Merge branch 'sr/clone-empty'

* sr/clone-empty:
Allow cloning an empty repository

diff-options.txt: Fix asciidoc markup issueTeemu Likonen Sun, 25 Jan 2009 12:20:22 +0000 (14:20 +0200)

diff-options.txt: Fix asciidoc markup issue

Must be "--patience::", not "--patience:".

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn: Add test for --ignore-paths parameterVitaly \"_Vi\" Shukela Sun, 25 Jan 2009 22:21:42 +0000 (00:21 +0200)

git-svn: Add test for --ignore-paths parameter

Added a test for this option, similar to (and based on) t9133 about
ignorance of .git directories

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: replaced 'echo -e' with printf so it works on POSIX shells]
[ew: added Vitaly to copyright even though it's based on my test]

Sync with 1.6.1.1Junio C Hamano Mon, 26 Jan 2009 00:30:13 +0000 (16:30 -0800)

Sync with 1.6.1.1

git-svn: documented --ignore-pathsVitaly \"_Vi\" Shukela Sun, 25 Jan 2009 22:21:41 +0000 (00:21 +0200)

git-svn: documented --ignore-paths

Documented --ignore-paths option of git-svn to inform users about
the feature and provide some examples.

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: trailing whitespace removed]

git-svn: add --ignore-paths option for fetchingVitaly \"_Vi\" Shukela Sun, 25 Jan 2009 22:21:40 +0000 (00:21 +0200)

git-svn: add --ignore-paths option for fetching

This will be useful when somebody want to checkout something partially from
repository with some non-standart layout or exclude some files from it.
Example: repository has structure /module-{a,b,c}/{trunk,branches,tags}/...
Modules are interdependent, and you want it to be single repostory (to commit
to all modules simultaneously and view complete history), but do not want
branches and tags be checked out into working copy.
Other use case is excluding some large blobs.

The quirk for now is that user must specify this option every fetch/rebase;
in other case he may get extra files or "file not found" errors. It may be
will be resolved by adding regular expression to .git/config into
[svn-remote ...] to make it persistent.

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: replaced 4-space indent with tabs]
[ew: prefixed $ignore_regex with an underscore to be consistent
with other globals in git-svn]
[ew: rearranged functions to minimize diff and removed prototype
usage to be consistent with the rest of git-svn (and other
Perl code in git (and they're ugly to me)]

git-svn: fix memory leak when checking for empty symlinksEric Wong Sun, 25 Jan 2009 23:35:52 +0000 (15:35 -0800)

git-svn: fix memory leak when checking for empty symlinks

By enforcing SVN::Pool usage when calling get_file once again.

This regression was introduced with the reintroduction of
SVN::Ra::get_file() usage in
dbc6c74d0858d77e61e092a48d467e725211f8e9

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

GIT 1.6.1.1 v1.6.1.1Junio C Hamano Sun, 25 Jan 2009 20:41:09 +0000 (12:41 -0800)

GIT 1.6.1.1

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

Ignore test-ctypeBenjamin Kramer Sat, 24 Jan 2009 16:17:55 +0000 (17:17 +0100)

Ignore test-ctype

Signed-off-by: Benjamin Kramer <benny.kra@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http-push.c: style fixesJunio C Hamano Sun, 25 Jan 2009 08:04:15 +0000 (00:04 -0800)

http-push.c: style fixes

b1c7d4a (http-push: refactor lock-related headers creation for curl
requests, 2009-01-24) had many style violations that slipped through.

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

t1505: remove debugging cruftThomas Rast Sat, 24 Jan 2009 22:23:14 +0000 (23:23 +0100)

t1505: remove debugging cruft

Remove a call to git-log that I introduced for debugging and that
accidentally made it into d18ba22 (sha1_name: support @{-N} syntax in
get_sha1(), 2009-01-17).

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/patience-diff'Junio C Hamano Sat, 24 Jan 2009 05:51:38 +0000 (21:51 -0800)

Merge branch 'js/patience-diff'

* js/patience-diff:
bash completions: Add the --patience option
Introduce the diff option '--patience'
Implement the patience diff algorithm

Conflicts:
contrib/completion/git-completion.bash

Merge branch 'maint'Junio C Hamano Sat, 24 Jan 2009 05:51:20 +0000 (21:51 -0800)

Merge branch 'maint'

* maint:
Fix Documentation for git-describe

http-push: refactor lock-related headers creation for... Ray Chuan Sat, 24 Jan 2009 02:00:22 +0000 (10:00 +0800)

http-push: refactor lock-related headers creation for curl requests

DAV-related headers (more specifically, headers related to the lock token,
namely, If, Lock-Token, and Timeout) for curl requests are created and
allocated individually, eg a "if_header" variable for the "If: " header, a
"timeout_header" variable for the "Timeout: " header.

This patch provides a new function ("get_dav_token_headers") that creates
these header, saving methods from allocating memory, and from issuing a
"curl_slist_append()" call. The temporary string storage given to
curl_slist_append() is freed much earlier than the previous code with this
patch, but this change is safe, because curl_slist_append() keeps a copy
of the given string.

In part, this patch also addresses the fact that commit 753bc91 (Remove
the requirement opaquelocktoken uri scheme) did not update memory
allocations for DAV-related headers.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'cb/maint-unpack-trees-absense' into maintJunio C Hamano Sat, 24 Jan 2009 03:06:38 +0000 (19:06 -0800)

Merge branch 'cb/maint-unpack-trees-absense' into maint

* cb/maint-unpack-trees-absense:
unpack-trees: remove redundant path search in verify_absent
unpack-trees: fix path search bug in verify_absent
unpack-trees: handle failure in verify_absent

Merge branch 'tr/maint-no-index-fixes' into maintJunio C Hamano Sat, 24 Jan 2009 03:04:48 +0000 (19:04 -0800)

Merge branch 'tr/maint-no-index-fixes' into maint

* tr/maint-no-index-fixes:
diff --no-index -q: fix endless loop
diff --no-index: test for pager after option parsing
diff: accept -- when using --no-index

Merge branch 'rs/maint-shortlog-foldline' into maintJunio C Hamano Sat, 24 Jan 2009 03:03:50 +0000 (19:03 -0800)

Merge branch 'rs/maint-shortlog-foldline' into maint

* rs/maint-shortlog-foldline:
shortlog: handle multi-line subjects like log --pretty=oneline et. al. do

Merge branch 'pj/maint-ldflags' into maintJunio C Hamano Sat, 24 Jan 2009 03:02:58 +0000 (19:02 -0800)

Merge branch 'pj/maint-ldflags' into maint

* pj/maint-ldflags:
configure clobbers LDFLAGS

Merge branch 'pb/maint-git-pm-false-dir' into maintJunio C Hamano Sat, 24 Jan 2009 03:02:41 +0000 (19:02 -0800)

Merge branch 'pb/maint-git-pm-false-dir' into maint

* pb/maint-git-pm-false-dir:
Git.pm: correctly handle directory name that evaluates to "false"

Merge branch 'js/maint-bisect-gitk' into maintJunio C Hamano Sat, 24 Jan 2009 03:01:32 +0000 (19:01 -0800)

Merge branch 'js/maint-bisect-gitk' into maint

* js/maint-bisect-gitk:
bisect view: call gitk if Cygwin's SESSIONNAME variable is set

Merge branch 'js/add-not-submodule' into maintJunio C Hamano Sat, 24 Jan 2009 03:00:43 +0000 (19:00 -0800)

Merge branch 'js/add-not-submodule' into maint

* js/add-not-submodule:
git add: do not add files from a submodule

Merge branch 'jc/maint-format-patch' into maintJunio C Hamano Sat, 24 Jan 2009 02:59:59 +0000 (18:59 -0800)

Merge branch 'jc/maint-format-patch' into maint

* jc/maint-format-patch:
format-patch: show patch text for the root commit

Merge branch 'am/maint-push-doc' into maintJunio C Hamano Sat, 24 Jan 2009 02:59:26 +0000 (18:59 -0800)

Merge branch 'am/maint-push-doc' into maint

* am/maint-push-doc:
Documentation: avoid using undefined parameters
Documentation: mention branches rather than heads
Documentation: remove a redundant elaboration
Documentation: git push repository can also be a remote

Merge branch 'maint-1.6.0' into maintJunio C Hamano Sat, 24 Jan 2009 02:48:14 +0000 (18:48 -0800)

Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
Fix Documentation for git-describe

git-am: implement --reject option passed to git-applymartin f. krafft Fri, 23 Jan 2009 00:31:21 +0000 (11:31 +1100)

git-am: implement --reject option passed to git-apply

With --reject, git-am simply passes the --reject option to git-apply and thus
allows people to work with reject files if they so prefer.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t4202-log.sh: Add testcasesArjen Laarhoven Thu, 22 Jan 2009 16:37:24 +0000 (17:37 +0100)

t/t4202-log.sh: Add testcases

Add testcases for 'git log --diff-filter=[CM]' (copies and renames).
Also add a testcase for 'git log --follow'.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Allow cloning an empty repositorySverre Rabbelier Fri, 23 Jan 2009 00:07:32 +0000 (01:07 +0100)

Allow cloning an empty repository

Cloning an empty repository manually (that is, doing 'git init' and
then doing all configuration by hand) can be a lot of work. Save the
user this work by allowing the cloning of empty repositories.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix Documentation for git-describeBoyd Stephen Smith Jr Thu, 22 Jan 2009 18:26:25 +0000 (12:26 -0600)

Fix Documentation for git-describe

The documentation for git-describe says the default abbreviation is 8
hexadecimal digits while cache.c clearly shows DEFAULT_ABBREV set to 7.
This patch corrects the documentation.

Signed-off-by: Boyd Stephen Smith Jr <bss@iguanasuicide.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Change the spelling of "wordregex".Boyd Stephen Smith Jr Wed, 21 Jan 2009 04:59:54 +0000 (22:59 -0600)

Change the spelling of "wordregex".

Use "wordRegex" for configuration variable names. Use "word_regex" for C
language tokens.

Signed-off-by: Boyd Stephen Smith Jr. <bss@iguanasuicide.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pager: do wait_for_pager on signal deathJeff King Thu, 22 Jan 2009 06:03:28 +0000 (01:03 -0500)

pager: do wait_for_pager on signal death

Since ea27a18 (spawn pager via run_command interface), the
original git process actually does git work, and the pager
is a child process (actually, on Windows it has always been
that way, since Windows lacks fork). After spawning the
pager, we register an atexit() handler that waits for the
pager to finish.

Unfortunately, that handler does not always run. In
particular, if git is killed by a signal, then we exit
immediately. The calling shell then thinks that git is done;
however, the pager is still trying to run and impact the
terminal. The result can be seen by running a long git
process with a pager (e.g., "git log -p") and hitting ^C.
Depending on your config, you should see the shell prompt,
but pressing a key causes the pager to do any terminal
de-initialization sequence.

This patch just intercepts any death-dealing signals and
waits for the pager before dying. Under typical less
configuration, that means hitting ^C will cause git to stop
generating output, but the pager will keep running.

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

refactor signal handling for cleanup functionsJeff King Thu, 22 Jan 2009 06:03:08 +0000 (01:03 -0500)

refactor signal handling for cleanup functions

The current code is very inconsistent about which signals
are caught for doing cleanup of temporary files and lock
files. Some callsites checked only SIGINT, while others
checked a variety of death-dealing signals.

This patch factors out those signals to a single function,
and then calls it everywhere. For some sites, that means
this is a simple clean up. For others, it is an improvement
in that they will now properly clean themselves up after a
larger variety of signals.

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

chain kill signals for cleanup functionsJeff King Thu, 22 Jan 2009 06:02:35 +0000 (01:02 -0500)

chain kill signals for cleanup functions

If a piece of code wanted to do some cleanup before exiting
(e.g., cleaning up a lockfile or a tempfile), our usual
strategy was to install a signal handler that did something
like this:

do_cleanup(); /* actual work */
signal(signo, SIG_DFL); /* restore previous behavior */
raise(signo); /* deliver signal, killing ourselves */

For a single handler, this works fine. However, if we want
to clean up two _different_ things, we run into a problem.
The most recently installed handler will run, but when it
removes itself as a handler, it doesn't put back the first
handler.

This patch introduces sigchain, a tiny library for handling
a stack of signal handlers. You sigchain_push each handler,
and use sigchain_pop to restore whoever was before you in
the stack.

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

diff: refactor tempfile cleanup handlingJeff King Thu, 22 Jan 2009 05:59:56 +0000 (00:59 -0500)

diff: refactor tempfile cleanup handling

There are two pieces of code that create tempfiles for diff:
run_external_diff and run_textconv. The former cleans up its
tempfiles in the face of premature death (i.e., by die() or
by signal), but the latter does not. After this patch, they
will both use the same cleanup routines.

To make clear what the change is, let me first explain what
happens now:

- run_external_diff uses a static global array of 2
diff_tempfile structs (since it knows it will always
need exactly 2 tempfiles). It calls prepare_temp_file
(which doesn't know anything about the global array) on
each of the structs, creating the tempfiles that need to
be cleaned up. It then registers atexit and signal
handlers to look through the global array and remove the
tempfiles. If it succeeds, it calls the handler manually
(which marks the tempfile structs as unused).

- textconv has its own tempfile struct, which it allocates
using prepare_temp_file and cleans up manually. No
signal or atexit handlers.

The new code moves the installation of cleanup handlers into
the prepare_temp_file function. Which means that that
function now has to understand that there is static tempfile
storage. So what happens now is:

- run_external_diff calls prepare_temp_file
- prepare_temp_file calls claim_diff_tempfile, which
allocates an unused slot from our global array
- prepare_temp_file installs (if they have not already
been installed) atexit and signal handlers for cleanup
- prepare_temp_file sets up the tempfile as usual
- prepare_temp_file returns a pointer to the allocated
tempfile

The advantage being that run_external_diff no longer has to
care about setting up cleanup handlers. Now by virtue of
calling prepare_temp_file, run_textconv gets the same
benefit, as will any future users of prepare_temp_file.

There are also a few side benefits to the specific
implementation:

- we now install cleanup handlers _before_ allocating the
tempfile, closing a race which could leave temp cruft

- when allocating a slot in the global array, we will now
detect a situation where the old slots were not properly
vacated (i.e., somebody forgot to call remove upon
leaving the function). In the old code, such a situation
would silently overwrite the tempfile names, meaning we
would forget to clean them up. The new code dies with a
bug warning.

- we make sure only to install the signal handler once.
This isn't a big deal, since we are just overwriting the
old handler, but will become an issue when a later patch
converts the code to use sigchain

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

Windows: Fix signal numbersJohannes Sixt Thu, 22 Jan 2009 05:57:34 +0000 (00:57 -0500)

Windows: Fix signal numbers

We had defined some SIG_FOO macros that appear in the code, but that are
not supported on Windows, in order to make the code compile. But a
subsequent change will assert that a signal number is non-zero. We now
use the signal numbers that are commonly used on POSIX systems.

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

Merge branch 'kc/maint-diff-bwi-fix'Junio C Hamano Thu, 22 Jan 2009 01:07:51 +0000 (17:07 -0800)

Merge branch 'kc/maint-diff-bwi-fix'

* kc/maint-diff-bwi-fix:
Fix combined use of whitespace ignore options to diff

Merge branch 'lt/maint-wrap-zlib'Junio C Hamano Thu, 22 Jan 2009 00:55:17 +0000 (16:55 -0800)

Merge branch 'lt/maint-wrap-zlib'

* lt/maint-wrap-zlib:
Wrap inflate and other zlib routines for better error reporting

Conflicts:
http-push.c
http-walker.c
sha1_file.c

Merge branch 'am/maint-push-doc'Junio C Hamano Thu, 22 Jan 2009 00:51:28 +0000 (16:51 -0800)

Merge branch 'am/maint-push-doc'

* am/maint-push-doc:
Documentation: avoid using undefined parameters
Documentation: mention branches rather than heads
Documentation: remove a redundant elaboration
Documentation: git push repository can also be a remote

Merge branch 'sg/maint-gitdir-in-subdir'Junio C Hamano Thu, 22 Jan 2009 00:51:25 +0000 (16:51 -0800)

Merge branch 'sg/maint-gitdir-in-subdir'

* sg/maint-gitdir-in-subdir:
Fix gitdir detection when in subdir of gitdir

Merge branch 'jf/am-failure-report'Junio C Hamano Thu, 22 Jan 2009 00:51:18 +0000 (16:51 -0800)

Merge branch 'jf/am-failure-report'

* jf/am-failure-report:
git-am: re-fix the diag message printing
git-am: Make it easier to see which patch failed

Merge branch 'rs/ctype'Junio C Hamano Thu, 22 Jan 2009 00:51:03 +0000 (16:51 -0800)

Merge branch 'rs/ctype'

* rs/ctype:
Add is_regex_special()
Change NUL char handling of isspecial()
Reformat ctype.c
Add ctype test

Conflicts:
Makefile

Merge branch 'sb/hook-cleanup'Junio C Hamano Thu, 22 Jan 2009 00:50:43 +0000 (16:50 -0800)

Merge branch 'sb/hook-cleanup'

* sb/hook-cleanup:
run_hook(): allow more than 9 hook arguments
run_hook(): check the executability of the hook before filling argv
api-run-command.txt: talk about run_hook()
Move run_hook() from builtin-commit.c into run-command.c (libgit)
checkout: don't crash on file checkout before running post-checkout hook

Merge branch 'jk/color-parse'Junio C Hamano Thu, 22 Jan 2009 00:50:34 +0000 (16:50 -0800)

Merge branch 'jk/color-parse'

* jk/color-parse:
Optimize color_parse_mem
expand --pretty=format color options
color: make it easier for non-config to parse color specs

Merge branch 'jc/maint-format-patch-o-relative'Junio C Hamano Thu, 22 Jan 2009 00:50:19 +0000 (16:50 -0800)

Merge branch 'jc/maint-format-patch-o-relative'

* jc/maint-format-patch-o-relative:
Teach format-patch to handle output directory relative to cwd

Conflicts:
t/t4014-format-patch.sh

Merge branch 'kb/am-directory'Junio C Hamano Thu, 22 Jan 2009 00:47:14 +0000 (16:47 -0800)

Merge branch 'kb/am-directory'

* kb/am-directory:
git-am: fix shell quoting
git-am: add --directory=<dir> option

bash completion: add 'rename' subcommand to git-remoteMarkus Heidelberg Wed, 21 Jan 2009 19:14:55 +0000 (20:14 +0100)

bash completion: add 'rename' subcommand to git-remote

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Wed, 21 Jan 2009 09:08:10 +0000 (01:08 -0800)

Merge branch 'maint'

* maint:
Rename diff.suppress-blank-empty to diff.suppressBlankEmpty

Merge branch 'bs/maint-rename-populate-filespec'Junio C Hamano Wed, 21 Jan 2009 09:07:33 +0000 (01:07 -0800)

Merge branch 'bs/maint-rename-populate-filespec'

* bs/maint-rename-populate-filespec:
Rename detection: Avoid repeated filespec population

color-words: Support diff.wordregex config optionBoyd Stephen Smith Jr Wed, 21 Jan 2009 03:46:57 +0000 (21:46 -0600)

color-words: Support diff.wordregex config option

When diff is invoked with --color-words (w/o =regex), use the regular
expression the user has configured as diff.wordregex.

diff drivers configured via attributes take precedence over the
diff.wordregex-words setting. If the user wants to change them, they have
their own configuration variables.

Signed-off-by: Boyd Stephen Smith Jr <bss@iguanasuicide.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Simplify parsing branch switching events in reflogJunio C Hamano Wed, 21 Jan 2009 08:37:38 +0000 (00:37 -0800)

Simplify parsing branch switching events in reflog

We only accept "checkout: moving from A to B" newer style reflog entries,
in order to pick up A. There is no point computing where B begins at
after running strstr to locate " to ", nor adding 4 and then subtracting 4
from the same pointer.

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

Rename diff.suppress-blank-empty to diff.suppressBlankEmptyJohannes Schindelin Tue, 20 Jan 2009 21:08:33 +0000 (22:08 +0100)

Rename diff.suppress-blank-empty to diff.suppressBlankEmpty

All the other config variables use CamelCase. This config variable should
not be an exception.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tutorial-2: Update with the new "git commit" ouputSanti Béjar Tue, 20 Jan 2009 11:29:04 +0000 (12:29 +0100)

tutorial-2: Update with the new "git commit" ouput

An earlier commit c5ee71f (commit: more compact summary and without extra
quotes, 2009-01-19) changed the "git commit" output when creating a
commit. This patch updates the example session in the tutorial to match
the new output.

Signed-off-by: Santi Béjar <santi@agolina.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Rename detection: Avoid repeated filespec populationBjörn Steinbrink Tue, 20 Jan 2009 15:59:57 +0000 (16:59 +0100)

Rename detection: Avoid repeated filespec population

In diffcore_rename, we assume that the blob contents in the filespec
aren't required anymore after estimate_similarity has been called and thus
we free it. But estimate_similarity might return early when the file sizes
differ too much. In that case, cnt_data is never set and the next call to
estimate_similarity will populate the filespec again, eventually rereading
the same blob over and over again.

To fix that, we first get the blob sizes and only when the blob contents
are actually required, and when cnt_data will be set, the full filespec is
populated, once.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix naming scheme for configure cache variables.Ralf Wildenhues Mon, 19 Jan 2009 20:34:36 +0000 (21:34 +0100)

Fix naming scheme for configure cache variables.

In order to be cached, configure variables need to contain the
string '_cv_', and they should begin with a package-specific
prefix in order to avoid interfering with third-party macros.
Rename ld_dashr, ld_wl_rpath, ld_rpath to git_cv_ld_dashr etc.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: use shell for-loop rather than Make's foreach... Brandon Casey Tue, 20 Jan 2009 01:44:03 +0000 (19:44 -0600)

Makefile: use shell for-loop rather than Make's foreach loop during install

The install target uses a foreach loop to generate a single long shell
command line to handle installation of the built-in git commands. The
maximum length of the argument list varies by platform, and this use of
foreach quickly grows the length of the argument list. Current git can
exceed the default maximum argument list length on IRIX 6.5 of 20480
depending on the installation path.

Rather than using make's foreach loop to pre-generate the shell command
line, use a shell for-loop and allow the shell to iterate through each of
the built-in commands.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use uppercase POSIX compliant signals for the 'trap... Markus Heidelberg Mon, 19 Jan 2009 23:43:26 +0000 (00:43 +0100)

use uppercase POSIX compliant signals for the 'trap' command

In 'man 1p trap' there is written:

"Implementations may permit names with the SIG prefix or ignore case
in signal names as an extension."

So change the lowercase signals to uppercase, which is POSIX compliant
instead of being an extension.

There wasn't anybody claiming that it doesn't work, but there was a bug
with using a signal with the SIG prefix, which is an extension as well.
So let's play it safe and change it, since it doesn't hurt anyone.

While at it, also convert 8 indentation spaces to 1 tab character.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/difftool: remove distracting 'echo' in the... Markus Heidelberg Mon, 19 Jan 2009 23:41:18 +0000 (00:41 +0100)

contrib/difftool: remove distracting 'echo' in the SIGINT handler

When interrupting git-difftool with Ctrl-C, the output of this echo
command led to having the cursor at the beginning of the line below the
shell prompt.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/difftool: change trap condition from SIGINT... Markus Heidelberg Mon, 19 Jan 2009 23:38:16 +0000 (00:38 +0100)

contrib/difftool: change trap condition from SIGINT to INT

git-difftool worked for me on an up-to-date Gentoo Linux at home, but
didn't work on a somewhat older Ubuntu Linux 7.10 at work and failed
with the following error, where 'Makefile' was locally modified:

trap: 244: SIGINT: bad trap
external diff died, stopping at Makefile.

In 'man 1p trap' there is written:

"The condition can be EXIT, 0 (equivalent to EXIT), or a signal
specified using a symbolic name, without the SIG prefix, [...]"

"Implementations may permit names with the SIG prefix or ignore case
in signal names as an extension."

So now we do it the POSIX compliant way instead of using an extension.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: more compact summary and without extra quotesSanti Béjar Mon, 19 Jan 2009 22:45:16 +0000 (23:45 +0100)

commit: more compact summary and without extra quotes

Update the report format again to save the screen real estates, while
avoiding from enclosing the one-line summary of the commit log inside
double quotes pair, which looks awkward when the message begins or ends
with a double quote. The old format looked like this:

[master]: created d9a5491: "foo:bar"

Simply removing the double quotes were found to be confusing as a message
often begins with a short-word (area of the system) and a colon.

The new format looks like this:

[master d9a5491] foo:bar

As discussed in the git mailing list:

http://thread.gmane.org/gmane.comp.version-control.git/101687/focus=101735

Signed-off-by: Santi Béjar <santi@agolina.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Introduce for_each_recent_reflog_ent().Junio C Hamano Tue, 20 Jan 2009 06:18:29 +0000 (22:18 -0800)

Introduce for_each_recent_reflog_ent().

This can be used to scan only the last few kilobytes of a reflog, as a
cheap optimization when the data you are looking for is likely to be
found near the end of it. The caller is expected to fall back to the
full scan if that is not the case.

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

interpret_nth_last_branch(): plug small memleakJunio C Hamano Tue, 20 Jan 2009 05:58:31 +0000 (21:58 -0800)

interpret_nth_last_branch(): plug small memleak

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

Optimize color_parse_memRené Scharfe Tue, 20 Jan 2009 04:30:30 +0000 (23:30 -0500)

Optimize color_parse_mem

Commit 5ef8d77a implemented color_parse_mem, a function for
parsing colors from a non-NUL-terminated string, by simply
allocating a new NUL-terminated string and calling
color_parse. This had a small but measurable speed impact on
a user format that used the advanced color parsing. E.g.,

# uses quick parsing
$ time ./git log --pretty=tformat:'%Credfoo%Creset' >/dev/null
real 0m0.673s
user 0m0.652s
sys 0m0.016s

# uses color_parse_mem
$ time ./git log --pretty=tformat:'%C(red)foo%C(reset)' >/dev/null
real 0m0.692s
user 0m0.660s
sys 0m0.032s

This patch implements color_parse_mem as the primary
function, with color_parse as a wrapper for strings. This
gives comparable timings to the first case above.

Original patch by René. Commit message and debugging by Jeff
King.

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

Fix combined use of whitespace ignore options to diffKeith Cascio Mon, 19 Jan 2009 18:03:04 +0000 (10:03 -0800)

Fix combined use of whitespace ignore options to diff

The code used to misbehave when options to ignore certain whitespaces
(-w -b and --ignore-at-eol) were combined.

Signed-off-by: Keith Cascio <keith@cs.ucla.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'kc/maint-diff-bwi-fix'Junio C Hamano Tue, 20 Jan 2009 05:17:47 +0000 (21:17 -0800)

Merge branch 'kc/maint-diff-bwi-fix'

* kc/maint-diff-bwi-fix:
test more combinations of ignore-whitespace options to diff

test more combinations of ignore-whitespace options... Keith Cascio Thu, 15 Jan 2009 00:48:24 +0000 (16:48 -0800)

test more combinations of ignore-whitespace options to diff

There are three flags involved (-w -b and --ignore-space-at-eol) which
makes 8 combinations possible in total, but only 3 cases are tested (none,
-w alone and -b alone).

This adds the other 5 cases.

Signed-off-by: Keith Cascio <keith@cs.ucla.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 20 Jan 2009 03:58:58 +0000 (19:58 -0800)

Merge branch 'maint'

* maint:
shell: Document that 'cvs server' is a valid command

shell: Document that 'cvs server' is a valid commandLars Noschinski Mon, 19 Jan 2009 17:06:43 +0000 (18:06 +0100)

shell: Document that 'cvs server' is a valid command

git-shell's man page explicitly lists all allowed commands, but 'cvs
server' was missing. Add it.

Signed-off-by: Lars Noschinski <lars@public.noschinski.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix reflog parsing for a malformed branch switching... Junio C Hamano Tue, 20 Jan 2009 00:44:08 +0000 (16:44 -0800)

Fix reflog parsing for a malformed branch switching entry

target can be NULL when we failed to parse the message.

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

Fix parsing of @{-1}@{1}Johannes Schindelin Sat, 17 Jan 2009 18:08:12 +0000 (19:08 +0100)

Fix parsing of @{-1}@{1}

To do that, Git no longer looks forward for the '@{' corresponding to the
closing '}' but backward, and dwim_ref() as well as dwim_log() learnt
about the @{-<N>} notation.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

interpret_nth_last_branch(): avoid traversing the reflo... Junio C Hamano Mon, 19 Jan 2009 08:04:25 +0000 (00:04 -0800)

interpret_nth_last_branch(): avoid traversing the reflog twice

You can have quite a many reflog entries, but you typically won't recall
which branch you were on after switching branches for more than several
times.

Instead of reading the reflog twice, this reads the branch switching event
and keeps as many entries as the user asked from the latest such entries,
which is the minimum required to be able to switch back to the branch we
were recently on.

[jc: improvements from Dscho squashed in]

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

bash completion: refactor diff optionsThomas Rast Mon, 19 Jan 2009 21:18:00 +0000 (22:18 +0100)

bash completion: refactor diff options

diff, log and show all take the same diff options. Refactor them from
__git_diff and __git_log into a variable, and complete them in
__git_show too.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bash completion: move pickaxe options to logThomas Rast Mon, 19 Jan 2009 21:17:59 +0000 (22:17 +0100)

bash completion: move pickaxe options to log

Move the options --pickaxe-all and --pickaxe-regex to git-log, where
they make more sense than with git-diff.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

difftool: put the cursor on the editable file for VimDavid Aguilar Mon, 19 Jan 2009 05:34:29 +0000 (21:34 -0800)

difftool: put the cursor on the editable file for Vim

You only need to edit worktree files when comparing against
the worktree. Put the cursor automatically into its window for
vimdiff and gvimdiff to avoid doing <C-w>l every time.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

difftool: fix documentation problemsDavid Aguilar Mon, 19 Jan 2009 05:27:19 +0000 (21:27 -0800)

difftool: fix documentation problems

This patch makes the difftool docs always refer to the
git-difftool script using the dashed form of the name.
Only command examples use the non-dashed form now.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://git.bogomips.org/git-svnJunio C Hamano Mon, 19 Jan 2009 06:29:37 +0000 (22:29 -0800)

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

* git://git.bogomips.org/git-svn:
git-svn: Show UUID in svn info for added directories with svn 1.5.5
git-svn: avoid importing nested git repos
git-svn: fix SVN 1.1.x compatibility
git-svn: Add --localtime option to "fetch"
git-svn: better attempt to handle broken symlink updates
git-svn: handle empty files marked as symlinks in SVN

git-svn: Show UUID in svn info for added directories... Marcel Koeppen Mon, 19 Jan 2009 02:02:01 +0000 (03:02 +0100)

git-svn: Show UUID in svn info for added directories with svn 1.5.5

In svn 1.5.5 the output of "svn info" for added directories was changed
and now shows the repository UUID. This patch implements the same
behavior for "git svn info" and makes t9119-git-svn-info.17 pass if
svn 1.5.5 is used.

Signed-off-by: Marcel Koeppen <git-dev@marzelpan.de>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-am: re-fix the diag message printingJunio C Hamano Mon, 19 Jan 2009 03:34:31 +0000 (19:34 -0800)

git-am: re-fix the diag message printing

The $FIRSTLINE variable is from the user's commit and can contain
arbitrary backslash escapes that may be (mis)interpreted when given to
"echo", depending on the implementation. Use "printf" to work around the
issue.

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