gitweb.git
mingw: emulate write(2) that fails with a EPIPEJohannes Schindelin Thu, 17 Dec 2015 17:08:15 +0000 (18:08 +0100)

mingw: emulate write(2) that fails with a EPIPE

On Windows, when writing to a pipe fails, errno is always
EINVAL. However, Git expects it to be EPIPE.

According to the documentation, there are two cases in which write()
triggers EINVAL: the buffer is NULL, or the length is odd but the mode
is 16-bit Unicode (the broken pipe is not mentioned as possible cause).
Git never sets the file mode to anything but binary, therefore we know
that errno should actually be EPIPE if it is EINVAL and the buffer is
not NULL.

See https://msdn.microsoft.com/en-us/library/1570wh78.aspx for more
details.

This works around t5571.11 failing with v2.6.4 on Windows.

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

Merge git://ozlabs.org/~paulus/gitkJunio C Hamano Mon, 21 Dec 2015 16:56:16 +0000 (08:56 -0800)

Merge git://ozlabs.org/~paulus/gitk

* git://ozlabs.org/~paulus/gitk:
gitk: sv.po: Update Swedish translation (311t)
gitk: Let .bleft.mid widgets 'breathe'
gitk: Match ttk fonts to gitk fonts
gitk: Update revision date in Japanese PO file
gitk: Update "Language:" header
gitk: Improve translation message
gitk: Remove unused line
gitk: Update year
gitk: Change last translator line
gitk: Update fuzzy messages
gitk: Update Japanese translation
gitk: Fix translation around copyright sign
gitk: Update Japanese translation
gitk: Fix wrong translation
gitk: Translate Japanese catalog
gitk: Translate more to Japanese catalog
gitk: Update Japanese message catalog
gitk: Re-sync line number in Japanese message catalogue
gitk: Color name update

l10n: zh_CN: for git v2.7.0 l10n round 1Jiang Xin Sun, 15 Nov 2015 23:02:11 +0000 (07:02 +0800)

l10n: zh_CN: for git v2.7.0 l10n round 1

Update 66 translations (2477t0f0u) for git v2.7.0-rc0.

Reviewed-by: Ray Chen <oldsharp@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'master' of git://github.com/alexhenrie... Jiang Xin Sun, 20 Dec 2015 11:32:26 +0000 (19:32 +0800)

Merge branch 'master' of git://github.com/alexhenrie/git-po

* 'master' of git://github.com/alexhenrie/git-po:
l10n: ca.po: update translation

Merge branch 'fr_v2.7.0' of git://github.com/jnavila/gitJiang Xin Sun, 20 Dec 2015 11:31:47 +0000 (19:31 +0800)

Merge branch 'fr_v2.7.0' of git://github.com/jnavila/git

* 'fr_v2.7.0' of git://github.com/jnavila/git:
l10n: fr v2.7.0 round 1 (2477t)

Merge branch 'master' of git://github.com/alshopov... Jiang Xin Sun, 20 Dec 2015 11:30:52 +0000 (19:30 +0800)

Merge branch 'master' of git://github.com/alshopov/git-po

* 'master' of git://github.com/alshopov/git-po:
l10n: Updated Bulgarian translation of git (2477t,0f,0u)

l10n: ca.po: update translationAlex Henrie Sat, 19 Dec 2015 06:38:23 +0000 (23:38 -0700)

l10n: ca.po: update translation

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>

Merge branch 'ja.po' of https://github.com/qykth-git... Paul Mackerras Sat, 19 Dec 2015 02:33:16 +0000 (13:33 +1100)

Merge branch 'ja.po' of https://github.com/qykth-git/gitk

Merge branch 'color-fix' of https://github.com/qykth... Paul Mackerras Sat, 19 Dec 2015 02:29:35 +0000 (13:29 +1100)

Merge branch 'color-fix' of https://github.com/qykth-git/gitk

l10n: fr v2.7.0 round 1 (2477t)Jean-Noel Avila Fri, 18 Dec 2015 21:00:37 +0000 (22:00 +0100)

l10n: fr v2.7.0 round 1 (2477t)

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

l10n: Updated Bulgarian translation of git (2477t,0f,0u)Alexander Shopov Sun, 13 Dec 2015 16:55:45 +0000 (18:55 +0200)

l10n: Updated Bulgarian translation of git (2477t,0f,0u)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>

l10n: sv.po: Update Swedish translation (2477t0f0u)Peter Krefting Fri, 18 Dec 2015 08:09:41 +0000 (09:09 +0100)

l10n: sv.po: Update Swedish translation (2477t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

revision.c: propagate tag names from pending arrayJeff King Thu, 17 Dec 2015 06:47:07 +0000 (01:47 -0500)

revision.c: propagate tag names from pending array

When we unwrap a tag to find its commit for a traversal, we
do not propagate the "name" field of the tag in the pending
array (i.e., the ref name the user gave us in the first
place) to the commit (instead, we use an empty string). This
means that "git log --source" will never show the tag-name
for commits we reach through it.

This was broken in 2073949 (traverse_commit_list: support
pending blobs/trees with paths, 2014-10-15). That commit
tried to be careful and avoid propagating the path
information for a tag (which would be nonsensical) to trees
and blobs. But it should not have cut off the "name" field,
which should carry forward to children.

Note that this does mean that the "name" field will carry
forward to blobs and trees, too. Whereas prior to 2073949,
we always gave them an empty string. This is the right thing
to do, but in practice no callers probably use it (since now
we have an explicit separate "path" field, which was the
point of 2073949).

We add tests here not only for the broken case, but also a
basic sanity test of "log --source" in general, which did
not have any coverage in the test suite.

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

Merge branch 'fr/rebase-i-continue-preserve-options'Junio C Hamano Wed, 16 Dec 2015 22:42:52 +0000 (14:42 -0800)

Merge branch 'fr/rebase-i-continue-preserve-options'

"git rebase -i" started with merge strategy options did not
propagate them upon "git rebase --continue".

* fr/rebase-i-continue-preserve-options:
rebase -i: remember merge options beyond continue actions

Merge branch 'maint'Junio C Hamano Wed, 16 Dec 2015 22:40:30 +0000 (14:40 -0800)

Merge branch 'maint'

* maint:
credential-store: don't pass strerror to die_errno()

push: add '-d' as shorthand for '--delete'Patrick Steinhardt Mon, 14 Dec 2015 15:23:04 +0000 (16:23 +0100)

push: add '-d' as shorthand for '--delete'

"git push" takes "--delete" but does not take a short form "-d",
unlike "git branch" which does take both. Bring consistency
between them.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodules: allow parallel fetching, add tests and... Stefan Beller Wed, 16 Dec 2015 00:04:12 +0000 (16:04 -0800)

submodules: allow parallel fetching, add tests and documentation

This enables the work of the previous patches.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch_populated_submodules: use new parallel job processingStefan Beller Wed, 16 Dec 2015 00:04:11 +0000 (16:04 -0800)

fetch_populated_submodules: use new parallel job processing

In a later patch we enable parallel processing of submodules, this
only adds the possibility for it. So this change should not change
any user facing behavior.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

run-command: add an asynchronous parallel child processorStefan Beller Wed, 16 Dec 2015 00:04:10 +0000 (16:04 -0800)

run-command: add an asynchronous parallel child processor

This allows to run external commands in parallel with ordered output
on stderr.

If we run external commands in parallel we cannot pipe the output directly
to the our stdout/err as it would mix up. So each process's output will
flow through a pipe, which we buffer. One subprocess can be directly
piped to out stdout/err for a low latency feedback to the user.

Example:
Let's assume we have 5 submodules A,B,C,D,E and each fetch takes a
different amount of time as the different submodules vary in size, then
the output of fetches in sequential order might look like this:

time -->
output: |---A---| |-B-| |-------C-------| |-D-| |-E-|

When we schedule these submodules into maximal two parallel processes,
a schedule and sample output over time may look like this:

process 1: |---A---| |-D-| |-E-|

process 2: |-B-| |-------C-------|

output: |---A---|B|---C-------|DE

So A will be perceived as it would run normally in the single child
version. As B has finished by the time A is done, we can dump its whole
progress buffer on stderr, such that it looks like it finished in no
time. Once that is done, C is determined to be the visible child and
its progress will be reported in real time.

So this way of output is really good for human consumption, as it only
changes the timing, not the actual output.

For machine consumption the output needs to be prepared in the tasks,
by either having a prefix per line or per block to indicate whose tasks
output is displayed, because the output order may not follow the
original sequential ordering:

|----A----| |--B--| |-C-|

will be scheduled to be all parallel:

process 1: |----A----|
process 2: |--B--|
process 3: |-C-|
output: |----A----|CB

This happens because C finished before B did, so it will be queued for
output before B.

To detect when a child has finished executing, we check interleaved
with other actions (such as checking the liveliness of children or
starting new processes) whether the stderr pipe still exists. Once a
child closed its stderr stream, we assume it is terminating very soon,
and use `finish_command()` from the single external process execution
interface to collect the exit status.

By maintaining the strong assumption of stderr being open until the
very end of a child process, we can avoid other hassle such as an
implementation using `waitpid(-1)`, which is not implemented in Windows.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sigchain: add command to pop all common signalsStefan Beller Wed, 16 Dec 2015 00:04:09 +0000 (16:04 -0800)

sigchain: add command to pop all common signals

The new method removes all common signal handlers that were installed
by sigchain_push.

CC: Jeff King <peff@peff.net>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

strbuf: add strbuf_read_once to read without blockingStefan Beller Wed, 16 Dec 2015 00:04:08 +0000 (16:04 -0800)

strbuf: add strbuf_read_once to read without blocking

The new call will read from a file descriptor into a strbuf once. The
underlying call xread is just run once. xread only reattempts
reading in case of EINTR, which makes it suitable to use for a
nonblocking read.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

xread: poll on non blocking fdsStefan Beller Wed, 16 Dec 2015 00:04:07 +0000 (16:04 -0800)

xread: poll on non blocking fds

The man page of read(2) says:

EAGAIN The file descriptor fd refers to a file other than a socket
and has been marked nonblocking (O_NONBLOCK), and the read
would block.

EAGAIN or EWOULDBLOCK
The file descriptor fd refers to a socket and has been marked
nonblocking (O_NONBLOCK), and the read would block. POSIX.1-2001
allows either error to be returned for this case, and does not
require these constants to have the same value, so a portable
application should check for both possibilities.

If we get an EAGAIN or EWOULDBLOCK the fd must have set O_NONBLOCK.
As the intent of xread is to read as much as possible either until the
fd is EOF or an actual error occurs, we can ease the feeder of the fd
by not spinning the whole time, but rather wait for it politely by not
busy waiting.

We should not care if the call to poll failed, as we're in an infinite
loop and can only get out with the correct read().

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

submodule.c: write "Fetching submodule <foo>" to stderrJonathan Nieder Wed, 16 Dec 2015 00:04:06 +0000 (16:04 -0800)

submodule.c: write "Fetching submodule <foo>" to stderr

The "Pushing submodule <foo>" progress output correctly goes to
stderr, but "Fetching submodule <foo>" is going to stdout by
mistake. Fix it to write to stderr.

Noticed while trying to implement a parallel submodule fetch. When
this particular output line went to a different file descriptor, it
was buffered separately, resulting in wrongly interleaved output if
we copied it to the terminal naively.

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

grep: add --threads=<num> option and grep.threads confi... Victor Leschuk Tue, 15 Dec 2015 15:31:39 +0000 (18:31 +0300)

grep: add --threads=<num> option and grep.threads configuration

"git grep" can now be configured (or told from the command line) how
many threads to use when searching in the working tree files.

Signed-off-by: Victor Leschuk <vleschuk@accesssoftek.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: add missing phony targetElia Pinto Tue, 15 Dec 2015 15:21:00 +0000 (15:21 +0000)

Makefile: add missing phony target

Add some missing phony target to Makefile.

Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Helped-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sg/lock-file-commit-error' into maintJunio C Hamano Wed, 16 Dec 2015 18:27:22 +0000 (10:27 -0800)

Merge branch 'sg/lock-file-commit-error' into maint

* sg/lock-file-commit-error:
credential-store: don't pass strerror to die_errno()

credential-store: don't pass strerror to die_errno()SZEDER Gábor Wed, 16 Dec 2015 11:22:55 +0000 (12:22 +0100)

credential-store: don't pass strerror to die_errno()

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

blame: add support for --[no-]progress optionEdmundo Carmona Antoranz Sun, 13 Dec 2015 00:51:03 +0000 (18:51 -0600)

blame: add support for --[no-]progress option

Teach the command to show progress output when it takes long time to
produce the first line of output; this option cannot be used with
"--incremental" or "--porcelain" options.

git-annotate inherits the option as well.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Edmundo Carmona Antoranz <eantoranz@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: slight refactoring to the code that disables... Victor Leschuk Tue, 15 Dec 2015 15:31:39 +0000 (18:31 +0300)

grep: slight refactoring to the code that disables threading

When show-in-pager option is used, threading is unconditionally
disabled, but this happened much earlier than the code that
determines the use of threading based on the operand (i.e. we do not
thread search in the object database). Consolidate the code to
disable threading to just one place.

Signed-off-by: Victor Leschuk <vleschuk@accesssoftek.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: allow threading even on a single-core machineVictor Leschuk Tue, 15 Dec 2015 15:31:39 +0000 (18:31 +0300)

grep: allow threading even on a single-core machine

Earlier we disabled threading when online_cpus() said "1", but on a
filesystem with long latency (or in a cold cache situation), using
multiple threads to drive I/O in parallel would improve performance
even on a single-core machines.

Signed-off-by: Victor Leschuk <vleschuk@accesssoftek.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: check that header line has expected formatbrian m. carlson Tue, 15 Dec 2015 01:52:05 +0000 (01:52 +0000)

format-patch: check that header line has expected format

The format of the "From " header line is very specific to allow
utilities to detect Git-style patches. Add a test that the patches
created are in the expected format.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: add an option to suppress commit hashbrian m. carlson Tue, 15 Dec 2015 01:52:04 +0000 (01:52 +0000)

format-patch: add an option to suppress commit hash

Oftentimes, patches created by git format-patch will be stored in
version control or compared with diff. In these cases, two otherwise
identical patches can have different commit hashes, leading to diff
noise. Teach git format-patch a --zero-commit option that instead
produces an all-zero hash to avoid this diff noise.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.7-rc1 v2.7.0-rc1Junio C Hamano Tue, 15 Dec 2015 17:47:11 +0000 (09:47 -0800)

Git 2.7-rc1

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

Sync with maintJunio C Hamano Tue, 15 Dec 2015 17:45:06 +0000 (09:45 -0800)

Sync with maint

Update draft release notes to 2.6.5Junio C Hamano Tue, 15 Dec 2015 17:43:01 +0000 (09:43 -0800)

Update draft release notes to 2.6.5

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

Merge branch 'dt/fsck-verify-pack-error' into maintJunio C Hamano Tue, 15 Dec 2015 17:42:16 +0000 (09:42 -0800)

Merge branch 'dt/fsck-verify-pack-error' into maint

The exit code of git-fsck didnot reflect some types of errors found
in packed objects, which has been corrected.

* dt/fsck-verify-pack-error:
verify_pack: do not ignore return value of verification function

Merge branch 'ep/ident-with-getaddrinfo' into maintJunio C Hamano Tue, 15 Dec 2015 17:42:01 +0000 (09:42 -0800)

Merge branch 'ep/ident-with-getaddrinfo' into maint

A fix-up for recent topic.

* ep/ident-with-getaddrinfo:
ident: fix undefined variable when NO_IPV6 is set
ident.c: add support for IPv6

Merge branch 'ls/p4-keep-empty-commits' into maintJunio C Hamano Tue, 15 Dec 2015 17:34:18 +0000 (09:34 -0800)

Merge branch 'ls/p4-keep-empty-commits' into maint

"git p4" used to import Perforce CLs that touch only paths outside
the client spec as empty commits. It has been corrected to ignore
them instead, with a new configuration git-p4.keepEmptyCommits as a
backward compatibility knob.

* ls/p4-keep-empty-commits:
git-p4: add option to keep empty commits

Merge branch 'jk/send-email-complete-aliases'Junio C Hamano Tue, 15 Dec 2015 17:33:19 +0000 (09:33 -0800)

Merge branch 'jk/send-email-complete-aliases'

A fix-up for recent topic.

* jk/send-email-complete-aliases:
completion: fix completing unstuck email alias arguments

Merge branch 'ep/ident-with-getaddrinfo'Junio C Hamano Tue, 15 Dec 2015 17:33:19 +0000 (09:33 -0800)

Merge branch 'ep/ident-with-getaddrinfo'

A fix-up for recent topic.

* ep/ident-with-getaddrinfo:
ident: fix undefined variable when NO_IPV6 is set

Merge branch 'jk/prune-mtime' into maintJunio C Hamano Tue, 15 Dec 2015 17:27:11 +0000 (09:27 -0800)

Merge branch 'jk/prune-mtime' into maint

The helper used to iterate over loose object directories to prune
stale objects did not closedir() immediately when it is done with a
directory--a callback such as the one used for "git prune" may want
to do rmdir(), but it would fail on open directory on platforms
such as WinXP.

* jk/prune-mtime:
prune: close directory earlier during loose-object directory traversal

Merge branch 'ls/p4-keep-empty-commits'Junio C Hamano Tue, 15 Dec 2015 16:02:18 +0000 (08:02 -0800)

Merge branch 'ls/p4-keep-empty-commits'

"git p4" used to import Perforce CLs that touch only paths outside
the client spec as empty commits. It has been corrected to ignore
them instead, with a new configuration git-p4.keepEmptyCommits as a
backward compatibility knob.

* ls/p4-keep-empty-commits:
git-p4: add option to keep empty commits

Merge branch 'jk/prune-mtime'Junio C Hamano Tue, 15 Dec 2015 16:02:13 +0000 (08:02 -0800)

Merge branch 'jk/prune-mtime'

The helper used to iterate over loose object directories to prune
stale objects did not closedir() immediately when it is done with a
directory--a callback such as the one used for "git prune" may want
to do rmdir(), but it would fail on open directory on platforms
such as WinXP.

* jk/prune-mtime:
prune: close directory earlier during loose-object directory traversal

git-p4: failing test case for skipping changes with... Luke Diamand Sun, 13 Dec 2015 20:07:13 +0000 (20:07 +0000)

git-p4: failing test case for skipping changes with multiple depots

James Farwell reported that with multiple depots git-p4 would
skip changes.

http://article.gmane.org/gmane.comp.version-control.git/282297

Add a failing test case demonstrating the problem.

Signed-off-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: fix completing unstuck email alias argumentsSZEDER Gábor Sat, 12 Dec 2015 00:18:18 +0000 (01:18 +0100)

completion: fix completing unstuck email alias arguments

Completing unstuck form of email aliases doesn't quite work:

$ git send-email --to <TAB>
alice bob cecil
$ git send-email --to a<TAB>
alice bob cecil

While listing email aliases works as expected, the second case should
just complete to 'alice', but it keeps offering all email aliases
instead.

The cause for this behavior is that in this case we mistakenly tell
__gitcomp() explicitly that the current word to be completed is empty,
while in reality it is not. As a result __gitcomp() doesn't filter
out non-matching aliases, so all aliases end up being offered over and
over again.

Fix this by not passing the current word to be completed to
__gitcomp() and letting it go the default route and grab it from the
'$cur' variable. Don't pass empty prefix either, because it's assumed
to be empty when unspecified, so it's not necessary.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

push: add '--delete' flag to synopsisPatrick Steinhardt Mon, 14 Dec 2015 15:23:03 +0000 (16:23 +0100)

push: add '--delete' flag to synopsis

The delete flag is not mentioned in the synopsis of `git-push`.
Add the flag to make it more discoverable.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file.c: introduce a null_oid constantbrian m. carlson Sun, 6 Dec 2015 22:16:35 +0000 (22:16 +0000)

sha1_file.c: introduce a null_oid constant

null_oid is the struct object_id equivalent to null_sha1.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ident: fix undefined variable when NO_IPV6 is setJeff King Mon, 14 Dec 2015 20:52:41 +0000 (15:52 -0500)

ident: fix undefined variable when NO_IPV6 is set

Commit 00bce77 (ident.c: add support for IPv6, 2015-11-27)
moved the "gethostbyname" call out of "add_domainname" and
into the helper function "canonical_name". But when moving
the code, it forgot that the "buf" variable is passed as
"host" in the helper.

Reported-by: johan defries <johandefries@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ident: loosen getpwuid error in non-strict modeJeff King Thu, 10 Dec 2015 21:41:29 +0000 (16:41 -0500)

ident: loosen getpwuid error in non-strict mode

If the user has not specified an identity and we have to
turn to getpwuid() to find the username or gecos field, we
die immediately when getpwuid fails (e.g., because the user
does not exist). This is OK for making a commit, where we
have set IDENT_STRICT and would want to bail on bogus input.

But for something like a reflog, where the ident is "best
effort", it can be pain. For instance, even running "git
clone" with a UID that is not in /etc/passwd will result in
git barfing, just because we can't find an ident to put in
the reflog.

Instead of dying in xgetpwuid_self, we can instead return a
fallback value, and set a "bogus" flag. For the username in
an email, we already have a "default_email_is_bogus" flag.
For the name field, we introduce (and check) a matching
"default_name_is_bogus" flag. As a bonus, this means you now
get the usual "tell me who you are" advice instead of just a
"no such user" error.

No tests, as this is dependent on configuration outside of
git's control. However, I did confirm that it behaves
sensibly when I delete myself from the local /etc/passwd
(reflogs get written, and commits complain).

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

l10n: vi.po: Updated translation (2477t)Tran Ngoc Quan Sat, 12 Dec 2015 07:34:08 +0000 (14:34 +0700)

l10n: vi.po: Updated translation (2477t)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

gitk: sv.po: Update Swedish translation (311t)Peter Krefting Fri, 11 Dec 2015 08:49:21 +0000 (09:49 +0100)

gitk: sv.po: Update Swedish translation (311t)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Let .bleft.mid widgets 'breathe'Giuseppe Bilotta Tue, 8 Dec 2015 07:05:51 +0000 (08:05 +0100)

gitk: Let .bleft.mid widgets 'breathe'

The widgets on top of the diff window are very tightly packed. Make
them breathe a little by adding an 'i'-spaced padding between them.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Match ttk fonts to gitk fontsGiuseppe Bilotta Tue, 8 Dec 2015 07:05:50 +0000 (08:05 +0100)

gitk: Match ttk fonts to gitk fonts

The fonts set in setoptions aren't consistently picked up by ttk, which
uses its own predefined fonts. This is noticeable when switching
between using and not using ttk with custom fonts or in HiDPI settings
(where the default TTK fonts do _not_ respect tk sclaing).

Fix by mapping the ttk fontset to the one used by gitk internally.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

rebase -i: remember merge options beyond continue actionsFabian Ruch Fri, 11 Dec 2015 20:30:36 +0000 (21:30 +0100)

rebase -i: remember merge options beyond continue actions

If the user explicitly specified a merge strategy or strategy
options, continue to use that strategy/option after
"rebase --continue". Add a test of the corrected behavior.

If --merge is specified or implied by -s or -X, then "strategy and
"strategy_opts" are set to values from which "strategy_args" can be
derived; otherwise they are set to empty strings. Either way,
their values are propagated from one step of an interactive rebase
to the next via state files.

"do_merge", on the other hand, is *not* propagated to later steps of
an interactive rebase. Therefore, making the initialization of
"strategy_args" conditional on "do_merge" being set prevents later
steps of an interactive rebase from setting it correctly.

Luckily, we don't need the "do_merge" guard at all. If the rebase
was started without --merge, then "strategy" and "strategy_opts"
are both the empty string, which results in "strategy_args" also
being set to the empty string, which is just what we want in that
situation. So remove the "do_merge" guard and derive
"strategy_args" from "strategy" and "strategy_opts" every time.

Reported-by: Diogo de Campos <campos@esss.com.br>
Signed-off-by: Fabian Ruch <bafain@gmail.com>
Helped-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: remove 'git column' from porcelain commandsSZEDER Gábor Fri, 11 Dec 2015 12:05:00 +0000 (13:05 +0100)

completion: remove 'git column' from porcelain commands

'git column' is an internal helper, so it should not be offered on
'git <TAB>' along with porcelain commands.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update release notes to 2.7Junio C Hamano Fri, 11 Dec 2015 18:45:44 +0000 (10:45 -0800)

Update release notes to 2.7

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

Merge branch 'maint'Junio C Hamano Fri, 11 Dec 2015 19:19:43 +0000 (11:19 -0800)

Merge branch 'maint'

* maint:
Prepare for 2.6.5

Prepare for 2.6.5Junio C Hamano Fri, 11 Dec 2015 19:17:47 +0000 (11:17 -0800)

Prepare for 2.6.5

This back-merges hopefully the last batch of trivially correct fixes
to the 2.6.x maintenance track from the master branch.

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

Merge branch 'sn/null-pointer-arith-in-mark-tree-uninte... Junio C Hamano Fri, 11 Dec 2015 19:14:38 +0000 (11:14 -0800)

Merge branch 'sn/null-pointer-arith-in-mark-tree-uninteresting' into maint

mark_tree_uninteresting() has code to handle the case where it gets
passed a NULL pointer in its 'tree' parameter, but the function had
'object = &tree->object' assignment before checking if tree is
NULL. This gives a compiler an excuse to declare that tree will
never be NULL and apply a wrong optimization. Avoid it.

* sn/null-pointer-arith-in-mark-tree-uninteresting:
revision.c: fix possible null pointer arithmetic

Merge branch 'sg/lock-file-commit-error' into maintJunio C Hamano Fri, 11 Dec 2015 19:14:18 +0000 (11:14 -0800)

Merge branch 'sg/lock-file-commit-error' into maint

Cosmetic improvement to lock-file error messages.

* sg/lock-file-commit-error:
Make error message after failing commit_lock_file() less confusing

Merge branch 'cb/t3404-shellquote' into maintJunio C Hamano Fri, 11 Dec 2015 19:14:18 +0000 (11:14 -0800)

Merge branch 'cb/t3404-shellquote' into maint

* cb/t3404-shellquote:
t3404: fix quoting of redirect for some versions of bash

Merge branch 'sb/doc-submodule-sync-recursive' into... Junio C Hamano Fri, 11 Dec 2015 19:14:17 +0000 (11:14 -0800)

Merge branch 'sb/doc-submodule-sync-recursive' into maint

* sb/doc-submodule-sync-recursive:
document submodule sync --recursive

Merge branch 'nd/doc-check-ref-format-typo' into maintJunio C Hamano Fri, 11 Dec 2015 19:14:15 +0000 (11:14 -0800)

Merge branch 'nd/doc-check-ref-format-typo' into maint

* nd/doc-check-ref-format-typo:
git-check-ref-format.txt: typo, s/avoids/avoid/

Merge branch 'rs/show-branch-argv-array' into maintJunio C Hamano Fri, 11 Dec 2015 19:14:13 +0000 (11:14 -0800)

Merge branch 'rs/show-branch-argv-array' into maint

Code simplification.

* rs/show-branch-argv-array:
show-branch: use argv_array for default arguments

Merge branch 'rs/pop-commit' into maintJunio C Hamano Fri, 11 Dec 2015 19:14:12 +0000 (11:14 -0800)

Merge branch 'rs/pop-commit' into maint

Code simplification.

* rs/pop-commit:
use pop_commit() for consuming the first entry of a struct commit_list

Merge branch 'as/subtree-with-spaces' into maintJunio C Hamano Fri, 11 Dec 2015 19:14:11 +0000 (11:14 -0800)

Merge branch 'as/subtree-with-spaces' into maint

Update "git subtree" (in contrib/) so that it can take whitespaces
in the pathnames, not only in the in-tree pathname but the name of
the directory that the repository is in.

* as/subtree-with-spaces:
contrib/subtree: respect spaces in a repository path
t7900-subtree: test the "space in a subdirectory name" case

Merge branch 'jk/test-lint-forbid-when-finished-in... Junio C Hamano Fri, 11 Dec 2015 19:14:09 +0000 (11:14 -0800)

Merge branch 'jk/test-lint-forbid-when-finished-in-subshell' into maint

Because "test_when_finished" in our test framework queues the
clean-up tasks to be done in a shell variable, it should not be
used inside a subshell. Add a mechanism to allow 'bash' to catch
such uses, and fix the ones that were found.

* jk/test-lint-forbid-when-finished-in-subshell:
test-lib-functions: detect test_when_finished in subshell
t7800: don't use test_config in a subshell
test-lib-functions: support "test_config -C <dir> ..."
t5801: don't use test_when_finished in a subshell
t7610: don't use test_config in a subshell

Merge branch 'sn/null-pointer-arith-in-mark-tree-uninte... Junio C Hamano Fri, 11 Dec 2015 18:41:01 +0000 (10:41 -0800)

Merge branch 'sn/null-pointer-arith-in-mark-tree-uninteresting'

mark_tree_uninteresting() has code to handle the case where it gets
passed a NULL pointer in its 'tree' parameter, but the function had
'object = &tree->object' assignment before checking if tree is
NULL. This gives a compiler an excuse to declare that tree will
never be NULL and apply a wrong optimization. Avoid it.

* sn/null-pointer-arith-in-mark-tree-uninteresting:
revision.c: fix possible null pointer arithmetic

Merge branch 'sb/doc-submodule-sync-recursive'Junio C Hamano Fri, 11 Dec 2015 18:40:59 +0000 (10:40 -0800)

Merge branch 'sb/doc-submodule-sync-recursive'

* sb/doc-submodule-sync-recursive:
document submodule sync --recursive

Merge branch 'cb/t3404-shellquote'Junio C Hamano Fri, 11 Dec 2015 18:40:57 +0000 (10:40 -0800)

Merge branch 'cb/t3404-shellquote'

* cb/t3404-shellquote:
t3404: fix quoting of redirect for some versions of bash

Merge branch 'sg/lock-file-commit-error'Junio C Hamano Fri, 11 Dec 2015 18:40:54 +0000 (10:40 -0800)

Merge branch 'sg/lock-file-commit-error'

Cosmetic improvement to lock-file error messages.

* sg/lock-file-commit-error:
Make error message after failing commit_lock_file() less confusing

send-email: enable SSL level 1 debug outputJohn Keeping Thu, 3 Dec 2015 21:47:18 +0000 (21:47 +0000)

send-email: enable SSL level 1 debug output

If a server's certificate isn't accepted by send-email, the output is:

Unable to initialize SMTP properly. Check config and use --smtp-debug.

but adding --smtp-debug=1 just produces the same output since we don't
get as far as talking SMTP.

Turning on SSL debug at level 1 gives:

DEBUG: .../IO/Socket/SSL.pm:1796: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
DEBUG: .../IO/Socket/SSL.pm:673: fatal SSL error: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
DEBUG: .../IO/Socket/SSL.pm:1780: IO::Socket::IP configuration failed

IO::Socket::SSL defines level 1 debug as "print out errors from
IO::Socket::SSL and ciphers from Net::SSLeay". In fact, it aliases
Net::SSLeay::trace which is defined to guarantee silence at level 0 and
only emit error messages at level 1, so let's enable it by default.

The modification of warnings is needed to avoid a warning about:

Name "IO::Socket::SSL::DEBUG" used only once: possible typo

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed)Jiang Xin Fri, 11 Dec 2015 15:37:11 +0000 (23:37 +0800)

l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed)

Generate po/git.pot from v2.7.0-rc0 for git v2.7.0 l10n round 1.

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

Merge branch 'master' of git://github.com/git-l10n... Jiang Xin Fri, 11 Dec 2015 15:33:45 +0000 (23:33 +0800)

Merge branch 'master' of git://github.com/git-l10n/git-po

* 'master' of git://github.com/git-l10n/git-po:
l10n: fr.po: Fix typo
l10n: fr.po: Fix typo

ident: keep a flag for bogus default_emailJeff King Thu, 10 Dec 2015 21:35:36 +0000 (16:35 -0500)

ident: keep a flag for bogus default_email

If we have to deduce the user's email address and can't come
up with something plausible for the hostname, we simply
write "(none)" or ".(none)" in the hostname.

Later, our strict-check is forced to use strstr to look for
this magic string. This is probably not a problem in
practice, but it's rather ugly. Let's keep an extra flag
that tells us the email is bogus, and check that instead.

We could get away with simply setting the global in
add_domainname(); it only gets called to write into
git_default_email. However, let's make the code a little
more obvious to future readers by actually passing a pointer
to our "bogus" flag down the call-chain.

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

ident: make xgetpwuid_self() a static local helperJeff King Thu, 10 Dec 2015 21:33:05 +0000 (16:33 -0500)

ident: make xgetpwuid_self() a static local helper

This function is defined in wrapper.c, but nobody besides
ident.c uses it. And nobody is likely to in the future,
either, as anything that cares about the user's name should
be going through the ident code.

Moving it here is a cleanup of the global namespace, but it
will also enable further cleanups inside ident.c.

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

Git 2.7-rc0 v2.7.0-rc0Junio C Hamano Thu, 10 Dec 2015 20:59:37 +0000 (12:59 -0800)

Git 2.7-rc0

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

Sync with maintJunio C Hamano Thu, 10 Dec 2015 20:45:17 +0000 (12:45 -0800)

Sync with maint

* maint:
Documentation/git-update-index: add missing opts to synopsis

Update release notes to 2.7Junio C Hamano Thu, 10 Dec 2015 20:43:52 +0000 (12:43 -0800)

Update release notes to 2.7

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

Merge branch 'nd/doc-check-ref-format-typo'Junio C Hamano Thu, 10 Dec 2015 20:36:15 +0000 (12:36 -0800)

Merge branch 'nd/doc-check-ref-format-typo'

* nd/doc-check-ref-format-typo:
git-check-ref-format.txt: typo, s/avoids/avoid/

Merge branch 'bc/object-id'Junio C Hamano Thu, 10 Dec 2015 20:36:13 +0000 (12:36 -0800)

Merge branch 'bc/object-id'

More transition from "unsigned char[40]" to "struct object_id".

This needed a few merge fixups, but is mostly disentangled from other
topics.

* bc/object-id:
remote: convert functions to struct object_id
Remove get_object_hash.
Convert struct object to object_id
Add several uses of get_object_hash.
object: introduce get_object_hash macro.
ref_newer: convert to use struct object_id
push_refs_with_export: convert to struct object_id
get_remote_heads: convert to struct object_id
parse_fetch: convert to use struct object_id
add_sought_entry_mem: convert to struct object_id
Convert struct ref to use object_id.
sha1_file: introduce has_object_file helper.

Merge branch 'dt/fsck-verify-pack-error'Junio C Hamano Thu, 10 Dec 2015 20:36:12 +0000 (12:36 -0800)

Merge branch 'dt/fsck-verify-pack-error'

The exit code of git-fsck didnot reflect some types of errors found
in packed objects, which has been corrected.

* dt/fsck-verify-pack-error:
verify_pack: do not ignore return value of verification function

Merge branch 'ls/travis-yaml'Junio C Hamano Thu, 10 Dec 2015 20:36:12 +0000 (12:36 -0800)

Merge branch 'ls/travis-yaml'

The necessary infrastructure to build topics using the free Travis
CI has been added. Developers forking from this topic (and enabling
Travis) can do their own builds, and we can turn on auto-builds for
git/git (including build-status for pull requests that people
open).

* ls/travis-yaml:
Add Travis CI support

Documentation/git-update-index: add missing opts to... Christian Couder Wed, 25 Nov 2015 09:30:02 +0000 (10:30 +0100)

Documentation/git-update-index: add missing opts to synopsis

Split index related options should appear in the 'SYNOPSIS'
section.

These options are already documented in the 'OPTIONS' section.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: add option to keep empty commitsLars Schneider Tue, 8 Dec 2015 09:36:22 +0000 (10:36 +0100)

git-p4: add option to keep empty commits

A changelist that contains only excluded files due to a client spec was
imported as an empty commit. Fix that issue by ignoring these commits.
Add option "git-p4.keepEmptyCommits" to make the previous behavior
available.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Helped-by: Pete Harlan
Acked-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ep/ident-with-getaddrinfo'Junio C Hamano Tue, 8 Dec 2015 22:14:50 +0000 (14:14 -0800)

Merge branch 'ep/ident-with-getaddrinfo'

A build without NO_IPv6 used to use gethostbyname() when guessing
user's hostname, instead of getaddrinfo() that is used in other
codepaths in such a build.

* ep/ident-with-getaddrinfo:
ident.c: add support for IPv6

Merge branch 'ls/test-must-fail-sigpipe'Junio C Hamano Tue, 8 Dec 2015 22:14:49 +0000 (14:14 -0800)

Merge branch 'ls/test-must-fail-sigpipe'

Fix some racy client/server tests by treating SIGPIPE the same as a
normal non-zero exit.

* ls/test-must-fail-sigpipe:
add "ok=sigpipe" to test_must_fail and use it to fix flaky tests
implement test_might_fail using a refactored test_must_fail

Merge branch 'dt/refs-backend-pre-vtable'Junio C Hamano Tue, 8 Dec 2015 22:14:49 +0000 (14:14 -0800)

Merge branch 'dt/refs-backend-pre-vtable'

Code preparation for pluggable ref backends.

* dt/refs-backend-pre-vtable:
refs: break out ref conflict checks
files_log_ref_write: new function
initdb: make safe_create_dir public
refs: split filesystem-based refs code into a new file
refs/refs-internal.h: new header file
refname_is_safe(): improve docstring
pack_if_possible_fn(): use ref_type() instead of is_per_worktree_ref()
copy_msg(): rename to copy_reflog_msg()
verify_refname_available(): new function
verify_refname_available(): rename function

Sync with 2.6.4Junio C Hamano Tue, 8 Dec 2015 22:13:52 +0000 (14:13 -0800)

Sync with 2.6.4

Git 2.6.4 v2.6.4Junio C Hamano Tue, 8 Dec 2015 22:07:30 +0000 (14:07 -0800)

Git 2.6.4

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

Merge branch 'rs/status-detached-head-memcmp' into... Junio C Hamano Tue, 8 Dec 2015 22:11:32 +0000 (14:11 -0800)

Merge branch 'rs/status-detached-head-memcmp' into maint

Fix some string-matching corner cases when digging in the reflog for
"git status".

* rs/status-detached-head-memcmp:
wt-status: correct and simplify check for detached HEAD

Merge branch 'ad/sha1-update-chunked' into maintJunio C Hamano Tue, 8 Dec 2015 22:05:03 +0000 (14:05 -0800)

Merge branch 'ad/sha1-update-chunked' into maint

Apple's common crypto implementation of SHA1_Update() does not take
more than 4GB at a time, and we now have a compile-time workaround
for it.

* ad/sha1-update-chunked:
sha1: allow limiting the size of the data passed to SHA1_Update()
sha1: provide another level of indirection for the SHA-1 functions

Merge branch 'sg/bash-prompt-dirty-orphan' into maintJunio C Hamano Tue, 8 Dec 2015 22:05:02 +0000 (14:05 -0800)

Merge branch 'sg/bash-prompt-dirty-orphan' into maint

Produce correct "dirty" marker for shell prompts, even when we
are on an orphan or an unborn branch.

* sg/bash-prompt-dirty-orphan:
bash prompt: indicate dirty index even on orphan branches
bash prompt: remove a redundant 'git diff' option
bash prompt: test dirty index and worktree while on an orphan branch

Merge branch 'jk/interpret-trailers-outside-a-repositor... Junio C Hamano Tue, 8 Dec 2015 22:05:02 +0000 (14:05 -0800)

Merge branch 'jk/interpret-trailers-outside-a-repository' into maint

Allow "git interpret-trailers" to run outside of a Git repository.

* jk/interpret-trailers-outside-a-repository:
interpret-trailers: allow running outside a repository

Merge branch 'jk/rebase-no-autostash' into maintJunio C Hamano Tue, 8 Dec 2015 22:05:00 +0000 (14:05 -0800)

Merge branch 'jk/rebase-no-autostash' into maint

There was no way to defeat a configured rebase.autostash variable
from the command line, as "git rebase --no-autostash" was missing.

* jk/rebase-no-autostash:
Documentation/git-rebase: fix --no-autostash formatting
rebase: support --no-autostash

revision.c: fix possible null pointer arithmeticStefan Naewe Sat, 5 Dec 2015 15:27:24 +0000 (16:27 +0100)

revision.c: fix possible null pointer arithmetic

mark_tree_uninteresting() dereferences a tree pointer before
checking if the pointer is valid. Fix that by doing the check first.

Signed-off-by: Stefan Naewe <stefan.naewe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: fr.po: Fix typoAudric Schiltknecht Fri, 4 Dec 2015 23:35:57 +0000 (18:35 -0500)

l10n: fr.po: Fix typo

Signed-off-by: Audric Schiltknecht <storm@chemicalstorm.org>

t3404: fix quoting of redirect for some versions of... Charles Bailey Wed, 2 Dec 2015 20:50:07 +0000 (20:50 +0000)

t3404: fix quoting of redirect for some versions of bash

As CodingGuidelines says, some versions of bash errors out when
$variable substitution is used as the target for redirection without
being quoted (even though POSIX may not require such a quote).

Signed-off-by: Charles Bailey <cbailey32@bloomberg.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-check-ref-format.txt: typo, s/avoids/avoid/Nguyễn Thái Ngọc Duy Fri, 4 Dec 2015 18:09:32 +0000 (19:09 +0100)

git-check-ref-format.txt: typo, s/avoids/avoid/

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

document submodule sync --recursiveStefan Beller Thu, 3 Dec 2015 20:41:02 +0000 (12:41 -0800)

document submodule sync --recursive

The git-submodule(1) is inconsistent. In the synopsis, it says:

git submodule [--quiet] sync [--recursive] [--] [<path>...]

The description of the sync does not mention --recursive, and the
description of --recursive says that it is only available for foreach,
update and status.

The option was introduced (82f49f294c, Teach --recursive to submodule
sync, 2012-10-26) a while ago, so let's document it, too.

Reported-by: Per Cederqvist <cederp@opera.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>