gitweb.git
remote-hg: use marks instead of inlined filesFelipe Contreras Mon, 22 Apr 2013 21:55:23 +0000 (16:55 -0500)

remote-hg: use marks instead of inlined files

So that we can find already exported ones. We can never be 100% sure
that we already exported such data, due to mercurial design, it at least
sometimes we should detect them, and so should give us some performance
boost.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: small performance improvementFelipe Contreras Mon, 22 Apr 2013 21:55:22 +0000 (16:55 -0500)

remote-hg: small performance improvement

Load previous manifest first as Mercurial does; for caching reasons.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: allow refs with spacesFelipe Contreras Mon, 22 Apr 2013 21:55:21 +0000 (16:55 -0500)

remote-hg: allow refs with spaces

Mercurial supports them, Git doesn't.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: don't update bookmarks unnecessarilyFelipe Contreras Mon, 22 Apr 2013 21:55:20 +0000 (16:55 -0500)

remote-hg: don't update bookmarks unnecessarily

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: add support for schemes extensionFelipe Contreras Mon, 22 Apr 2013 21:55:19 +0000 (16:55 -0500)

remote-hg: add support for schemes extension

So that we can use shortened URLs, for example 'bb:://felipec/repo'
(Bitbucket).

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: improve email sanitationFelipe Contreras Mon, 22 Apr 2013 21:55:18 +0000 (16:55 -0500)

remote-hg: improve email sanitation

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: add custom local tag write codeFelipe Contreras Mon, 22 Apr 2013 21:55:17 +0000 (16:55 -0500)

remote-hg: add custom local tag write code

There's no point in calling the tag method for such simple action. Not
that we care much about the hg-git compat mode, it's mostly just for
comparison testing purposes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: write tags in the appropriate branchFelipe Contreras Mon, 22 Apr 2013 21:55:16 +0000 (16:55 -0500)

remote-hg: write tags in the appropriate branch

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: custom method to write tagsFelipe Contreras Mon, 22 Apr 2013 21:55:15 +0000 (16:55 -0500)

remote-hg: custom method to write tags

The one from mercurial is meant for users, on top of the latest tip.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: add support for tag objectsFelipe Contreras Mon, 22 Apr 2013 21:55:14 +0000 (16:55 -0500)

remote-hg: add support for tag objects

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: add branch_tip() helperFelipe Contreras Mon, 22 Apr 2013 21:55:13 +0000 (16:55 -0500)

remote-hg: add branch_tip() helper

Idea from gitifyhg, the backwards compatibility is how Mercurial used to
do it.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: properly mark branches up-to-dateFelipe Contreras Mon, 22 Apr 2013 21:55:12 +0000 (16:55 -0500)

remote-hg: properly mark branches up-to-date

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: use python urlparseFelipe Contreras Mon, 22 Apr 2013 21:55:11 +0000 (16:55 -0500)

remote-hg: use python urlparse

It's simpler, and we don't need to depend on certain Mercurial versions.

Also, now we don't update the URL if 'file://' is not present.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-hg: safer bookmark pushingFelipe Contreras Mon, 22 Apr 2013 21:55:10 +0000 (16:55 -0500)

remote-hg: safer bookmark pushing

It is possible that the remote has changed the bookmarks, so let's fetch
them before we make any assumptions, just the way mercurial does.

Probably doesn't make a difference, but better be safe than sorry.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote-helpers: avoid has_keyDusty Phillips Mon, 22 Apr 2013 21:55:09 +0000 (16:55 -0500)

remote-helpers: avoid has_key

It is deprecated.

[fc: do the same in remote-bzr]

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git add: rephrase -A/--no-all warningJunio C Hamano Mon, 22 Apr 2013 20:36:51 +0000 (13:36 -0700)

git add: rephrase -A/--no-all warning

Now we have a synonym --ignore-removal for --no-all, we can rephrase
the Git 2.0 transition warning message in a more natural way.

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

git add: --ignore-removal is a better named --no-allJunio C Hamano Mon, 22 Apr 2013 20:29:20 +0000 (13:29 -0700)

git add: --ignore-removal is a better named --no-all

In the historical context of "git add --all ." that pays attention
to "all kinds of changes" (implying "without ignoring removals"),
the option to countermand it "--no-all" may have made sense, but
because we will be making "--all" the default when a pathspec is
given, it makes more sense to rename the option to a more explicit
"--ignore-removal". The "--all" option naturally becomes its
negation, "--no-ignore-removal".

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

Sync with maintJunio C Hamano Mon, 22 Apr 2013 18:33:31 +0000 (11:33 -0700)

Sync with maint

Start preparing for 1.8.2.2Junio C Hamano Mon, 22 Apr 2013 18:32:58 +0000 (11:32 -0700)

Start preparing for 1.8.2.2

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

Merge branch 'ta/glossary' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:58 +0000 (11:26 -0700)

Merge branch 'ta/glossary' into maint

* ta/glossary:
glossary: improve definitions of refspec and pathspec
The name of the hash function is "SHA-1", not "SHA1"
glossary: improve description of SHA-1 related topics
glossary: remove outdated/misleading/irrelevant entries

Merge branch 'jk/doc-http-backend' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:58 +0000 (11:26 -0700)

Merge branch 'jk/doc-http-backend' into maint

Improve documentation to illustrate "push authenticated, fetch
anonymous" configuration for smart HTTP servers.

* jk/doc-http-backend:
doc/http-backend: match query-string in apache half-auth example
doc/http-backend: give some lighttpd config examples
doc/http-backend: clarify "half-auth" repo configuration

Merge branch 'jk/test-trash' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:58 +0000 (11:26 -0700)

Merge branch 'jk/test-trash' into maint

* jk/test-trash:
t/test-lib.sh: drop "$test" variable
t/test-lib.sh: fix TRASH_DIRECTORY handling

Merge branch 'jk/daemon-user-doc' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:58 +0000 (11:26 -0700)

Merge branch 'jk/daemon-user-doc' into maint

* jk/daemon-user-doc:
doc: clarify that "git daemon --user=<user>" option does not export HOME=~user

Merge branch 'jc/detached-head-doc' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:57 +0000 (11:26 -0700)

Merge branch 'jc/detached-head-doc' into maint

* jc/detached-head-doc:
glossary: extend "detached HEAD" description

Conflicts:
Documentation/glossary-content.txt

Merge branch 'jk/show-branch-strbuf' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:57 +0000 (11:26 -0700)

Merge branch 'jk/show-branch-strbuf' into maint

* jk/show-branch-strbuf:
show-branch: use strbuf instead of static buffer

Merge branch 'js/rerere-forget-protect-against-NUL... Junio C Hamano Mon, 22 Apr 2013 18:26:56 +0000 (11:26 -0700)

Merge branch 'js/rerere-forget-protect-against-NUL' into maint

* js/rerere-forget-protect-against-NUL:
rerere forget: do not segfault if not all stages are present
rerere forget: grok files containing NUL

Merge branch 'jc/apply-ws-fix-tab-in-indent' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:56 +0000 (11:26 -0700)

Merge branch 'jc/apply-ws-fix-tab-in-indent' into maint

* jc/apply-ws-fix-tab-in-indent:
test: resurrect q_to_tab
apply --whitespace=fix: avoid running over the postimage buffer

Merge branch 'ap/combine-diff-ignore-whitespace' into... Junio C Hamano Mon, 22 Apr 2013 18:26:56 +0000 (11:26 -0700)

Merge branch 'ap/combine-diff-ignore-whitespace' into maint

* ap/combine-diff-ignore-whitespace:
Allow combined diff to ignore white-spaces

Merge branch 'jk/suppress-clang-warning' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:55 +0000 (11:26 -0700)

Merge branch 'jk/suppress-clang-warning' into maint

* jk/suppress-clang-warning:
fix clang -Wtautological-compare with unsigned enum

Merge branch 'tr/perl-keep-stderr-open' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:55 +0000 (11:26 -0700)

Merge branch 'tr/perl-keep-stderr-open' into maint

* tr/perl-keep-stderr-open:
t9700: do not close STDERR
perl: redirect stderr to /dev/null instead of closing

Merge branch 'lf/bundle-with-tip-wo-message' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:55 +0000 (11:26 -0700)

Merge branch 'lf/bundle-with-tip-wo-message' into maint

* lf/bundle-with-tip-wo-message:
bundle: Accept prerequisites without commit messages

Merge branch 'jk/filter-branch-come-back-to-original... Junio C Hamano Mon, 22 Apr 2013 18:26:55 +0000 (11:26 -0700)

Merge branch 'jk/filter-branch-come-back-to-original' into maint

* jk/filter-branch-come-back-to-original:
filter-branch: return to original dir after filtering

Merge branch 'rr/prompt-revert-head' into maintJunio C Hamano Mon, 22 Apr 2013 18:26:54 +0000 (11:26 -0700)

Merge branch 'rr/prompt-revert-head' into maint

* rr/prompt-revert-head:
bash: teach __git_ps1 about REVERT_HEAD

Update draft release notes to 1.8.3Junio C Hamano Mon, 22 Apr 2013 18:18:43 +0000 (11:18 -0700)

Update draft release notes to 1.8.3

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

Merge branch 'as/clone-reference-with-gitfile'Junio C Hamano Mon, 22 Apr 2013 18:12:40 +0000 (11:12 -0700)

Merge branch 'as/clone-reference-with-gitfile'

"git clone" did not work if a repository pointed at by the
"--reference" option is a gitfile that points at another place.

* as/clone-reference-with-gitfile:
clone: Allow repo using gitfile as a reference
clone: Fix error message for reference repository

Merge branch 'jc/add-2.0-delete-default' (early part)Junio C Hamano Mon, 22 Apr 2013 18:11:45 +0000 (11:11 -0700)

Merge branch 'jc/add-2.0-delete-default' (early part)

Preparatory steps to make "git add <pathspec>" take notice of
removed paths that match <pathspec> by default in Git 2.0.

* 'jc/add-2.0-delete-default' (early part):
git add: rephrase the "removal will cease to be ignored" warning
git add: rework the logic to warn "git add <pathspec>..." default change
git add: start preparing for "git add <pathspec>..." to default to "-A"
builtin/add.c: simplify boolean variables

Merge branch 'nd/checkout-keep-sparse'Junio C Hamano Mon, 22 Apr 2013 18:11:40 +0000 (11:11 -0700)

Merge branch 'nd/checkout-keep-sparse'

Make the initial "sparse" selection of the paths more sticky across
"git checkout".

* nd/checkout-keep-sparse:
checkout: add --ignore-skip-worktree-bits in sparse checkout mode

Merge branch 'jk/chopped-ident'Junio C Hamano Mon, 22 Apr 2013 18:11:36 +0000 (11:11 -0700)

Merge branch 'jk/chopped-ident'

A commit object whose author or committer ident are malformed
crashed some code that trusted that a name, an email and an
timestamp can always be found in it.

* jk/chopped-ident:
blame: handle broken commit headers gracefully
pretty: handle broken commit headers gracefully
cat-file: print tags raw for "cat-file -p"

Merge branch 'th/bisect-final-log'Junio C Hamano Mon, 22 Apr 2013 18:11:08 +0000 (11:11 -0700)

Merge branch 'th/bisect-final-log'

Leave a commit to note what the final outcome was in the bisect log
file.

* th/bisect-final-log:
bisect: Store first bad commit as comment in log file

Merge branch 'rs/archive-zip-raw-compression'Junio C Hamano Mon, 22 Apr 2013 16:49:21 +0000 (09:49 -0700)

Merge branch 'rs/archive-zip-raw-compression'

* rs/archive-zip-raw-compression:
zlib: fix compilation failures with Sun C Compilaer

zlib: fix compilation failures with Sun C CompilaerStefano Lattarini Mon, 22 Apr 2013 16:18:40 +0000 (18:18 +0200)

zlib: fix compilation failures with Sun C Compilaer

Do this by removing a couple of useless return statements. Without this
change, compilation with Sun C Compiler 5.9 (SunOS_i386 Patch 124868-15
2010/08/11) fails with the following message:

"zlib.c", line 192: void function cannot return value
"zlib.c", line 201: void function cannot return value
cc: acomp failed for zlib.c

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

builtin/shortlog.c: make usage string consistent with logRamkumar Ramachandra Mon, 22 Apr 2013 05:30:31 +0000 (11:00 +0530)

builtin/shortlog.c: make usage string consistent with log

"--" is used to separate pathspecs from the rev specs, and not rev
specs from the options, as the shortlog_usage string currently
indicates. In correcting this usage string, make it consistent with
the log_usage string.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/log.c: make usage string consistent with docRamkumar Ramachandra Mon, 22 Apr 2013 07:20:44 +0000 (12:50 +0530)

builtin/log.c: make usage string consistent with doc

Replace '<since>..<until>' with '<revision range>', in accordance with
the documentation.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-shortlog.txt: make SYNOPSIS match log, update OPTIONSRamkumar Ramachandra Mon, 22 Apr 2013 05:30:30 +0000 (11:00 +0530)

git-shortlog.txt: make SYNOPSIS match log, update OPTIONS

There are broadly two problems with the current SYNOPSIS. First, it
completely omits the detail that paths can be specified. Second, it
attempts to list all the options: this is futile as, in addition to
the options unique to it, it accepts all the options that git-rev-list
accepts. In fixing these problems, make the SYNOPSIS consistent with
that in git-log.txt. Also add the corresponding sections to OPTIONS.
Save adding the options from rev-list-options.txt for a later patch,
as it requires some work to pick out the options that are relevant to
shortlog.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-log.txt: rewrite note on why "--" may be requiredRamkumar Ramachandra Mon, 22 Apr 2013 05:30:29 +0000 (11:00 +0530)

git-log.txt: rewrite note on why "--" may be required

In its current form, the note talks about separating options from
"branch names" and "refnames" in the same sentence. This is entirely
inaccurate, as <revision range> need not be a set of branch names or
ref names. Rewrite it to use the word "revision range", to be
consistent with the SYNOPSIS.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-log.txt: generalize <since>..<until>Ramkumar Ramachandra Mon, 22 Apr 2013 05:30:28 +0000 (11:00 +0530)

git-log.txt: generalize <since>..<until>

'<since>..<until>' is misleading, as there are many other forms that
'git log' can accept as an argument. Replace it with <revision range>,
referring to the section "Specifying Ranges" in revisions.txt, and
rewrite the section appropriately.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-log.txt: order OPTIONS properly; move <since>.... Ramkumar Ramachandra Mon, 22 Apr 2013 05:30:27 +0000 (11:00 +0530)

git-log.txt: order OPTIONS properly; move <since>..<until>

The OPTIONS section lists <since>..<until> as the first item, but this
is inconsistent with the ordering in SYNOPSIS. Move it down until it
appears just before [[--] <path>...].

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revisions.txt: clarify the .. and ... syntaxRamkumar Ramachandra Mon, 22 Apr 2013 05:30:26 +0000 (11:00 +0530)

revisions.txt: clarify the .. and ... syntax

In <rev1>..<rev2> and <rev1>...<rev2>, if either <rev1> or <rev2> is
omitted, it defaults to 'HEAD'. Add this detail to the document.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git add: rephrase the "removal will cease to be ignored... Junio C Hamano Mon, 22 Apr 2013 04:04:35 +0000 (21:04 -0700)

git add: rephrase the "removal will cease to be ignored" warning

Now the logic to decide when to warn has been tightened, we know the
user is in a situation where the current and future behaviours will
be different. Spell out what happens with these two versions and
how to explicitly ask for the behaviour, and suggest "git status" as
a way to inspect the current status.

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

glossary: a revision is just a commitJonathan Nieder Sun, 21 Apr 2013 08:17:05 +0000 (01:17 -0700)

glossary: a revision is just a commit

The current definition of 'revision' sounds like it is saying that a
revision is a tree object. In reality it is just a commit.

This should be especially useful for people used to other revision
control systems trying to see how familiar concepts translate into git
terms.

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

Merge branch 'ta/glossary'Junio C Hamano Mon, 22 Apr 2013 01:40:15 +0000 (18:40 -0700)

Merge branch 'ta/glossary'

* ta/glossary:
glossary: improve definitions of refspec and pathspec
The name of the hash function is "SHA-1", not "SHA1"
glossary: improve description of SHA-1 related topics
glossary: remove outdated/misleading/irrelevant entries

Merge branch 'jk/doc-http-backend'Junio C Hamano Mon, 22 Apr 2013 01:40:09 +0000 (18:40 -0700)

Merge branch 'jk/doc-http-backend'

Improve documentation to illustrate "push authenticated, fetch
anonymous" configuration for smart HTTP servers.

* jk/doc-http-backend:
doc/http-backend: match query-string in apache half-auth example
doc/http-backend: give some lighttpd config examples
doc/http-backend: clarify "half-auth" repo configuration

Merge branch 'jx/i18n-branch-error-messages'Junio C Hamano Mon, 22 Apr 2013 01:40:02 +0000 (18:40 -0700)

Merge branch 'jx/i18n-branch-error-messages'

* jx/i18n-branch-error-messages:
i18n: branch: mark strings for translation

Merge branch 'fc/remote-hg'Junio C Hamano Mon, 22 Apr 2013 01:39:58 +0000 (18:39 -0700)

Merge branch 'fc/remote-hg'

Updates remote-hg helper (in contrib/).

* fc/remote-hg: (21 commits)
remote-hg: activate graphlog extension for hg_log()
remote-hg: fix bad file paths
remote-hg: document location of stored hg repository
remote-hg: fix bad state issue
remote-hg: add 'insecure' option
remote-hg: add simple mail test
remote-hg: add basic author tests
remote-hg: show more proper errors
remote-hg: force remote push
remote-hg: push to the appropriate branch
remote-hg: update tags globally
remote-hg: update remote bookmarks
remote-hg: refactor export
remote-hg: split bookmark handling
remote-hg: redirect buggy mercurial output
remote-hg: trivial test cleanups
remote-hg: make sure fake bookmarks are updated
remote-hg: fix for files with spaces
remote-hg: properly report errors on bookmark pushes
remote-hg: add missing config variable in doc
...

Merge branch 'lf/read-blob-data-from-index'Junio C Hamano Mon, 22 Apr 2013 01:39:45 +0000 (18:39 -0700)

Merge branch 'lf/read-blob-data-from-index'

Reduce duplicated code between convert.c and attr.c.

* lf/read-blob-data-from-index:
convert.c: remove duplicate code
read_blob_data_from_index(): optionally return the size of blob data
attr.c: extract read_index_data() as read_blob_data_from_index()

prompt: fix untracked files for zshFelipe Contreras Sun, 21 Apr 2013 22:00:16 +0000 (15:00 -0700)

prompt: fix untracked files for zsh

We signal presense of untracked files by adding a per-cent sign '%'
to the prompt. But because '%' is used as an escape character to
introduce prompt customization in zsh (just like bash prompt uses
'\' to escape '\u', '\h', etc.), we need to say '%%' to get a
literal per-cent.

Helped-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-shortlog.txt: remove (-h|--help) from OPTIONSRamkumar Ramachandra Sun, 21 Apr 2013 08:50:46 +0000 (14:20 +0530)

git-shortlog.txt: remove (-h|--help) from OPTIONS

To be consistent with the documentation of all the other commands,
remove (-h|--help) from the OPTIONS section.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: de.po: translate 54 new messagesRalf Thielow Thu, 11 Apr 2013 16:25:45 +0000 (18:25 +0200)

l10n: de.po: translate 54 new messages

Translate 54 new messages came from git.pot update in
c138af5 (l10n: git.pot: v1.8.3 round 1 (54 new, 15 removed)).

While at there, fix some small issues.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Thomas Rast <trast@inf.ethz.ch>

receive-pack: close sideband fd on early pack errorsJeff King Fri, 19 Apr 2013 21:24:29 +0000 (17:24 -0400)

receive-pack: close sideband fd on early pack errors

Since commit a22e6f8 (receive-pack: send pack-processing
stderr over sideband, 2012-09-21), receive-pack will start
an async sideband thread to copy the stderr from our
index-pack or unpack-objects child to the client. We hand
the thread's input descriptor to unpack(), which puts it in
the "err" member of the "struct child_process".

After unpack() returns, we use finish_async() to reap the
sideband thread. The thread is only ready to die when it
gets EOF on its pipe, which is connected to the err
descriptor. So we expect all of the write ends of that pipe
to be closed as part of unpack().

Normally, this works fine. After start_command forks, it
closes the parent copy of the descriptor. Then once the
child exits (whether it was successful or not), that closes
the only remaining writer.

However, there is one code-path in unpack() that does not
handle this. Before we decide which of unpack-objects or
index-pack to use, we read the pack header ourselves to see
how many objects it contains. If there is an error here, we
exit without running either sub-command, the pipe descriptor
remains open, and we are in a deadlock, waiting for the
sideband thread to die (which is in turn waiting for us to
close the pipe).

We can fix this by making sure that unpack() always closes
the pipe before returning.

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

Update draft release notes to 1.8.3Junio C Hamano Fri, 19 Apr 2013 20:53:44 +0000 (13:53 -0700)

Update draft release notes to 1.8.3

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

Merge branch 'jk/a-thread-only-dies-once'Junio C Hamano Fri, 19 Apr 2013 20:45:04 +0000 (13:45 -0700)

Merge branch 'jk/a-thread-only-dies-once'

A regression fix for the logic to detect die() handler triggering
itself recursively.

* jk/a-thread-only-dies-once:
run-command: use thread-aware die_is_recursing routine
usage: allow pluggable die-recursion checks

Merge branch 'rt/commentchar-fmt-merge-msg'Junio C Hamano Fri, 19 Apr 2013 20:45:01 +0000 (13:45 -0700)

Merge branch 'rt/commentchar-fmt-merge-msg'

A test fix for recent update.

* rt/commentchar-fmt-merge-msg:
t6200: avoid path mangling issue on Windows

Merge branch 'mv/sequencer-pick-error-diag'Junio C Hamano Fri, 19 Apr 2013 20:40:22 +0000 (13:40 -0700)

Merge branch 'mv/sequencer-pick-error-diag'

"git cherry-pick $blob $tree" is diagnosed as a nonsense.

* mv/sequencer-pick-error-diag:
cherry-pick: make sure all input objects are commits

Merge branch 'tr/copy-revisions-from-stdin'Junio C Hamano Fri, 19 Apr 2013 20:40:13 +0000 (13:40 -0700)

Merge branch 'tr/copy-revisions-from-stdin'

A fix to a long-standing issue in the command line parser for
revisions, which was triggered by mv/sequence-pick-error-diag topic.

* tr/copy-revisions-from-stdin:
read_revisions_from_stdin: make copies for handle_revision_arg

Merge branch 'jn/add-2.0-u-A-sans-pathspec' (early... Junio C Hamano Fri, 19 Apr 2013 20:37:36 +0000 (13:37 -0700)

Merge branch 'jn/add-2.0-u-A-sans-pathspec' (early part)

In Git 2.0, "git add -u" and "git add -A" without any pathspec will
update the index for all paths, including those outside the current
directory, making it more consistent with "commit -a". To help the
migration pain, a warning is issued when the differences between the
current behaviour and the upcoming behaviour matters, i.e. when the
user has local changes outside the current directory.

* 'jn/add-2.0-u-A-sans-pathspec' (early part):
add -A: only show pathless 'add -A' warning when changes exist outside cwd
add -u: only show pathless 'add -u' warning when changes exist outside cwd
add: make warn_pathless_add() a no-op after first call
add: add a blank line at the end of pathless 'add [-u|-A]' warning
add: make pathless 'add [-u|-A]' warning a file-global function

Merge branch 'ap/strbuf-humanize'Junio C Hamano Fri, 19 Apr 2013 20:31:26 +0000 (13:31 -0700)

Merge branch 'ap/strbuf-humanize'

Teach "--human-readable" aka "-H" option to "git count-objects" to
show various large numbers in Ki/Mi/GiB scaled as necessary.

* ap/strbuf-humanize:
count-objects: add -H option to humanize sizes
strbuf: create strbuf_humanise_bytes() to show byte sizes

Merge branch 'fc/branch-upstream-color'Junio C Hamano Fri, 19 Apr 2013 20:31:24 +0000 (13:31 -0700)

Merge branch 'fc/branch-upstream-color'

Add more colors to "git branch -vv" output.

* fc/branch-upstream-color:
branch: colour upstream branches

Merge branch 'mv/ssl-ftp-curl'Junio C Hamano Fri, 19 Apr 2013 20:31:08 +0000 (13:31 -0700)

Merge branch 'mv/ssl-ftp-curl'

Does anybody really use commit walkers over (s)ftp?

* mv/ssl-ftp-curl:
Support FTP-over-SSL/TLS for regular FTP

pretty: support %>> that steal trailing spacesNguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:52 +0000 (09:08 +1000)

pretty: support %>> that steal trailing spaces

This is pretty useful in `%<(100)%s%Cred%>(20)% an' where %s does not
use up all 100 columns and %an needs more than 20 columns. By
replacing %>(20) with %>>(20), %an can steal spaces from %s.

%>> understands escape sequences, so %Cred does not stop it from
stealing spaces in %<(100).

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

pretty: support truncating in %>, %< and %><Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:51 +0000 (09:08 +1000)

pretty: support truncating in %>, %< and %><

%>(N,trunc) truncates the right part after N columns and replace the
last two letters with "..". ltrunc does the same on the left. mtrunc
cuts the middle out.

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

pretty: support padding placeholders, %< %> and %><Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:50 +0000 (09:08 +1000)

pretty: support padding placeholders, %< %> and %><

Either %<, %> or %>< standing before a placeholder specifies how many
columns (at least as the placeholder can exceed it) it takes. Each
differs on how spaces are padded:

%< pads on the right (aka left alignment)
%> pads on the left (aka right alignment)
%>< pads both ways equally (aka centered)

The (<N>) follows them, e.g. `%<(100)', to specify the number of
columns the next placeholder takes.

However, if '|' stands before (<N>), e.g. `%>|(100)', then the number
of columns is calculated so that it reaches the Nth column on screen.

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

pretty: add %C(auto) for auto-coloringNguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:49 +0000 (09:08 +1000)

pretty: add %C(auto) for auto-coloring

This is not simply convenient over %C(auto,xxx). Some placeholders
(actually only one, %d) do multi coloring and we can't emit a multiple
colors with %C(auto,xxx).

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

pretty: split color parsing into a separate functionNguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:48 +0000 (09:08 +1000)

pretty: split color parsing into a separate function

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

pretty: two phase conversion for non utf-8 commitsNguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:47 +0000 (09:08 +1000)

pretty: two phase conversion for non utf-8 commits

Always assume format_commit_item() takes an utf-8 string for string
handling simplicity (we can handle utf-8 strings, but can't with other
encodings).

If commit message is in non-utf8, or output encoding is not, then the
commit is first converted to utf-8, processed, then output converted
to output encoding. This of course only works with encodings that are
compatible with Unicode.

This also fixes the iso8859-1 test in t6006. It's supposed to create
an iso8859-1 commit, but the commit content in t6006 is in UTF-8.
t6006 is now converted back in UTF-8 (the downside is we can't put
utf-8 strings there anymore).

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

utf8.c: add reencode_string_len() that can handle NULs... Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:46 +0000 (09:08 +1000)

utf8.c: add reencode_string_len() that can handle NULs in string

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

utf8.c: add utf8_strnwidth() with the ability to skip... Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:45 +0000 (09:08 +1000)

utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences

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

utf8.c: move display_mode_esc_sequence_len() for use... Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:44 +0000 (09:08 +1000)

utf8.c: move display_mode_esc_sequence_len() for use by other functions

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

pretty: share code between format_decoration and show_d... Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:43 +0000 (09:08 +1000)

pretty: share code between format_decoration and show_decorations

This also adds color support to format_decorations()

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

pretty-formats.txt: wrap long linesNguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:42 +0000 (09:08 +1000)

pretty-formats.txt: wrap long lines

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

pretty: get the correct encoding for --pretty:format=%eNguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:41 +0000 (09:08 +1000)

pretty: get the correct encoding for --pretty:format=%e

parse_commit_header() provides the commit encoding for '%e' and it
reads it from the re-encoded message, which contains the new encoding,
not the original one in the commit object. This never happens because
--pretty=format:xxx never respects i18n.logoutputencoding. But that's
a different story.

Get the commit encoding from logmsg_reencode() instead.

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

pretty: save commit encoding from logmsg_reencode if... Nguyễn Thái Ngọc Duy Thu, 18 Apr 2013 23:08:40 +0000 (09:08 +1000)

pretty: save commit encoding from logmsg_reencode if the caller needs it

The commit encoding is parsed by logmsg_reencode, there's no need for
the caller to re-parse it again. The reencoded message now has the new
encoding, not the original one. The caller would need to read commit
object again before parsing.

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

Update draft release notes to 1.8.3Junio C Hamano Thu, 18 Apr 2013 19:02:42 +0000 (12:02 -0700)

Update draft release notes to 1.8.3

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

Merge branch 'maint'Junio C Hamano Thu, 18 Apr 2013 19:03:01 +0000 (12:03 -0700)

Merge branch 'maint'

* maint:
remote-hg: fix commit messages

Merge branch 'jk/test-trash'Junio C Hamano Thu, 18 Apr 2013 18:49:45 +0000 (11:49 -0700)

Merge branch 'jk/test-trash'

Fix longstanding issues with the test harness when used with --root=<there>
option.

* jk/test-trash:
t/test-lib.sh: drop "$test" variable
t/test-lib.sh: fix TRASH_DIRECTORY handling

Merge branch 'th/t9903-symlinked-workdir'Junio C Hamano Thu, 18 Apr 2013 18:49:41 +0000 (11:49 -0700)

Merge branch 'th/t9903-symlinked-workdir'

* th/t9903-symlinked-workdir:
t9903: Don't fail when run from path accessed through symlink

Merge branch 'jk/merge-tree-added-identically'Junio C Hamano Thu, 18 Apr 2013 18:49:31 +0000 (11:49 -0700)

Merge branch 'jk/merge-tree-added-identically'

The resolution of some corner cases by "git merge-tree" were
inconsistent between top-of-the-tree and in a subdirectory.

* jk/merge-tree-added-identically:
merge-tree: don't print entries that match "local"

Merge branch 'jk/http-dumb-namespaces'Junio C Hamano Thu, 18 Apr 2013 18:49:21 +0000 (11:49 -0700)

Merge branch 'jk/http-dumb-namespaces'

Allow smart-capable HTTP servers to be restricted via the
GIT_NAMESPACE mechanism when talking with commit-walker clients
(they already do so when talking with smart HTTP clients).

* jk/http-dumb-namespaces:
http-backend: respect GIT_NAMESPACE with dumb clients

Merge branch 'rs/empty-archive'Junio C Hamano Thu, 18 Apr 2013 18:49:17 +0000 (11:49 -0700)

Merge branch 'rs/empty-archive'

Implementations of "tar" of BSD descend have found to have trouble
with reading an otherwise empty tar archive with pax headers and
causes an unnecessary test failure.

* rs/empty-archive:
t5004: fix issue with empty archive test and bsdtar

Merge branch 'fc/send-email-annotate'Junio C Hamano Thu, 18 Apr 2013 18:49:11 +0000 (11:49 -0700)

Merge branch 'fc/send-email-annotate'

Allows format-patch --cover-letter to be configurable; the most
notable is the "auto" mode to create cover-letter only for multi
patch series.

* fc/send-email-annotate:
rebase-am: explicitly disable cover-letter
format-patch: trivial cleanups
format-patch: add format.coverLetter configuration variable
log: update to OPT_BOOL
format-patch: refactor branch name calculation
format-patch: improve head calculation for cover-letter
send-email: make annotate configurable

Merge branch 'jc/push-2.0-default-to-simple' (early... Junio C Hamano Thu, 18 Apr 2013 18:47:59 +0000 (11:47 -0700)

Merge branch 'jc/push-2.0-default-to-simple' (early part)

Adjust our tests for upcoming migration of the default value for the
"push.default" configuration variable to "simple" from "mixed".

* 'jc/push-2.0-default-to-simple' (early part):
t5570: do not assume the "matching" push is the default
t5551: do not assume the "matching" push is the default
t5550: do not assume the "matching" push is the default
t9401: do not assume the "matching" push is the default
t9400: do not assume the "matching" push is the default
t7406: do not assume the "matching" push is the default
t5531: do not assume the "matching" push is the default
t5519: do not assume the "matching" push is the default
t5517: do not assume the "matching" push is the default
t5516: do not assume the "matching" push is the default
t5505: do not assume the "matching" push is the default
t5404: do not assume the "matching" push is the default

Merge branch 'jk/daemon-user-doc'Junio C Hamano Thu, 18 Apr 2013 18:47:23 +0000 (11:47 -0700)

Merge branch 'jk/daemon-user-doc'

Document where the configuration is read by the git-daemon when its --user
option is used.

* jk/daemon-user-doc:
doc: clarify that "git daemon --user=<user>" option does not export HOME=~user

Merge branch 'fc/completion'Junio C Hamano Thu, 18 Apr 2013 18:46:41 +0000 (11:46 -0700)

Merge branch 'fc/completion'

In addition to a user visible change to offer more options to cherry-pick,
generally cleans up and simplifies the code.

* fc/completion:
completion: small optimization
completion: inline __gitcomp_1 to its sole callsite
completion: get rid of compgen
completion: add __gitcomp_nl tests
completion: add new __gitcompadd helper
completion: get rid of empty COMPREPLY assignments
completion: trivial test improvement
completion: add more cherry-pick options

Merge branch 'kb/co-orphan-suggestion-short-sha1'Junio C Hamano Thu, 18 Apr 2013 18:46:33 +0000 (11:46 -0700)

Merge branch 'kb/co-orphan-suggestion-short-sha1'

Update the informational message when "git checkout" leaves the
detached head state.

* kb/co-orphan-suggestion-short-sha1:
checkout: abbreviate hash in suggest_reattach

Merge branch 'jc/detached-head-doc'Junio C Hamano Thu, 18 Apr 2013 18:46:29 +0000 (11:46 -0700)

Merge branch 'jc/detached-head-doc'

* jc/detached-head-doc:
glossary: extend "detached HEAD" description

Merge branch 'tr/packed-object-info-wo-recursion'Junio C Hamano Thu, 18 Apr 2013 18:46:23 +0000 (11:46 -0700)

Merge branch 'tr/packed-object-info-wo-recursion'

Attempts to reduce the stack footprint of sha1_object_info()
and unpack_entry() codepaths.

* tr/packed-object-info-wo-recursion:
sha1_file: remove recursion in unpack_entry
Refactor parts of in_delta_base_cache/cache_or_unpack_entry
sha1_file: remove recursion in packed_object_info

Merge branch 'jk/http-error-messages'Junio C Hamano Thu, 18 Apr 2013 18:42:08 +0000 (11:42 -0700)

Merge branch 'jk/http-error-messages'

A regression fix for the recently graduated topic.

* jk/http-error-messages:
http: set curl FAILONERROR each time we select a handle

t6200: avoid path mangling issue on WindowsJohannes Sixt Thu, 18 Apr 2013 06:42:25 +0000 (08:42 +0200)

t6200: avoid path mangling issue on Windows

MSYS bash interprets the slash in the argument core.commentchar="/"
as root directory and mangles it into a Windows style path. Use a
different core.commentchar to dodge the issue.

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

remote-hg: fix commit messagesFelipe Contreras Thu, 18 Apr 2013 06:06:31 +0000 (01:06 -0500)

remote-hg: fix commit messages

git fast-import expects an extra newline after the commit message data,
but we are adding it only on hg-git compat mode, which is why the
bidirectionality tests pass.

We should add it unconditionally.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git add: rework the logic to warn "git add <pathspec... Junio C Hamano Wed, 17 Apr 2013 19:32:21 +0000 (12:32 -0700)

git add: rework the logic to warn "git add <pathspec>..." default change

The earlier logic to warn against "git add subdir" that is run
without "-A" or "--no-all" was only to check any <pathspec> given
exactly spells a directory name that (still) exists on the
filesystem. This had number of problems:

* "git add '*dir'" (note that the wildcard is hidden from the
shell) would not trigger the warning.

* "git add '*.py'" would behave differently between the current
version of Git and Git 2.0 for the same reason as "subdir", but
would not trigger the warning.

* "git add dir" for a submodule "dir" would just update the index
entry for the submodule "dir" without ever recursing into it, and
use of "-A" or "--no-all" would matter. But the logic only
checks the directory-ness of "dir" and gives an unnecessary
warning.

Rework the logic to detect the case where the behaviour will be
different in Git 2.0, and issue a warning only when it matters.
Even with the code before this warning, "git add subdir" will have
to traverse the directory in order to find _new_ files the index
does not know about _anyway_, so we can do this check without adding
an extra pass to find if <pathspec> matches any removed file.

This essentially updates the "add_files_to_cache()" public API to
"update_files_in_cache()" API that is internal to "git add", because
with the "--all" option, the function is no longer about "adding"
paths to the cache, but is also used to remove them.

There are other callers of the former from "checkout" (used when
"checkout -m" prepares the temporary tree that represents the local
modifications to be merged) and "commit" ("commit --include" that
picks up local changes in addition to what is in the index). Since
ADD_CACHE_IGNORE_ERRORS (aka "--no-all") is not used by either of
them, once dust settles after Git 2.0 and the warning becomes
unnecessary, we may want to unify these two functions again.

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

gitweb/INSTALL: GITWEB_CONFIG_SYSTEM is for backward... Jonathan Nieder Tue, 16 Apr 2013 22:26:00 +0000 (15:26 -0700)

gitweb/INSTALL: GITWEB_CONFIG_SYSTEM is for backward compatibility

Highlight that CONFIG_SYSTEM and /etc/gitweb.conf are meant to be
the fallback configuration file in BUGS section of gitweb.conf
documentation. This will hopefully help people who expect them to
be a common default, which unfortunately came later in the history.