gitweb.git
am -3: list the paths that needed 3-way fallbackJunio C Hamano Wed, 28 Mar 2012 16:55:21 +0000 (09:55 -0700)

am -3: list the paths that needed 3-way fallback

When applying a patch that was based on an older release with "am -3", I
often wonder changes to which files need to be reviewed with extra care to
spot mismerges, but there is no good indication.

The paths that needed 3-way fallback can easily be obtained by comparing
the synthesized (partial) base tree and the current HEAD and noticing only
additions and modifications (removals only show the sparseness of the fake
ancestor tree, which is not useful information at all). List them in the
usual --name-status format.

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

correct spelling: an URL -> a URLJim Meyering Wed, 28 Mar 2012 08:41:54 +0000 (10:41 +0200)

correct spelling: an URL -> a URL

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

l10n updates for Git 1.7.10-rc1Junio C Hamano Tue, 27 Mar 2012 15:39:18 +0000 (08:39 -0700)

l10n updates for Git 1.7.10-rc1

* 'master' of git://github.com/git-l10n/git-po:
Add url of Swedish l10n team in TEAMS file
l10n: Review zh_CN translation for Git 1.7.10-rc1
Update Swedish translation (724t0f0u).
l10n: Update zh_CN translation for Git 1.7.10-rc1
l10n: Update git.pot (1 new message)

tests: unset COLUMNS inherited from environmentZbigniew Jędrzejewski-Szmek Tue, 27 Mar 2012 06:22:02 +0000 (08:22 +0200)

tests: unset COLUMNS inherited from environment

$COLUMNS must be unset to not interfere with the tests. The tests
already ignore the terminal size because output is redirected to a
file, but COLUMNS overrides terminal size detection and changes the
test output away from the standard 80.

Reported-by: Jeff King <peff@peff.net>
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add url of Swedish l10n team in TEAMS fileJiang Xin Tue, 27 Mar 2012 09:11:34 +0000 (17:11 +0800)

Add url of Swedish l10n team in TEAMS file

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

l10n: Review zh_CN translation for Git 1.7.10-rc1Jiang Xin Tue, 27 Mar 2012 06:46:11 +0000 (14:46 +0800)

l10n: Review zh_CN translation for Git 1.7.10-rc1

Overall review of the zh_CN translation:

- Distinguish the translations of index and stage, though they are the
same thing.

- Many other fixes, e.g., add the lost periods at the end of translated
sentences.

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

Update Swedish translation (724t0f0u).Peter Krefting Thu, 15 Mar 2012 09:47:06 +0000 (10:47 +0100)

Update Swedish translation (724t0f0u).

- Update for 1.7.10-rc1.
- Add a missing -e when generaring the "Untracked files" message.
- Fixed some wordings after playing with the localized version.

teach "git branch" a --quiet optionJeff King Mon, 26 Mar 2012 23:51:06 +0000 (19:51 -0400)

teach "git branch" a --quiet option

There's currently no way to suppress the informational
"deleted branch..." or "set up tracking..." messages. This
patch provides a "-q" option to do so.

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

checkout: suppress tracking message with "-q"Jeff King Mon, 26 Mar 2012 23:51:01 +0000 (19:51 -0400)

checkout: suppress tracking message with "-q"

Like the "switched to..." message (which is already
suppressed by "-q"), this message is purely informational.
Let's silence it if the user asked us to be quiet.

This patch is slightly more than a one-liner, because we
have to teach create_branch to propagate the flag all the
way down to install_branch_config.

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

clean up struct ref's nonfastforward fieldJeff King Mon, 26 Mar 2012 19:51:50 +0000 (15:51 -0400)

clean up struct ref's nonfastforward field

Each ref structure contains a "nonfastforward" field which
is set during push to show whether the ref rewound history.
Originally this was a single bit, but it was changed in
f25950f (push: Provide situational hints for non-fast-forward
errors) to an enum differentiating a non-ff of the current
branch versus another branch.

However, we never actually set the member according to the
enum values, nor did we ever read it expecting anything but
a boolean value. But we did use the side effect of declaring
the enum constants to store those values in a totally
different integer variable. The code as-is isn't buggy, but
the enum declaration inside "struct ref" is somewhat
misleading.

Let's convert nonfastforward back into a single bit, and
then define the NON_FF_* constants closer to where they
would be used (they are returned via the "int *nonfastforward"
parameter to transport_push, so we can define them there).

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

Update draft release notes to 1.7.10Junio C Hamano Mon, 26 Mar 2012 19:38:34 +0000 (12:38 -0700)

Update draft release notes to 1.7.10

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

Sync with 1.7.9.5Junio C Hamano Mon, 26 Mar 2012 19:30:51 +0000 (12:30 -0700)

Sync with 1.7.9.5

Git 1.7.9.5 v1.7.9.5Junio C Hamano Mon, 26 Mar 2012 19:23:34 +0000 (12:23 -0700)

Git 1.7.9.5

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

Merge branch 'jn/maint-fast-import-empty-ls' into maintJunio C Hamano Mon, 26 Mar 2012 19:10:25 +0000 (12:10 -0700)

Merge branch 'jn/maint-fast-import-empty-ls' into maint

* jn/maint-fast-import-empty-ls:
fast-import: don't allow 'ls' of path with empty components
fast-import: leakfix for 'ls' of dirty trees

Merge branch 'ph/rerere-doc' into maintJunio C Hamano Mon, 26 Mar 2012 19:10:12 +0000 (12:10 -0700)

Merge branch 'ph/rerere-doc' into maint

* ph/rerere-doc:
rerere: Document 'rerere remaining'

Merge branch 'ms/maint-config-error-at-eol-linecount... Junio C Hamano Mon, 26 Mar 2012 19:10:05 +0000 (12:10 -0700)

Merge branch 'ms/maint-config-error-at-eol-linecount' into maint

* ms/maint-config-error-at-eol-linecount:
config: report errors at the EOL with correct line number

grep doc: add --break / --heading / -W to synopsisMark Lodato Mon, 26 Mar 2012 02:41:42 +0000 (22:41 -0400)

grep doc: add --break / --heading / -W to synopsis

All of the other options were included in the synopsis, so it makes
sense to include these as well.

Signed-off-by: Mark Lodato <lodatom@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

configure: be more idiomaticStefano Lattarini Mon, 26 Mar 2012 16:42:26 +0000 (18:42 +0200)

configure: be more idiomatic

Lots of code in Git's configure.ac doesn't follow the typical formatting,
idioms and best practices for Autoconf input files. Improve the situation.

There are probably many more similar improvements to be done, but trying
to clump all of them in a single change would make it unreviewable, so we
content ourselves with a partial improvement.

This change is just cosmetic, and should cause no semantic change.

The most relevant of the changes introduced by this patch are:

- Do not add trailing '\' characters for line continuation where they
are not truly needed.

- In several (but not all) macro calls, properly quote the arguments.

- Few cosmetic changes in spacing and comments.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

configure: avoid some code repetitions thanks to m4_... Stefano Lattarini Mon, 26 Mar 2012 16:42:25 +0000 (18:42 +0200)

configure: avoid some code repetitions thanks to m4_{push,pop}def

This change is just cosmetic, and should cause no semantic change, nor
any change in the generated configure script.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

configure: move definitions of private m4 macros before... Stefano Lattarini Mon, 26 Mar 2012 16:42:24 +0000 (18:42 +0200)

configure: move definitions of private m4 macros before AC_INIT invocation

This way, no spurious comments nor whitespace will be propagated in the
generated configure script.

This change is a pure code movement (plus addition of a comment line).

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: improve description of GIT_EDITOR and... Rodrigo Silva (MestreLion) Fri, 23 Mar 2012 12:38:42 +0000 (12:38 +0000)

Documentation: improve description of GIT_EDITOR and preference order

Previously GIT_EDITOR was not listed in git(1) "Environment Variables" section,
which could be very confusing to users. Include it in "other" subsection along
with a link to git-var(1), since that is the page that fully describes all
places where editor can be set and also their preference order.

Also, git-var(1) did not say that hardcoded fallback 'vi' may have been changed
at build time. A user could be puzzled if 'nano' pops up even when none of the
mentioned environment vars or config.editor are set. Clarify this.

Ideally, the build system should be changed to reflect the chosen fallback
editor when creating the man pages. Not sure if that is even possible though.

Signed-off-by: Rodrigo Silva (MestreLion) <linux@rodrigosilva.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

documentation: fix alphabetic ordered list for git... Nelson Benitez Leon Fri, 23 Mar 2012 11:31:39 +0000 (12:31 +0100)

documentation: fix alphabetic ordered list for git-rebase man page

An alphabetic ordered list (a.) is converted to numerical in
the man page (1.) so context comments naming 'a' were confusing,
fix that by not using ordered list notation for 'a' anb 'b' items.

Signed-off-by: Nelson Benitez Leon <nelsonjesus.benitez@seap.minhap.es>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

combine-diff: fix loop index underflowRené Scharfe Sat, 24 Mar 2012 15:18:46 +0000 (16:18 +0100)

combine-diff: fix loop index underflow

If both la and context are zero at the start of the loop, la wraps around
and we end up reading from memory far away. Skip the loop in that case
instead.

Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge gitk changes from Paul Mackerras at git://ozlabs... Junio C Hamano Sat, 24 Mar 2012 08:30:30 +0000 (01:30 -0700)

Merge gitk changes from Paul Mackerras at git://ozlabs.org/~paulus/gitk

* git://ozlabs.org/~paulus/gitk:
gitk: Teach gitk to respect log.showroot
gitk: Add menu items for comparing a commit with the marked commit
gitk: Speed up resolution of short SHA1 ids
gitk: Use symbolic font names "sans" and "monospace" when available
gitk: Skip over AUTHOR/COMMIT_DATE when searching all fields
gitk: Make "git describe" output clickable, too
gitk: Fix the display of files when filtered by path
gitk: Use a tabbed dialog to edit preferences
gitk: Use "gitk: repo-top-level-dir" as window title

gitk: Teach gitk to respect log.showrootMarcus Karlsson Tue, 4 Oct 2011 20:08:13 +0000 (22:08 +0200)

gitk: Teach gitk to respect log.showroot

In early days, all projects managed by git (except for git itself) had the
product of a fairly mature development history in their first commit, and
it was deemed unnecessary clutter to show additions of these thousands of
paths as a patch.

"git log" learned to show the patch for the initial commit without requiring
--root command line option at 0f03ca9 (config option log.showroot to show
the diff of root commits, 2006-11-23).

Teach gitk to respect log.showroot.

[paulus@samba.org: Cleaned up the Tcl a bit, use --bool on the
git config call]

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>

Git 1.7.10-rc2 v1.7.10-rc2Junio C Hamano Fri, 23 Mar 2012 21:50:23 +0000 (14:50 -0700)

Git 1.7.10-rc2

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

.mailmap: unify various old mail addresses of gitsterJunio C Hamano Fri, 23 Mar 2012 21:40:39 +0000 (14:40 -0700)

.mailmap: unify various old mail addresses of gitster

"git shortlog -s -e" should show a single current address with this.

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

Merge branch 'am/completion-zsh-fix'Junio C Hamano Fri, 23 Mar 2012 21:36:21 +0000 (14:36 -0700)

Merge branch 'am/completion-zsh-fix'

* am/completion-zsh-fix:
contrib/completion: "local var=()" is misinterpreted as func-decl by zsh

Merge branch 'dw/gitweb-doc-grammo'Junio C Hamano Fri, 23 Mar 2012 21:36:13 +0000 (14:36 -0700)

Merge branch 'dw/gitweb-doc-grammo'

Typofix.

* dw/gitweb-doc-grammo:
Documentation/gitweb: trivial English fixes

merge-recursive: don't detect renames of empty filesJeff King Thu, 22 Mar 2012 22:52:24 +0000 (18:52 -0400)

merge-recursive: don't detect renames of empty files

Merge-recursive detects renames so that if one side modifies
"foo" and the other side moves it to "bar", the modification
is applied to "bar". However, our rename detection is based
on content analysis, it can be wrong (i.e., two files were
not intended as a rename, but just happen to have the same
or similar content).

This is quite rare if the files actually contain content,
since two unrelated files are unlikely to have exactly the
same content. However, empty files present a problem, in
that there is nothing to analyze. An uninteresting
placeholder file with zero bytes may or may not be related
to a placeholder file with another name.

The result is that adding content to an empty file may cause
confusion if the other side of a merge removed it; your
content may end up in another random placeholder file that
was added.

Let's err on the side of caution and not consider empty
files as renames. This will cause a modify/delete conflict
on the merge, which will let the user sort it out
themselves.

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

teach diffcore-rename to optionally ignore empty contentJeff King Thu, 22 Mar 2012 22:52:13 +0000 (18:52 -0400)

teach diffcore-rename to optionally ignore empty content

Our rename detection is a heuristic, matching pairs of
removed and added files with similar or identical content.
It's unlikely to be wrong when there is actual content to
compare, and we already take care not to do inexact rename
detection when there is not enough content to produce good
results.

However, we always do exact rename detection, even when the
blob is tiny or empty. It's easy to get false positives with
an empty blob, simply because it is an obvious content to
use as a boilerplate (e.g., when telling git that an empty
directory is worth tracking via an empty .gitignore).

This patch lets callers specify whether or not they are
interested in using empty files as rename sources and
destinations. The default is "yes", keeping the original
behavior. It works by detecting the empty-blob sha1 for
rename sources and destinations.

One more flexible alternative would be to allow the caller
to specify a minimum size for a blob to be "interesting" for
rename detection. But that would catch small boilerplate
files, not large ones (e.g., if you had the GPL COPYING file
in many directories).

A better alternative would be to allow a "-rename"
gitattribute to allow boilerplate files to be marked as
such. I'll leave the complexity of that solution until such
time as somebody actually wants it. The complaints we've
seen so far revolve around empty files, so let's start with
the simple thing.

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

make is_empty_blob_sha1 available everywhereJeff King Thu, 22 Mar 2012 18:53:39 +0000 (14:53 -0400)

make is_empty_blob_sha1 available everywhere

The read-cache implementation defines this static function,
but it is a generally useful concept in git. Let's give
the empty blob the same treatment as the empty tree,
providing both hex and binary forms of the sha1.

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

drop casts from users EMPTY_TREE_SHA1_BINJeff King Thu, 22 Mar 2012 18:53:24 +0000 (14:53 -0400)

drop casts from users EMPTY_TREE_SHA1_BIN

This macro already evaluates to the correct type, as it
casts the string literal to "unsigned char *" itself
(and callers who want the literal can use the _LITERAL
form).

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

Documentation/gitweb: trivial English fixesD Waitzman Fri, 23 Mar 2012 15:02:43 +0000 (11:02 -0400)

Documentation/gitweb: trivial English fixes

Change "it's" to "its" where a possessive is intended. Also add two
missing "the" that were noticed by Ben Walton.

Signed-off-by: David Waitzman <djw@bbn.com>

gitk: Add menu items for comparing a commit with the... Paul Mackerras Fri, 23 Mar 2012 11:07:27 +0000 (22:07 +1100)

gitk: Add menu items for comparing a commit with the marked commit

Sometimes one wants to see the different between two commits that are
a long distance apart in the graph display. This is difficult to do
with the "Diff this -> selected" and "Diff selected -> this" menu
items because the need to maintain the selection means that one can't
use the find facilities or the reference list window to navigate from
one to the other.

This provides an alternative using the mark. Having found one commit,
one marks it with the "Mark this commit" menu item, then navigates to
the other commit and uses the new "Diff this -> marked commit" and/or
"Diff marked commit -> this" menu items.

Signed-off-by: Paul Mackerras <paulus@samba.org>

contrib/completion: "local var=()" is misinterpreted... Alex Merry Thu, 1 Sep 2011 13:47:31 +0000 (14:47 +0100)

contrib/completion: "local var=()" is misinterpreted as func-decl by zsh

Certain versions of zsh seems to treat

local var=()

as a function declaration, rather than an assignment of an empty array,
although its documentation does not suggest that this should be the case.

With zsh 4.3.15 on Fedora Core 15, this causes

__git_ps1 " (%s)"

to trigger an error message:

local:2: command not found: svn_url_pattern

when GIT_PS1_SHOWUPSTREAM="auto".

Signed-off-by: Alex Merry <dev@randomguy3.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 20 Mar 2012 22:54:28 +0000 (15:54 -0700)

Merge branch 'maint'

* maint:

Merge branch 'maint-1.7.8' into maintJunio C Hamano Tue, 20 Mar 2012 22:53:30 +0000 (15:53 -0700)

Merge branch 'maint-1.7.8' into maint

* maint-1.7.8:
t/Makefile: Use $(sort ...) explicitly where needed
gitweb: Fix actionless dispatch for non-existent objects
i18n of multi-line advice messages

merge: backport GIT_MERGE_AUTOEDIT supportJunio C Hamano Tue, 20 Mar 2012 22:39:10 +0000 (15:39 -0700)

merge: backport GIT_MERGE_AUTOEDIT support

Even though 1.7.9.x series does not open the editor by default
when merging in general, it does do so in one occassion: when
merging an annotated tag. And worse yet, there is no good way
for older scripts to decline this.

Backport the support for GIT_MERGE_AUTOEDIT environment variable
from 1.7.10 track to help those stuck on 1.7.9.x maintenance
track.

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

Merge branch 'ks/sort-wildcard-in-makefile' into maint... Junio C Hamano Tue, 20 Mar 2012 22:26:19 +0000 (15:26 -0700)

Merge branch 'ks/sort-wildcard-in-makefile' into maint-1.7.8

* ks/sort-wildcard-in-makefile:
t/Makefile: Use $(sort ...) explicitly where needed

Merge branch 'jc/advise-i18n' into maint-1.7.8Junio C Hamano Tue, 20 Mar 2012 22:25:38 +0000 (15:25 -0700)

Merge branch 'jc/advise-i18n' into maint-1.7.8

* jc/advise-i18n:
i18n of multi-line advice messages

Merge branch 'jn/gitweb-unspecified-action' into maint... Junio C Hamano Tue, 20 Mar 2012 22:24:23 +0000 (15:24 -0700)

Merge branch 'jn/gitweb-unspecified-action' into maint-1.7.8

* jn/gitweb-unspecified-action:
gitweb: Fix actionless dispatch for non-existent objects

rebase -i: remind that the lines are top-to-bottomJunio C Hamano Fri, 16 Mar 2012 14:48:33 +0000 (07:48 -0700)

rebase -i: remind that the lines are top-to-bottom

Nelson Benitez Leon opened a discussion with a patch with this in the
note:

Hi, I was using git rebase -i for some time now and never occured to
me I could reorder the commit lines to affect the order the commits
are applied, learnt that recently from a git tutorial.

Nelson's patch was to stress the fact that the lines in the insn sheet can
be re-ordered in a much more verbose way. Let's add a one-liner reminder
and also remind that the lines in the insn sheet is read from top to
bottom, unlike the "git log" output.

Discussion-triggered-by: Nelson Benitez Leon
Signed-off-by: Junio C Hamano <gitster@pobox.com>

push: Provide situational hints for non-fast-forward... Christopher Tiwald Tue, 20 Mar 2012 04:31:33 +0000 (00:31 -0400)

push: Provide situational hints for non-fast-forward errors

Pushing a non-fast-forward update to a remote repository will result in
an error, but the hint text doesn't provide the correct resolution in
every case. Give better resolution advice in three push scenarios:

1) If you push your current branch and it triggers a non-fast-forward
error, you should merge remote changes with 'git pull' before pushing
again.

2) If you push to a shared repository others push to, and your local
tracking branches are not kept up to date, the 'matching refs' default
will generate non-fast-forward errors on outdated branches. If this is
your workflow, the 'matching refs' default is not for you. Consider
setting the 'push.default' configuration variable to 'current' or
'upstream' to ensure only your current branch is pushed.

3) If you explicitly specify a ref that is not your current branch or
push matching branches with ':', you will generate a non-fast-forward
error if any pushed branch tip is out of date. You should checkout the
offending branch and merge remote changes before pushing again.

Teach transport.c to recognize these scenarios and configure push.c
to hint for them. If 'git push's default behavior changes or we
discover more scenarios, extension is easy. Standardize on the
advice API and add three new advice variables, 'pushNonFFCurrent',
'pushNonFFDefault', and 'pushNonFFMatching'. Setting any of these
to 'false' will disable their affiliated advice. Setting
'pushNonFastForward' to false will disable all three, thus preserving the
config option for users who already set it, but guaranteeing new
users won't disable push advice accidentally.

Based-on-patch-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Christopher Tiwald <christiwald@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7800: Test difftool passing arguments to diffDavid Aguilar Sat, 17 Mar 2012 03:54:37 +0000 (20:54 -0700)

t7800: Test difftool passing arguments to diff

git-difftool relies on the ability to forward unknown arguments
to the git-diff command. Add a test to ensure that this works
as advertised.

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

gitk: Speed up resolution of short SHA1 idsPaul Mackerras Mon, 19 Mar 2012 00:21:08 +0000 (11:21 +1100)

gitk: Speed up resolution of short SHA1 ids

On large repositories such as the Linux kernel, it can take quite a
noticeable time (several seconds) for gitk to resolve short SHA1 IDs
to their long form. This speeds up the process by maintaining lists
of IDs indexed by the first 4 characters of the SHA1 ID, speeding up
the search by a factor of 65536 on large repositories.

Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Use symbolic font names "sans" and "monospace... Jonathan Nieder Thu, 8 Mar 2012 12:30:11 +0000 (06:30 -0600)

gitk: Use symbolic font names "sans" and "monospace" when available

The following only concerns systems using X and the client-side font
rendering framework from freedesktop.org. Windows and Mac OS X are
not affected.

Starting with version 8.5, Tk uses freetype and fontconfig by default
to render fonts on platforms that support it. Gitk currently defaults
to the font Helvetica for the interface and Courier for diffs, and
both unfortunately look rather bad on screen in the default
configuration on many Linux distros with anti-aliasing and poor
hinting.

It is better to default to "sans" and "monospace", which are mapped by
fontconfig to some appropriate font of the sysadmin and user's
choosing (typically Bitstream Vera Sans and Mono). The result looks
more sensible and it makes gitk feel like a well-behaved software
citizen since its fonts match other native apps.

This patch does not change the appearance of gitk for users that have
already run it, since gitk uses the remembered UI and diff font names
from ~/.gitk.

Requested-by: Michael Biebl <biebl@debian.org>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Acked-by: Mark Hills <mark@pogo.org.uk>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Skip over AUTHOR/COMMIT_DATE when searching all... Frédéric Brière Sun, 14 Mar 2010 22:59:09 +0000 (18:59 -0400)

gitk: Skip over AUTHOR/COMMIT_DATE when searching all fields

This prevents a search for a number like "105" on "All Fields" from
matching against the raw author and commit timestamps. These
timestamps were already not searchable by themselves, and the
displayed format does not match the query string anyway.

Signed-off-by: Frédéric Brière <fbriere@fbriere.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Make "git describe" output clickable, tooJim Meyering Sat, 10 Dec 2011 15:08:57 +0000 (16:08 +0100)

gitk: Make "git describe" output clickable, too

Automake's contribution guidelines suggest using "git describe" output
in commit logs to reference previous commits. By contrast, in
coreutils, I had acquired the habit of using a bare SHA1 prefix (8 hex
digits), since gitk creates clickable links for that, and not for "git
describe" output.

I prefer the readability of the full "git describe" output, yet want
to retain the gitk links, so this renders as clickable not just
SHA1-like strings, but also an SHA1-like string that is prefixed by
"-g".

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Fix the display of files when filtered by pathPat Thoyts Tue, 13 Dec 2011 16:50:50 +0000 (16:50 +0000)

gitk: Fix the display of files when filtered by path

Launching 'gitk -- .' or 'gitk -- ..\t' restricts the display to files
under the given directory but the file list is left empty. This is because
the path_filter function fails to match the filenames which are relative
to the working tree to the filter which is filessytem relative.
This solves the problem by making both names fully qualified filesystem
paths before performing the comparison.

Tested-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Use a tabbed dialog to edit preferencesPat Thoyts Tue, 13 Dec 2011 14:56:49 +0000 (14:56 +0000)

gitk: Use a tabbed dialog to edit preferences

This commit converts the user preferences dialog into a tabbed property
sheet grouping general properties, colours and font selections onto
separate pages. The previous implementation was exceeding the screen
height on some systems and this avoids such problems and permits extension
using new pages in the future.

If themed Tk is unavailable or undesired a reasonable facsimile of the
tabbed notebook widget is used instead.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Use "gitk: repo-top-level-dir" as window titleZbigniew Jędrzejewski-Szmek Wed, 9 Nov 2011 16:28:28 +0000 (17:28 +0100)

gitk: Use "gitk: repo-top-level-dir" as window title

Previously, when run in a subdirectory, gitk would show the name
of this subdirectory as title, which was misleading. When run with
GIT_DIR set, it would show the cwd, which is even more misleading.

In case of non-bare repos, the .git suffix in the path is skipped.

Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>

Merge branch 'ab/perl-i18n'Junio C Hamano Fri, 16 Mar 2012 16:16:17 +0000 (09:16 -0700)

Merge branch 'ab/perl-i18n'

* ab/perl-i18n:
perl/Makefile: install Git::I18N under NO_PERL_MAKEMAKER
Git::I18N: compatibility with perl <5.8.3

perl/Makefile: install Git::I18N under NO_PERL_MAKEMAKERÆvar Arnfjörð Bjarmason Sat, 10 Mar 2012 12:29:35 +0000 (12:29 +0000)

perl/Makefile: install Git::I18N under NO_PERL_MAKEMAKER

When I added the i18n infrastructure in v1.7.8-rc2-1-g5e9637c I forgot
to install Git::I18N also when NO_PERL_MAKEMAKER=YesPlease was
set. Change the generation of the fallback perl.mak file to do that.

Now Git/I18N.pm is installed alongside Git.pm in such a way that
anything that uses GITPERLLIB will find it.

Reported-by: Tom G. Christensen <tgc@statsbiblioteket.dk>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.10Junio C Hamano Fri, 16 Mar 2012 15:42:22 +0000 (08:42 -0700)

Update draft release notes to 1.7.10

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

Merge branch 'th/mergetools-deltawalker'Junio C Hamano Fri, 16 Mar 2012 15:24:19 +0000 (08:24 -0700)

Merge branch 'th/mergetools-deltawalker'

* th/mergetools-deltawalker:
Documentation/difftool: add deltawalker to list of valid diff tools

Merge branch 'jc/maint-verify-objects-remove-pessimism'Junio C Hamano Fri, 16 Mar 2012 15:23:53 +0000 (08:23 -0700)

Merge branch 'jc/maint-verify-objects-remove-pessimism'

The code to validate the history connectivity between old refs and new
refs used by fetch and receive-pack, introduced in 1.7.8, was grossly
inefficient and unnecessarily tried to re-validate integrity of individual
objects. This essentially reverts that performance regression.

* jc/maint-verify-objects-remove-pessimism:
fetch/receive: remove over-pessimistic connectivity check

Merge branch 'sl/customize-sane-tool-path'Junio C Hamano Fri, 16 Mar 2012 15:23:34 +0000 (08:23 -0700)

Merge branch 'sl/customize-sane-tool-path'

* sl/customize-sane-tool-path:
configure: allow user to prevent $PATH "sanitization" on Solaris

Merge "two fixes for fast-import's 'ls' command" from... Junio C Hamano Fri, 16 Mar 2012 15:19:18 +0000 (08:19 -0700)

Merge "two fixes for fast-import's 'ls' command" from Jonathan

Andrew Sayers noticed that the svn-fe | git fast-import pipeline
mishandles a subversion history that copies the root directory to a
sub-directory (e.g. doing `svn cp . trunk` to standardise your
layout). As David Barr explained, the bug arises when the following
command is sent to git fast-import:

'ls' SP ':1' SP LF

Instead of reading back what is at the root of r1, it unconditionally
reports the path as missing.

After sleeping on it, here are two patches for 'maint'. One plugs a
memory leak. The other ensures that trying to pass an empty path to
the 'ls' command results in an error message that can help the
frontend author instead of the silently broken conversion Andrew
found.

Then we can carefully add 'ls ""' support in 1.7.11.

* commit 'refs/pull-request-tags/jn/maint-fast-import-empty-ls':
fast-import: don't allow 'ls' of path with empty components
fast-import: leakfix for 'ls' of dirty trees

l10n: Update zh_CN translation for Git 1.7.10-rc1Jiang Xin Fri, 16 Mar 2012 14:35:58 +0000 (22:35 +0800)

l10n: Update zh_CN translation for Git 1.7.10-rc1

Translate 1 new message from Git 1.7.10-rc1: "Gitdir '$a' is ..."

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

l10n: Update git.pot (1 new message)Jiang Xin Fri, 16 Mar 2012 12:28:05 +0000 (20:28 +0800)

l10n: Update git.pot (1 new message)

Changes of po/git.pot from v1.7.10-rc0 to v1.7.10-rc1:

* 1 new l10n message at line: 3361.

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

Merge v1.7.10-rc0 for git l10n updateJiang Xin Fri, 16 Mar 2012 12:18:07 +0000 (20:18 +0800)

Merge v1.7.10-rc0 for git l10n update

Merge branch 'th/git-diffall'Junio C Hamano Fri, 16 Mar 2012 04:54:42 +0000 (21:54 -0700)

Merge branch 'th/git-diffall'

* th/git-diffall:
contrib/diffall: fix cleanup trap on Windows
contrib/diffall: eliminate duplicate while loops
contrib/diffall: eliminate use of tar
contrib/diffall: create tmp dirs without mktemp
contrib/diffall: comment actual reason for 'cdup'

Merge branch 'th/doc-diff-submodule-option'Junio C Hamano Fri, 16 Mar 2012 04:54:30 +0000 (21:54 -0700)

Merge branch 'th/doc-diff-submodule-option'

* th/doc-diff-submodule-option:
Documentation/diff-options: reword description of --submodule option

fetch/receive: remove over-pessimistic connectivity... Junio C Hamano Thu, 15 Mar 2012 21:57:02 +0000 (14:57 -0700)

fetch/receive: remove over-pessimistic connectivity check

Git 1.7.8 introduced an object and history re-validation step after
"fetch" or "push" causes new history to be added to a receiving
repository. This is to protect a malicious server or pushing client from
corrupting the repository by taking advantage of an existing corrupt
object that is unconnected to existing history.

But this check is way over-pessimistic. During "fetch" or "receive-pack"
(the server side of "push"), unpack-objects and index-pack already
validate individual objects that are received, and the only thing we would
want to catch are corrupted objects that already happen to exist in our
repository but are not referenced from our refs. Such objects must have
been written by an earlier run of our codepaths that write out loose
objects or packfiles, and they must have done the validation of individual
objects when they did so. The only thing left to worry about is the
connectivity integrity, which can be checked with "rev-list --objects",
which is much cheaper. We have been paying the 5x to 8x runtime overhead
the --verify-objects often adds for no real gain.

Revert check_everything_connected() not to use this over-pessimistic
check.

Credit goes to Nguyễn Thái Ngọc Duy, who originally identified the
performance regression and endured multiple rounds of reviews to fix it.

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

Documentation/difftool: add deltawalker to list of... Tim Henigan Thu, 15 Mar 2012 16:28:26 +0000 (12:28 -0400)

Documentation/difftool: add deltawalker to list of valid diff tools

deltawalker has been supported since 284a126c3ef3, but was not added
to the list of valid diff tools reported by 'git difftool --help'.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clean: preserve nested git worktree in subdirectoriesJunio C Hamano Thu, 15 Mar 2012 08:04:12 +0000 (01:04 -0700)

clean: preserve nested git worktree in subdirectories

remove_dir_recursively() has a check to avoid removing the directory it
was asked to remove without recursing into it and report success when the
directory is the top level of a working tree of a nested git repository,
to protect such a repository from "clean -f" (without double -f). If a
working tree of a nested git repository is in a subdirectory of a toplevel
project, however, this protection did not apply by mistake; we forgot to
pass the REMOVE_DIR_KEEP_NESTED_GIT down to the recursive removal
codepath.

This requires us to also teach the higher level not to remove the
directory it is asked to remove, when the recursed invocation did not
remove the directory it was asked to remove due to a nested git
repository, as it is not an error to leave the parent directories of such
a nested repository.

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

notes-merge: Don't remove .git/NOTES_MERGE_WORKTREE... Johan Herland Thu, 15 Mar 2012 14:58:56 +0000 (15:58 +0100)

notes-merge: Don't remove .git/NOTES_MERGE_WORKTREE; it may be the user's cwd

When a manual notes merge is committed or aborted, we need to remove the
temporary worktree at .git/NOTES_MERGE_WORKTREE. However, removing the
entire directory is not good if the user ran the 'git notes merge
--commit/--abort' from within that directory. On Windows, the directory
removal would simply fail, while on POSIX systems, users would suddenly
find themselves in an invalid current directory.

Therefore, instead of deleting the entire directory, we delete everything
_within_ the directory, and leave the (empty) directory in place.

This would cause a subsequent notes merge to abort, complaining about a
previous - unfinished - notes merge (due to the presence of
.git/NOTES_MERGE_WORKTREE), so we also need to adjust this check to only
trigger when .git/NOTES_MERGE_WORKTREE is non-empty.

Finally, adjust the t3310 manual notes merge testcases to correctly handle
the existence of an empty .git/NOTES_MERGE_WORKTREE directory.

Inspired-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

notes-merge: use opendir/readdir instead of using read_... Johan Herland Mon, 12 Mar 2012 14:57:13 +0000 (15:57 +0100)

notes-merge: use opendir/readdir instead of using read_directory()

notes_merge_commit() only needs to list all entries (non-recursively)
under a directory, which can be easily accomplished with
opendir/readdir and would be more lightweight than read_directory().

read_directory() is designed to list paths inside a working
directory. Using it outside of its scope may lead to undesired effects.

Apparently, one of the undesired effects of read_directory() is that it
doesn't deal with being given absolute paths. This creates problems for
notes_merge_commit() when git_path() returns an absolute path, which
happens when the current working directory is in a subdirectory of the
.git directory.

Originally-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Updated-by: Johan Herland <johan@herland.net>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3310: illustrate failure to "notes merge --commit... Johan Herland Mon, 12 Mar 2012 14:57:12 +0000 (15:57 +0100)

t3310: illustrate failure to "notes merge --commit" inside $GIT_DIR/

The 'git notes merge' command expected to be run from the working
tree of the project being annotated, and did not anticipate getting
run inside $GIT_DIR/.

However, because we use $GIT_DIR/NOTES_MERGE_WORKTREE as a temporary
working space for the user to work on resolving conflicts, it is not
unreasonable for a user to run "git notes merge --commit" there. But
the command fails to do so.

Found-by: David Bremner <david@tethera.net>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remove_dir_recursively(): Add flag for skipping removal... Junio C Hamano Thu, 15 Mar 2012 14:58:54 +0000 (15:58 +0100)

remove_dir_recursively(): Add flag for skipping removal of toplevel dir

Add the REMOVE_DIR_KEEP_TOPLEVEL flag to remove_dir_recursively() for
deleting everything inside the given directory, but _not_ the given
directory itself.

Note that this does not pass the REMOVE_DIR_KEEP_NESTED_GIT flag, if set,
to the recursive invocations of remove_dir_recursively(). It is likely to
be a a bug that has been present since REMOVE_DIR_KEEP_NESTED_GIT was
introduced (a0f4afb), but this commit keeps the same behaviour for now.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0303: resurrect commit message as test documentationZbigniew Jędrzejewski-Szmek Thu, 15 Mar 2012 11:08:01 +0000 (12:08 +0100)

t0303: resurrect commit message as test documentation

The commit message which added those tests (861444f 't: add test
harness for external credential helpers' 2011-12-10) provided nice
documentation in the commit message. Let's make it more visible
by putting it in the test description.

The documentation is updated to reflect the fact that
GIT_TEST_CREDENTIAL_HELPER must be set for
GIT_TEST_CREDENTIAL_HELPER_TIMEOUT to be used
and GIT_TEST_CREDENTIAL_HELPER_SETUP can be used.

Based-on-commit-message-by: Jeff King <peff@peff.net>
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t0303: immediately bail out w/o GIT_TEST_CREDENTIAL_HELPERZbigniew Jędrzejewski-Szmek Thu, 15 Mar 2012 11:08:00 +0000 (12:08 +0100)

t0303: immediately bail out w/o GIT_TEST_CREDENTIAL_HELPER

t0300-credential-helpers.sh requires GIT_TEST_CREDENTIAL_HELPER to be
configured to do something sensible. If it is not set, prove will say:
./t0303-credential-external.sh .. skipped: (no reason given)
which isn't very nice.

Use skip_all="..." && test_done to bail out immediately and provide a
nicer message. In case GIT_TEST_CREDENTIAL_HELPER is set, but the
timeout tests are skipped, mention GIT_TEST_CREDENTIAL_HELPER_TIMEOUT.

Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.10-rc1 v1.7.10-rc1Junio C Hamano Wed, 14 Mar 2012 22:38:47 +0000 (15:38 -0700)

Git 1.7.10-rc1

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

contrib/diffall: fix cleanup trap on WindowsTim Henigan Wed, 14 Mar 2012 16:38:06 +0000 (12:38 -0400)

contrib/diffall: fix cleanup trap on Windows

Prior to this commit, the cleanup trap that removes the tmp dir
created by the script would fail on Windows. The error was silently
ignored by the script.

On Windows, a directory cannot be removed while it is the working
directory of the process (thanks to Johannes Sixt on the Git list
for this info [1]).

This commit eliminates the 'cd' into the tmp directory that caused
the error.

[1]: http://article.gmane.org/gmane.comp.version-control.git/193086

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/diffall: eliminate duplicate while loopsTim Henigan Wed, 14 Mar 2012 16:38:05 +0000 (12:38 -0400)

contrib/diffall: eliminate duplicate while loops

There were 3 instances of a 'while read; do' that used identical logic
to populate '/tmp/right_dir'. This commit groups them into a single loop.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/diffall: eliminate use of tarTim Henigan Wed, 14 Mar 2012 16:38:04 +0000 (12:38 -0400)

contrib/diffall: eliminate use of tar

The 'tar' utility is not available on all platforms (some only support
'gnutar'). An earlier commit created a work-around for this problem,
but a better solution is to eliminate the use of 'tar' completely.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/diffall: create tmp dirs without mktempTim Henigan Wed, 14 Mar 2012 16:38:03 +0000 (12:38 -0400)

contrib/diffall: create tmp dirs without mktemp

mktemp is not available on all platforms. Instead of littering the code
with a work-around, this commit replaces mktemp with a one-line Perl
script.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/diffall: comment actual reason for 'cdup'Tim Henigan Wed, 14 Mar 2012 16:38:02 +0000 (12:38 -0400)

contrib/diffall: comment actual reason for 'cdup'

The comment from an earlier commit did not reflect the actual reason this
operation is needed.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: tweak a _copy_ of diff_options with word-diffThomas Rast Wed, 14 Mar 2012 18:24:09 +0000 (19:24 +0100)

diff: tweak a _copy_ of diff_options with word-diff

When using word diff, the code sets the word_regex from various
defaults if it was not set already. The problem is that it does this
on the original diff_options, which will also be used in subsequent
diffs.

This means that when the word_regex is not given on the command line,
only the first diff for which a setting for word_regex (either from
attributes or diff.wordRegex) ever takes effect. This value then
propagates to the rest of the diff runs and in particular prevents
further attribute lookups.

Fix the problem of changing diff state once and for all, by working
with a _copy_ of the diff_options.

Noticed-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: refactor the word-diff setup from builtin_diff_cmdThomas Rast Wed, 14 Mar 2012 18:24:08 +0000 (19:24 +0100)

diff: refactor the word-diff setup from builtin_diff_cmd

Quite a chunk of builtin_diff_cmd deals with word-diff setup, defaults
and such. This makes the function a bit hard to read, but is also
asymmetric because the corresponding teardown lives in free_diff_words_data
already.

Refactor into a new function init_diff_words_data. For simplicity,
also shuffle around some functions it depends on.

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

t4034: diff.*.wordregex should not be "sticky" in ... Johannes Sixt Wed, 14 Mar 2012 19:50:21 +0000 (20:50 +0100)

t4034: diff.*.wordregex should not be "sticky" in --word-diff

The test case applies a custom wordRegex to one file in a diff, and expects
that the default word splitting applies to the second file in the diff.
But the custom wordRegex is also incorrectly used for the second file.

Helped-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/diff-options: reword description of ... Tim Henigan Wed, 14 Mar 2012 17:00:55 +0000 (13:00 -0400)

Documentation/diff-options: reword description of --submodule option

The previous description was confusing. This rewrite makes it easier
to understand.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fmt-merge-msg: show those involved in a merged seriesJunio C Hamano Tue, 13 Mar 2012 17:00:00 +0000 (10:00 -0700)

fmt-merge-msg: show those involved in a merged series

As we already walk the history of the branch that gets merged to
come up with a short log, let's label it with names of the primary
authors, so that the user who summarizes the merge can easily give
credit to them in the log message.

Also infer the names of "lieutents" to help integrators at higher
level of the food-chain to give credit to them, by counting:

* The committer of the 'tip' commit that is merged
* The committer of merge commits that are merged

Often the first one gives the owner of the history being pulled, but
his last pull from his sublieutenants may have been a fast-forward,
in which case the first one would not be. The latter rule will
count the integrator of the history, so together it might be a
reasonable heuristics.

There are two special cases:

- The "author" credit is omitted when the series is written solely
by the same author who is making the merge. The name can be seen
on the "Author" line of the "git log" output to view the log
message anyway.

- The "lieutenant" credit is omitted when there is only one key
committer in the merged branch and it is the committer who is
making the merge. Typically this applies to the case where the
developer merges his own branch.

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

diffstat summary line varies by locale: miscellanyJonathan Nieder Tue, 13 Mar 2012 05:05:54 +0000 (00:05 -0500)

diffstat summary line varies by locale: miscellany

These changes are in the same spirit as the six patches that
precede them, but they haven't been split into individually
justifiable patches yet.

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

test: use numstat instead of diffstat in binary-diff... Jonathan Nieder Tue, 13 Mar 2012 05:02:19 +0000 (00:02 -0500)

test: use numstat instead of diffstat in binary-diff test

git's --stat output is intended for humans and since v1.7.9.2~13
(2012-02-01) varies by locale. The tests in this script using "apply
--stat" are meant to check two things:

- how binary file changes are accounted for and printed in
git's diffstat format

- that "git apply" can parse the various forms of binary diff

Split these two kinds of check into separate tests, and use --numstat
instead of --stat in the latter. This way, we lose less test coverage
when git is being run without writing its output in the C locale (for
example because GETTEXT_POISON is enabled) and there are fewer tests
to change if the --stat output needs to be tweaked again.

While at it, use commands separated by && that read and write to
temporary files in place of pipelines so segfaults and other failures
in the upstream of the processing pipeline don't get hidden.

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

test: use --numstat instead of --stat in "git stash... Jonathan Nieder Tue, 13 Mar 2012 05:01:32 +0000 (00:01 -0500)

test: use --numstat instead of --stat in "git stash show" tests

git's diff --stat output is intended for human consumption and
since v1.7.9.2~13 (2012-02-01) varies by locale. Add a test checking
that git stash show defaults to --stat and tweak the rest of the
"stash show" tests that showed a diffstat to use numstat.

This way, there are fewer tests to tweak if the diffstat format
changes again. This also improves test coverage when running tests
with git configured not to write its output in the C locale (e.g.,
via GETTEXT_POISON=Yes).

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

test: test cherry-pick functionality and output separatelyJonathan Nieder Tue, 13 Mar 2012 05:00:36 +0000 (00:00 -0500)

test: test cherry-pick functionality and output separately

Since v1.7.3-rc0~26^2~9 (revert: report success when using option
--strategy, 2010-07-14), the cherry-pick-many-commits test checks the
format of output written to the terminal during a cherry-pick sequence
in addition to the functionality. There is no reason those have to
be checked in the same test, though, and it has some downsides:

- when progress output is broken, the test result does not convey
whether the functionality was also broken or not

- it is not immediately obvious when reading that these checks are
meant to prevent regressions in details of the output format and
are not just a roundabout way to check functional details like the
number of commits produced

- there is a temptation to include the same kind of output checking
for every new cherry-pick test, which would make future changes
to the output unnecessarily difficult

Put the tests from v1.7.3-rc0~26^2~9 in separate assertions, following
the principle "test one feature at a time".

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

test: modernize funny-names test styleJonathan Nieder Tue, 13 Mar 2012 04:59:52 +0000 (23:59 -0500)

test: modernize funny-names test style

This is one of the early tests, so it uses a style that by modern
standards can be hard to read. Tweak it to:

- clearly declare what assertion each test is designed to check

- mark tests that create state later tests will depend on with the
word "setup" so people writing or running tests know the others
can be skipped or reordered safely

- put commands that populate a file with expected output inside
the corresponding test stanza, so it is easier to see by eye
where each test begins and ends

- instead of pipelines, use commands that read and write a
temporary file, so bugs causing commands to segfault or produce
the wrong exit status can be caught.

More cosmetic changes:

- put the opening quote starting each test on the same line as the
test_expect_* invocation, and indent the commands in each test
with a single tab

- end the test early if the underlying filesystem cannot
accomodate the filenames we use, instead of marking all tests
with the same TABS_IN_FILENAMES prerequisite.

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

test: use numstat instead of diffstat in funny-names... Jonathan Nieder Tue, 13 Mar 2012 04:58:59 +0000 (23:58 -0500)

test: use numstat instead of diffstat in funny-names test

This test script checks that git's plumbing commands quote filenames
with special characters like space, tab, and double-quote
appropriately in their input and output.

Since commit v1.7.9.2~13 (Use correct grammar in diffstat summary
line, 2012-02-01), the final "1 file changed, 1 insertion(+)" line
from diffstats is translatable, meaning tests that rely on exact "git
apply --stat" output have to be skipped when git is not configured to
produce output in the C locale (for example, when GETTEXT_POISON is
enabled). So:

- Tweak the three "git apply --stat" tests that check "git apply"'s
input parsing to use --numstat instead.

--numstat output is more reliable, does not vary with locale, and
is itself easier to parse. These tests are mainly about how "git
apply" parses its input so this should not result in much loss of
coverage.

- Add a new "apply --stat" test to check the quoting in --stat output
format.

This wins back a little of the test coverage lost with the patch
"test: use test_i18ncmp to check --stat output" when GETTEXT_POISON is
enabled.

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

test: use test_i18ncmp when checking --stat outputJonathan Nieder Tue, 13 Mar 2012 04:54:05 +0000 (23:54 -0500)

test: use test_i18ncmp when checking --stat output

Ever since v1.7.9.2~13 (2012-02-01), git's diffstat-style summary line
produced by "git apply --stat", "git diff --stat", and "git commit"
varies by locale, producing test failures when GETTEXT_POISON is set.

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

Merge branch 'jc/i18n-shell-script-gettext'Junio C Hamano Tue, 13 Mar 2012 19:36:28 +0000 (12:36 -0700)

Merge branch 'jc/i18n-shell-script-gettext'

The auto detection was testing if a fixed string that is known to be
non-empty is empty by mistake.

* jc/i18n-shell-script-gettext:
i18n: fix auto detection of gettext scheme for shell scripts

Merge branch 'jc/maint-undefined-i18n-observation-test'Junio C Hamano Tue, 13 Mar 2012 19:36:09 +0000 (12:36 -0700)

Merge branch 'jc/maint-undefined-i18n-observation-test'

It was unclear what a test in t0204 wanted to check; it turns out
that it was only to observe an undefined behaviour of the system,
and did not anticipate one kind of reasonable error behaviour.

* jc/maint-undefined-i18n-observation-test:
t0204: clarify the "observe undefined behaviour" test

Merge branch 'ms/maint-config-error-at-eol-linecount'Junio C Hamano Tue, 13 Mar 2012 19:35:53 +0000 (12:35 -0700)

Merge branch 'ms/maint-config-error-at-eol-linecount'

When "git config" diagnoses an error in a configuration file and
shows the line number for the offending line, it miscounted if the
error was at the end of line.

By Martin Stenberg
* ms/maint-config-error-at-eol-linecount:
config: report errors at the EOL with correct line number

Conflicts:
t/t1300-repo-config.sh

Merge branch 'ph/rerere-doc'Junio C Hamano Tue, 13 Mar 2012 19:35:22 +0000 (12:35 -0700)

Merge branch 'ph/rerere-doc'

By Phil Hord
* ph/rerere-doc:
rerere: Document 'rerere remaining'

am: officially deprecate -b/--binary optionJunio C Hamano Tue, 13 Mar 2012 18:38:27 +0000 (11:38 -0700)

am: officially deprecate -b/--binary option

We have had these options as harmless no-op for more than 3 years without
officially deprecating them. Let's announce the deprecation and start
warning against their use, but without failing the command just not yet,
so that we can later repurpose the option if we want to in the future.

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

Update draft release notes to 1.7.10 before -rc1Junio C Hamano Mon, 12 Mar 2012 22:59:06 +0000 (15:59 -0700)

Update draft release notes to 1.7.10 before -rc1

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

Merge branch 'az/verify-tag-use-gpg-config'Junio C Hamano Mon, 12 Mar 2012 22:55:53 +0000 (15:55 -0700)

Merge branch 'az/verify-tag-use-gpg-config'

"git tag -s" honored "gpg.program" configuration variable since
1.7.9, but "git tag -v" and "git verify-tag" didn't.

By Alex Zepeda
* az/verify-tag-use-gpg-config:
verify-tag: Parse GPG configuration options.

Sync with 1.7.9.4Junio C Hamano Mon, 12 Mar 2012 22:54:21 +0000 (15:54 -0700)

Sync with 1.7.9.4

Git 1.7.9.4 v1.7.9.4Junio C Hamano Mon, 12 Mar 2012 22:52:52 +0000 (15:52 -0700)

Git 1.7.9.4

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