gitweb.git
fast-export: make sure updated refs get updatedFelipe Contreras Wed, 28 Nov 2012 22:24:00 +0000 (23:24 +0100)

fast-export: make sure updated refs get updated

When an object has already been exported (and thus is in the marks) it's
flagged as SHOWN, so it will not be exported again, even if in a later
time it's exported through a different ref.

We don't need the object to be exported again, but we want the ref
updated, which doesn't happen.

Since we can't know if a ref was exported or not, let's just assume that
if the commit was marked (flags & SHOWN), the user still wants the ref
updated.

IOW: If it's specified in the command line, it will get updated,
regardless of whether or not the object was marked.

So:

% git branch test master
% git fast-export $mark_flags master
% git fast-export $mark_flags test

Would export 'test' properly.

Additionally, this fixes issues with remote helpers; now they can push
refs whose objects have already been exported, and a few other issues as
well. Update the tests accordingly.

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

fast-export: don't handle uninteresting refsFelipe Contreras Wed, 28 Nov 2012 22:23:59 +0000 (23:23 +0100)

fast-export: don't handle uninteresting refs

They have been marked as UNINTERESTING for a reason, lets respect
that. Currently the first ref is handled properly, but not the
rest. Assuming that all the refs point at the same commit in the
following example:

% git fast-export master ^uninteresting ^foo ^bar
reset refs/heads/bar
from :0

reset refs/heads/foo
from :0

reset refs/heads/uninteresting
from :0

% git fast-export ^uninteresting ^foo ^bar master
reset refs/heads/master
from :0

reset refs/heads/bar
from :0

reset refs/heads/foo
from :0

Clearly this is wrong; the negative refs should be ignored.

After this patch:

% git fast-export ^uninteresting ^foo ^bar master
# nothing
% git fast-export master ^uninteresting ^foo ^bar
# nothing

And even more, it would only happen if the ref is pointing to exactly
the same commit, but not otherwise:

% git fast-export ^next next
reset refs/heads/next
from :0

% git fast-export ^next next^{commit}
# nothing
% git fast-export ^next next~0
# nothing
% git fast-export ^next next~1
# nothing
% git fast-export ^next next~2
# nothing

The reason this happens is that before traversing the commits,
fast-export checks if any of the refs point to the same object, and any
duplicated ref gets added to a list in order to issue 'reset' commands
after the traversing. Unfortunately, it's not even checking if the
commit is flagged as UNINTERESTING. The fix of course, is to check it.

However, in order to do it properly we need to get the UNINTERESTING
flag from the command line, not from the commit object, because
"^foo bar" will mark the commit 'bar' uninteresting if foo and bar
points at the same commit. rev_cmdline_info, which was introduced
exactly to handle this situation, contains all the information we
need for get_tags_and_duplicates(), plus the ref flag. This way the
rest of the positive refs will remain untouched; it's only the
negative ones that change in behavior.

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

fast-export: fix comparison in testsFelipe Contreras Wed, 28 Nov 2012 22:11:09 +0000 (23:11 +0100)

fast-export: fix comparison in tests

First the expected, then the actual, otherwise the diff would be the
opposite of what we want.

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

fast-export: trivial cleanupFelipe Contreras Wed, 28 Nov 2012 22:11:08 +0000 (23:11 +0100)

fast-export: trivial cleanup

Setting 'commit' to 'commit' is a no-op. It might have been there to
avoid a compiler warning, but if so, it was the compiler to blame, and
it's certainly not there any more.

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

remote-testgit: implement the "done" feature manuallyFelipe Contreras Wed, 28 Nov 2012 22:11:07 +0000 (23:11 +0100)

remote-testgit: implement the "done" feature manually

People who want to write their own remote-helper will find it more
useful to see clearly how they are supposed to advertise and implement
the "done" feature themselves.

Right now we are relying on fast-export to do that by using the
--use-done-feature argument. However, people writing their own
remote-helper would probably not have such an option, as they would
probably be writing the fast-export functionality themselves.

It should now be clearer to them.

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

remote-testgit: report success after an importFelipe Contreras Wed, 28 Nov 2012 22:11:06 +0000 (23:11 +0100)

remote-testgit: report success after an import

Doesn't make a difference for the tests, but it does for the ones
seeking reference.

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

remote-testgit: exercise more featuresFelipe Contreras Wed, 28 Nov 2012 22:11:05 +0000 (23:11 +0100)

remote-testgit: exercise more features

Unfortunately a lot of these tests fail.

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

remote-testgit: cleanup testsFelipe Contreras Wed, 28 Nov 2012 22:11:04 +0000 (23:11 +0100)

remote-testgit: cleanup tests

We don't need a bare 'server' and an intermediary 'public'. The repos
can talk to each other directly; that's what we want to exercise.

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

remote-testgit: remove irrelevant testFelipe Contreras Wed, 28 Nov 2012 22:11:03 +0000 (23:11 +0100)

remote-testgit: remove irrelevant test

This was only to cover a bug that was fixed in remote-testpy not to
resurface.

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

remote-testgit: remove non-local functionalityFelipe Contreras Wed, 28 Nov 2012 22:11:02 +0000 (23:11 +0100)

remote-testgit: remove non-local functionality

This only makes sense for the python remote helpers framework. The tests
don't exercise any feature of transport helper. Remove them.

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

Add new simplified git-remote-testgitFelipe Contreras Wed, 28 Nov 2012 22:11:01 +0000 (23:11 +0100)

Add new simplified git-remote-testgit

Exercising the python remote helper framework is for another tool and
another test. This is about testing the remote-helper interface.

It's way simpler, it exercises the same features of remote helpers, it's
easy to read and understand, and it doesn't depend on python.

For now let's just copy the old remote-helpers test script, although
some of those tests don't make sense. In addition, this script would be
able to test other features not currently being tested.

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

Rename git-remote-testgit to git-remote-testpyFelipe Contreras Wed, 28 Nov 2012 22:11:00 +0000 (23:11 +0100)

Rename git-remote-testgit to git-remote-testpy

This script is not really exercising the remote-helper functionality,
but more the python framework for remote helpers that live in
git_remote_helpers.

It's also not a good example of how to write remote-helpers, unless you
are planning to use python, and even then you might not want to use this
framework.

So let's use a more appropriate name: git-remote-testpy.

A patch that replaces git-remote-testgit with a simpler version is on
the way.

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

remote-helpers: fix failure messageFelipe Contreras Sat, 24 Nov 2012 03:17:03 +0000 (04:17 +0100)

remote-helpers: fix failure message

This is remote-testgit, not remote-hg.

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

remote-testgit: fix direction of marksFelipe Contreras Sat, 24 Nov 2012 03:17:02 +0000 (04:17 +0100)

remote-testgit: fix direction of marks

Basically this is what we want:

== pull ==

testgit transport-helper

* export -> import

# testgit.marks git.marks

== push ==

testgit transport-helper

* import <- export

# testgit.marks git.marks

Each side should be agnostic of the other side. Because testgit.marks
(our helper marks) could be anything, not necessarily a format parsable
by fast-export or fast-import. In this test they happen to be compatible,
because we use those tools, but in the real world it would be something
completely different. For example, they might be mapping marks to
mercurial revisions (certainly not parsable by fast-import/export).

This is what we have:

== pull ==

testgit transport-helper

* export -> import

# testgit.marks git.marks

== push ==

testgit transport-helper

* import <- export

# git.marks testgit.marks

The only reason this is working is that git.marks and testgit.marks are
roughly the same.

This new behavior used to not be possible before due to a bug in
fast-export, but with the bug fixed, it works fine.

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

fast-export: avoid importing blob marksFelipe Contreras Sat, 24 Nov 2012 03:17:01 +0000 (04:17 +0100)

fast-export: avoid importing blob marks

We want to be able to import, and then export, using the same marks, so
that we don't push things that the other side already received.

Unfortunately, fast-export doesn't store blobs in the marks, but
fast-import does. This creates a mismatch when fast export is reusing a
mark that was previously stored by fast-import.

There is no point in one tool saving blobs, and the other not, but for
now let's just check in fast-export that the objects are indeed commits.

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

Sixth batch for 1.8.1Junio C Hamano Tue, 20 Nov 2012 18:46:29 +0000 (10:46 -0800)

Sixth batch for 1.8.1

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

Merge branch 'ml/cygwin-mingw-headers'Junio C Hamano Tue, 20 Nov 2012 18:44:29 +0000 (10:44 -0800)

Merge branch 'ml/cygwin-mingw-headers'

Make git compile on cygwin with newer header files.

* ml/cygwin-mingw-headers:
USE CGYWIN_V15_WIN32API as macro to select api for cygwin
Update cygwin.c for new mingw-64 win32 api headers

Merge branch 'jk/checkout-out-of-unborn'Junio C Hamano Tue, 20 Nov 2012 18:43:18 +0000 (10:43 -0800)

Merge branch 'jk/checkout-out-of-unborn'

* jk/checkout-out-of-unborn:
checkout: print a message when switching unborn branches

Merge branch 'cn/config-missing-path'Junio C Hamano Tue, 20 Nov 2012 18:40:46 +0000 (10:40 -0800)

Merge branch 'cn/config-missing-path'

"git config --path $key" segfaulted on "[section] key" (a boolean
"true" spelled without "=", not "[section] key = true").

* cn/config-missing-path:
config: don't segfault when given --path with a missing value

Merge branch 'jl/submodule-rm'Junio C Hamano Tue, 20 Nov 2012 18:40:31 +0000 (10:40 -0800)

Merge branch 'jl/submodule-rm'

* jl/submodule-rm:
docs: move submodule section

Merge branch 'mg/replace-resolve-delete'Junio C Hamano Tue, 20 Nov 2012 18:38:32 +0000 (10:38 -0800)

Merge branch 'mg/replace-resolve-delete'

Be more user friendly to people using "git replace -d".

* mg/replace-resolve-delete:
replace: parse revision argument for -d

Merge branch 'jk/maint-gitweb-xss'Junio C Hamano Tue, 20 Nov 2012 18:37:27 +0000 (10:37 -0800)

Merge branch 'jk/maint-gitweb-xss'

Fixes an XSS vulnerability in gitweb.

* jk/maint-gitweb-xss:
gitweb: escape html in rss title

Merge branch 'rh/maint-gitweb-highlight-ext'Junio C Hamano Tue, 20 Nov 2012 18:35:53 +0000 (10:35 -0800)

Merge branch 'rh/maint-gitweb-highlight-ext'

Fixes a clever misuse of perl's list interpretation.

* rh/maint-gitweb-highlight-ext:
gitweb.perl: fix %highlight_ext mappings

Merge branch 'pw/maint-p4-rcs-expansion-newline'Junio C Hamano Tue, 20 Nov 2012 18:34:15 +0000 (10:34 -0800)

Merge branch 'pw/maint-p4-rcs-expansion-newline'

I do not have p4 to play with, but looks obviously correct to me.

* pw/maint-p4-rcs-expansion-newline:
git p4: RCS expansion should not span newlines

Merge branch 'mh/alt-odb-string-list-cleanup'Junio C Hamano Tue, 20 Nov 2012 18:34:08 +0000 (10:34 -0800)

Merge branch 'mh/alt-odb-string-list-cleanup'

Cleanups in the alternates code. Fixes a potential bug and makes the
code much cleaner.

* mh/alt-odb-string-list-cleanup:
link_alt_odb_entries(): take (char *, len) rather than two pointers
link_alt_odb_entries(): use string_list_split_in_place()

Merge branch 'ta/doc-cleanup'Junio C Hamano Tue, 20 Nov 2012 18:32:58 +0000 (10:32 -0800)

Merge branch 'ta/doc-cleanup'

* ta/doc-cleanup:
Documentation: build html for all files in technical and howto
Documentation/howto: convert plain text files to asciidoc
Documentation/technical: convert plain text files to asciidoc
Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
Split over-long synopsis in git-fetch-pack.txt into several lines

Merge branch 'kb/preload-index-more'Junio C Hamano Tue, 20 Nov 2012 18:32:10 +0000 (10:32 -0800)

Merge branch 'kb/preload-index-more'

Use preloadindex in more places, which has a nice speedup on systems
with slow stat calls (and even on Linux).

* kb/preload-index-more:
update-index/diff-index: use core.preloadindex to improve performance

Merge branch 'jk/maint-http-half-auth-fetch'Junio C Hamano Tue, 20 Nov 2012 18:30:17 +0000 (10:30 -0800)

Merge branch 'jk/maint-http-half-auth-fetch'

Fixes fetch from servers that ask for auth only during the actual
packing phase. This is not really a recommended configuration, but it
cleans up the code at the same time.

* jk/maint-http-half-auth-fetch:
remote-curl: retry failed requests for auth even with gzip
remote-curl: hoist gzip buffer size to top of post_rpc

Sync with maintJunio C Hamano Tue, 20 Nov 2012 18:16:34 +0000 (10:16 -0800)

Sync with maint

* maint:
Further preparation for 1.8.0.1

Further preparation for 1.8.0.1Junio C Hamano Tue, 20 Nov 2012 18:16:14 +0000 (10:16 -0800)

Further preparation for 1.8.0.1

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

Merge branch 'mg/maint-pull-suggest-upstream-to' into... Junio C Hamano Tue, 20 Nov 2012 18:15:09 +0000 (10:15 -0800)

Merge branch 'mg/maint-pull-suggest-upstream-to' into maint

* mg/maint-pull-suggest-upstream-to:
push/pull: adjust missing upstream help text to changed interface

Merge branch 'mm/maint-doc-commit-edit' into maintJunio C Hamano Tue, 20 Nov 2012 18:14:55 +0000 (10:14 -0800)

Merge branch 'mm/maint-doc-commit-edit' into maint

* mm/maint-doc-commit-edit:
Document 'git commit --no-edit' explicitly

Merge branch 'as/maint-doc-fix-no-post-rewrite' into... Junio C Hamano Tue, 20 Nov 2012 18:14:46 +0000 (10:14 -0800)

Merge branch 'as/maint-doc-fix-no-post-rewrite' into maint

* as/maint-doc-fix-no-post-rewrite:
commit: fixup misplacement of --no-post-rewrite description

Merge branch 'rs/lock-correct-ref-during-delete' into... Junio C Hamano Tue, 20 Nov 2012 18:14:41 +0000 (10:14 -0800)

Merge branch 'rs/lock-correct-ref-during-delete' into maint

* rs/lock-correct-ref-during-delete:
refs: lock symref that is to be deleted, not its target

Merge branch 'rf/maint-mailmap-off-by-one' into maintJunio C Hamano Tue, 20 Nov 2012 18:14:28 +0000 (10:14 -0800)

Merge branch 'rf/maint-mailmap-off-by-one' into maint

* rf/maint-mailmap-off-by-one:
mailmap: avoid out-of-bounds memory access

Merge branch 'jk/maint-diff-grep-textconv' into maintJunio C Hamano Tue, 20 Nov 2012 18:03:12 +0000 (10:03 -0800)

Merge branch 'jk/maint-diff-grep-textconv' into maint

"git diff -G<pattern>" did not honor textconv filter when looking
for changes.

* jk/maint-diff-grep-textconv:
diff_grep: use textconv buffers for add/deleted files

Merge branch 'js/format-2047' into maintJunio C Hamano Tue, 20 Nov 2012 17:57:44 +0000 (09:57 -0800)

Merge branch 'js/format-2047' into maint

Various rfc2047 quoting issues around a non-ASCII name on the From:
line in the output from format-patch have been corrected.

* js/format-2047:
format-patch tests: check quoting/encoding in To: and Cc: headers
format-patch: fix rfc2047 address encoding with respect to rfc822 specials
format-patch: make rfc2047 encoding more strict
format-patch: introduce helper function last_line_length()
format-patch: do not wrap rfc2047 encoded headers too late
format-patch: do not wrap non-rfc2047 headers too early
utf8: fix off-by-one wrapping of text

USE CGYWIN_V15_WIN32API as macro to select api for... Mark Levedahl Sun, 18 Nov 2012 21:16:52 +0000 (16:16 -0500)

USE CGYWIN_V15_WIN32API as macro to select api for cygwin

The previous macro was confusing to some, and did not include "cygwin" in
its name. The updated name more clearly expresses a choice of the
win32api implementation that shipped with version 1.5 of cygwin.

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

Sync with maintJunio C Hamano Mon, 19 Nov 2012 03:48:31 +0000 (19:48 -0800)

Sync with maint

Start preparing for 1.8.0.1Junio C Hamano Mon, 19 Nov 2012 03:47:19 +0000 (19:47 -0800)

Start preparing for 1.8.0.1

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

Merge branch 'sz/maint-curl-multi-timeout' into maintJunio C Hamano Mon, 19 Nov 2012 03:44:36 +0000 (19:44 -0800)

Merge branch 'sz/maint-curl-multi-timeout' into maint

Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call. A
workaround has been added for this.

* sz/maint-curl-multi-timeout:
Fix potential hang in https handshake

Merge branch 'po/maint-refs-replace-docs' into maintJunio C Hamano Mon, 19 Nov 2012 03:34:09 +0000 (19:34 -0800)

Merge branch 'po/maint-refs-replace-docs' into maint

The refs/replace hierarchy was not mentioned in the
repository-layout docs.

* po/maint-refs-replace-docs:
Doc repository-layout: Show refs/replace

Merge branch 'ph/pull-rebase-detached' into maintJunio C Hamano Mon, 19 Nov 2012 03:33:45 +0000 (19:33 -0800)

Merge branch 'ph/pull-rebase-detached' into maint

"git pull --rebase" run while the HEAD is detached tried to find
the upstream branch of the detached HEAD (which by definition
does not exist) and emitted unnecessary error messages.

* ph/pull-rebase-detached:
git-pull: Avoid merge-base on detached head

Merge branch 'mm/maint-doc-remote-tracking' into maintJunio C Hamano Mon, 19 Nov 2012 03:33:20 +0000 (19:33 -0800)

Merge branch 'mm/maint-doc-remote-tracking' into maint

Update "remote tracking branch" in the documentation to
"remote-tracking branch".

* mm/maint-doc-remote-tracking:
Documentation: remote tracking branch -> remote-tracking branch

Merge branch 'rs/branch-del-symref' into maintJunio C Hamano Mon, 19 Nov 2012 03:32:58 +0000 (19:32 -0800)

Merge branch 'rs/branch-del-symref' into maint

A symbolic ref refs/heads/SYM was not correctly removed with "git
branch -d SYM"; the command removed the ref pointed by SYM instead.

* rs/branch-del-symref:
branch: show targets of deleted symrefs, not sha1s
branch: skip commit checks when deleting symref branches
branch: delete symref branch, not its target
branch: factor out delete_branch_config()
branch: factor out check_branch_commit()

Merge branch 'nd/grep-true-path' into maintJunio C Hamano Mon, 19 Nov 2012 03:32:30 +0000 (19:32 -0800)

Merge branch 'nd/grep-true-path' into maint

"git grep -e pattern <tree>" asked the attribute system to read
"<tree>:.gitattributes" file in the working tree, which was
nonsense.

* nd/grep-true-path:
grep: stop looking at random places for .gitattributes

Merge branch 'jc/grep-pcre-loose-ends' (early part... Junio C Hamano Mon, 19 Nov 2012 03:32:11 +0000 (19:32 -0800)

Merge branch 'jc/grep-pcre-loose-ends' (early part) into maint

"git log -F -E --grep='<ere>'" failed to use the given <ere>
pattern as extended regular expression, and instead looked for the
string literally.

* 'jc/grep-pcre-loose-ends' (early part):
log --grep: use the same helper to set -E/-F options as "git grep"
revisions: initialize revs->grep_filter using grep_init()
grep: move pattern-type bits support to top-level grep.[ch]
grep: move the configuration parsing logic to grep.[ch]
builtin/grep.c: make configuration callback more reusable

Merge branch 'da/mergetools-p4' into maintJunio C Hamano Mon, 19 Nov 2012 03:31:40 +0000 (19:31 -0800)

Merge branch 'da/mergetools-p4' into maint

"git mergetool" feeds /dev/null as a common ancestor when dealing
with an add/add conflict, but p4merge backend cannot handle it. Work
it around by passing a temporary empty file.

* da/mergetools-p4:
mergetools/p4merge: Handle "/dev/null"

Merge branch 'jc/test-say-color-avoid-echo-escape'... Junio C Hamano Mon, 19 Nov 2012 03:31:13 +0000 (19:31 -0800)

Merge branch 'jc/test-say-color-avoid-echo-escape' into maint

The "say" function in the test scaffolding incorrectly allowed
"echo" to interpret "\a" as if it were a C-string asking for a BEL
output.

* jc/test-say-color-avoid-echo-escape:
test-lib: Fix say_color () not to interpret \a\b\c in the message

Merge branch 'bw/config-lift-variable-name-length-limit... Junio C Hamano Mon, 19 Nov 2012 03:29:44 +0000 (19:29 -0800)

Merge branch 'bw/config-lift-variable-name-length-limit' into maint

The configuration parser had an unnecessary hardcoded limit on
variable names that was not checked consistently.

* bw/config-lift-variable-name-length-limit:
Remove the hard coded length limit on variable names in config files

config: don't segfault when given --path with a missing... Carlos Martín Nieto Thu, 15 Nov 2012 18:10:01 +0000 (10:10 -0800)

config: don't segfault when given --path with a missing value

When given a variable without a value, such as '[section] var' and
asking git-config to treat it as a path, git_config_pathname returns
an error and doesn't modify its output parameter. show_config assumes
that the call is always successful and sets a variable to indicate
that vptr should be freed. In case of an error however, trying to do
this will cause the program to be killed, as it's pointing to memory
in the stack.

Detect the error and return immediately to avoid freeing or accessing
the uninitialed memory in the stack.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

checkout: print a message when switching unborn branchesJeff King Thu, 15 Nov 2012 17:12:33 +0000 (09:12 -0800)

checkout: print a message when switching unborn branches

When we switch to a new branch using checkout, we usually output a
message indicating what happened. However, when we switch from an unborn
branch to a new branch, we do not print anything, which may leave the
user wondering what happened.

The reason is that the unborn branch is a special case (see abe1998),
and does not follow the usual switch_branches code path. Let's add a
similar informational message to the special case to match the usual
code path.

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

Start 1.8.1 cycleJunio C Hamano Thu, 15 Nov 2012 19:21:47 +0000 (11:21 -0800)

Start 1.8.1 cycle

Prepare the release notes for the upcoming release, and describe
changes up to the 5th batch we just merged.

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

Merge branch 'jc/prettier-pretty-note'Junio C Hamano Thu, 15 Nov 2012 18:25:05 +0000 (10:25 -0800)

Merge branch 'jc/prettier-pretty-note'

Emit the notes attached to the commit in "format-patch --notes"
output after three-dashes.

* jc/prettier-pretty-note:
format-patch: add a blank line between notes and diffstat
Doc User-Manual: Patch cover letter, three dashes, and --notes
Doc format-patch: clarify --notes use case
Doc notes: Include the format-patch --notes option
Doc SubmittingPatches: Mention --notes option after "cover letter"
Documentation: decribe format-patch --notes
format-patch --notes: show notes after three-dashes
format-patch: append --signature after notes
pretty_print_commit(): do not append notes message
pretty: prepare notes message at a centralized place
format_note(): simplify API
pretty: remove reencode_commit_message()

Merge branch 'mg/maint-pull-suggest-upstream-to'Junio C Hamano Thu, 15 Nov 2012 18:24:59 +0000 (10:24 -0800)

Merge branch 'mg/maint-pull-suggest-upstream-to'

Follow-on to the new "--set-upstream-to" topic from v1.8.0 to avoid
suggesting the deprecated "--set-upstream".

* mg/maint-pull-suggest-upstream-to:
push/pull: adjust missing upstream help text to changed interface

Merge branch 'mh/notes-string-list'Junio C Hamano Thu, 15 Nov 2012 18:24:53 +0000 (10:24 -0800)

Merge branch 'mh/notes-string-list'

Improve the asymptotic performance of the cat_sort_uniq notes merge
strategy.

* mh/notes-string-list:
string_list_add_refs_from_colon_sep(): use string_list_split()
notes: fix handling of colon-separated values
combine_notes_cat_sort_uniq(): sort and dedup lines all at once
Initialize sort_uniq_list using named constant
string_list: add a function string_list_remove_empty_items()

Merge branch 'mh/strbuf-split'Junio C Hamano Thu, 15 Nov 2012 18:24:49 +0000 (10:24 -0800)

Merge branch 'mh/strbuf-split'

Cleanups and documentation for strbuf_split.

* mh/strbuf-split:
strbuf_split*(): document functions
strbuf_split*(): rename "delim" parameter to "terminator"
strbuf_split_buf(): simplify iteration
strbuf_split_buf(): use ALLOC_GROW()

Merge branch 'mm/maint-doc-commit-edit'Junio C Hamano Thu, 15 Nov 2012 18:24:44 +0000 (10:24 -0800)

Merge branch 'mm/maint-doc-commit-edit'

* mm/maint-doc-commit-edit:
Document 'git commit --no-edit' explicitly

Merge branch 'as/maint-doc-fix-no-post-rewrite'Junio C Hamano Thu, 15 Nov 2012 18:24:29 +0000 (10:24 -0800)

Merge branch 'as/maint-doc-fix-no-post-rewrite'

* as/maint-doc-fix-no-post-rewrite:
commit: fixup misplacement of --no-post-rewrite description

Merge branch 'js/hp-nonstop'Junio C Hamano Thu, 15 Nov 2012 18:24:13 +0000 (10:24 -0800)

Merge branch 'js/hp-nonstop'

Finishing touches to port to HP NonStop continues.

* js/hp-nonstop:
fix 'make test' for HP NonStop

Merge branch 'cr/cvsimport-local-zone'Junio C Hamano Thu, 15 Nov 2012 18:24:09 +0000 (10:24 -0800)

Merge branch 'cr/cvsimport-local-zone'

Allows "cvsimport" to read per-author timezone from the author info
file.

* cr/cvsimport-local-zone:
cvsimport: work around perl tzset issue
git-cvsimport: allow author-specific timezones

Merge branch 'jc/same-encoding'Junio C Hamano Thu, 15 Nov 2012 18:24:05 +0000 (10:24 -0800)

Merge branch 'jc/same-encoding'

Various codepaths checked if two encoding names are the same using
ad-hoc code and some of them ended up asking iconv() to convert
between "utf8" and "UTF-8". The former is not a valid way to spell
the encoding name, but often people use it by mistake, and we
equated them in some but not all codepaths. Introduce a new helper
function to make these codepaths consistent.

* jc/same-encoding:
reencode_string(): introduce and use same_encoding()

Conflicts:
builtin/mailinfo.c

Merge branch 'ph/submodule-sync-recursive'Junio C Hamano Thu, 15 Nov 2012 18:24:01 +0000 (10:24 -0800)

Merge branch 'ph/submodule-sync-recursive'

Adds "--recursive" option to submodule sync.

* ph/submodule-sync-recursive:
Add tests for submodule sync --recursive
Teach --recursive to submodule sync

Merge branch 'jk/maint-diff-grep-textconv'Junio C Hamano Thu, 15 Nov 2012 18:23:57 +0000 (10:23 -0800)

Merge branch 'jk/maint-diff-grep-textconv'

Fixes inconsistent use of textconv with "git log -G".

* jk/maint-diff-grep-textconv:
diff_grep: use textconv buffers for add/deleted files

Merge branch 'jh/symbolic-ref-d'Junio C Hamano Thu, 15 Nov 2012 18:23:51 +0000 (10:23 -0800)

Merge branch 'jh/symbolic-ref-d'

Add "symbolic-ref -d SYM" to delete a symbolic ref SYM.

It is already possible to remove a symbolic ref with "update-ref -d
--no-deref", but it may be a good addition for completeness.

* jh/symbolic-ref-d:
git symbolic-ref --delete $symref

Merge branch 'jc/maint-fetch-tighten-refname-check'Junio C Hamano Thu, 15 Nov 2012 18:22:54 +0000 (10:22 -0800)

Merge branch 'jc/maint-fetch-tighten-refname-check'

For a fetch refspec (or the result of applying wildcard on one), we
always want the RHS to map to something inside "refs/" hierarchy.

This was split out from discarded jc/maint-push-refs-all topic.

* jc/maint-fetch-tighten-refname-check:
get_fetch_map(): tighten checks on dest refs

docs: move submodule sectionMatt Kraai Wed, 14 Nov 2012 18:49:04 +0000 (10:49 -0800)

docs: move submodule section

293ab15e ("submodule: teach rm to remove submodules unless they
contain a git directory", 2012-09-26) inserted the "Submodules"
section between a sentence describing a command and the command. Move
the "Submodules" section further down.

Noticed-by: Horst H. von Brand
Signed-off-by: Matt Kraai <kraai@ftbfs.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: add a blank line between notes and diffstatJunio C Hamano Tue, 13 Nov 2012 18:09:07 +0000 (10:09 -0800)

format-patch: add a blank line between notes and diffstat

The last line of the note text comes immediately before the diffstat
block, making the latter unnecessarily harder to view.

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

replace: parse revision argument for -dMichael J Gruber Tue, 13 Nov 2012 10:34:11 +0000 (11:34 +0100)

replace: parse revision argument for -d

'git replace' parses the revision arguments when it creates replacements
(so that a sha1 can be abbreviated, e.g.) but not when deleting
replacements.

Make it parse the argument to 'replace -d' in the same way.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Jeff King <peff@peff.net>

gitweb: escape html in rss titleJeff King Mon, 12 Nov 2012 21:34:28 +0000 (16:34 -0500)

gitweb: escape html in rss title

The title of an RSS feed is generated from many components,
including the filename provided as a query parameter, but we
failed to quote it. Besides showing the wrong output, this
is a vector for XSS attacks.

Signed-off-by: Jeff King <peff@peff.net>

Update cygwin.c for new mingw-64 win32 api headersMark Levedahl Mon, 12 Nov 2012 00:17:20 +0000 (19:17 -0500)

Update cygwin.c for new mingw-64 win32 api headers

The cygwin project recently switched to a new implementation of the
windows api, now using header files from the mingw-64 project. These
new header files are incompatible with the way cygwin.c included the
old headers: cygwin.c can be compiled using the new or the older (mingw)
headers, but different files must be included in different order for each
to work. The new headers are in use only for the current release series
(based upon the v1.7.x dll version). The previous release series using
the v1.5 dll is kept available but unmaintained for use on older versions
of Windows. So, patch cygwin.c to use the new include ordering only if
the dll version is 1.7 or higher.

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>

Merge branch 'ph/maint-submodule-status-fix'Jeff King Fri, 9 Nov 2012 17:51:15 +0000 (12:51 -0500)

Merge branch 'ph/maint-submodule-status-fix'

Cleans up some leftover bits from an earlier submodule change.

* ph/maint-submodule-status-fix:
submodule status: remove unused orig_* variables
t7407: Fix recursive submodule test

Merge branch 'nd/builtin-to-libgit'Jeff King Fri, 9 Nov 2012 17:51:06 +0000 (12:51 -0500)

Merge branch 'nd/builtin-to-libgit'

Code cleanups so that libgit.a does not depend on anything in the
builtin/ directory.

* nd/builtin-to-libgit:
fetch-pack: move core code to libgit.a
fetch-pack: remove global (static) configuration variable "args"
send-pack: move core code to libgit.a
Move setup_diff_pager to libgit.a
Move print_commit_list to libgit.a
Move estimate_bisect_steps to libgit.a
Move try_merge_command and checkout_fast_forward to libgit.a

Merge branch 'nd/tree-walk-enum-cleanup'Jeff King Fri, 9 Nov 2012 17:51:02 +0000 (12:51 -0500)

Merge branch 'nd/tree-walk-enum-cleanup'

* nd/tree-walk-enum-cleanup:
tree-walk: use enum interesting instead of integer

Merge branch 'sz/maint-curl-multi-timeout'Jeff King Fri, 9 Nov 2012 17:50:56 +0000 (12:50 -0500)

Merge branch 'sz/maint-curl-multi-timeout'

Sometimes curl_multi_timeout() function suggested a wrong timeout
value when there is no file descriptors to wait on and the http
transport ended up sleeping for minutes in select(2) system call.
Detect this and reduce the wait timeout in such a case.

* sz/maint-curl-multi-timeout:
Fix potential hang in https handshake

Merge branch 'fc/completion-send-email-with-format... Jeff King Fri, 9 Nov 2012 17:50:45 +0000 (12:50 -0500)

Merge branch 'fc/completion-send-email-with-format-patch'

* fc/completion-send-email-with-format-patch:
completion: add format-patch options to send-email

Merge branch 'mo/cvs-server-cleanup'Jeff King Fri, 9 Nov 2012 17:50:36 +0000 (12:50 -0500)

Merge branch 'mo/cvs-server-cleanup'

Cleanups to prepare for mo/cvs-server-updates.

* mo/cvs-server-cleanup:
Use character class for sed expression instead of \s
cvsserver status: provide real sticky info
cvsserver: cvs add: do not expand directory arguments
cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
cvsserver: split up long lines in req_{status,diff,log}
cvsserver: clean up client request handler map comments
cvsserver: remove unused functions _headrev and gethistory
cvsserver update: comment about how we shouldn't remove a user-modified file
cvsserver: add comments about database schema/usage
cvsserver: removed unused sha1Or-k mode from kopts_from_path
cvsserver t9400: add basic 'cvs log' test

Merge branch 'km/send-email-compose-encoding'Jeff King Fri, 9 Nov 2012 17:50:29 +0000 (12:50 -0500)

Merge branch 'km/send-email-compose-encoding'

"git send-email --compose" can let the user create a non-ascii
cover letter message, but there was not a way to mark it with
appropriate content type before sending it out.

Further updates fix subject quoting.

* km/send-email-compose-encoding:
git-send-email: add rfc2047 quoting for "=?"
git-send-email: introduce quote_subject()
git-send-email: skip RFC2047 quoting for ASCII subjects
git-send-email: use compose-encoding for Subject
git-send-email: introduce compose-encoding

Merge branch 'js/format-2047'Jeff King Fri, 9 Nov 2012 17:42:32 +0000 (12:42 -0500)

Merge branch 'js/format-2047'

Fixes many rfc2047 quoting issues in the output from format-patch.

* js/format-2047:
format-patch tests: check quoting/encoding in To: and Cc: headers
format-patch: fix rfc2047 address encoding with respect to rfc822 specials
format-patch: make rfc2047 encoding more strict
format-patch: introduce helper function last_line_length()
format-patch: do not wrap rfc2047 encoded headers too late
format-patch: do not wrap non-rfc2047 headers too early
utf8: fix off-by-one wrapping of text

Merge branch 'rs/lock-correct-ref-during-delete'Jeff King Fri, 9 Nov 2012 17:42:28 +0000 (12:42 -0500)

Merge branch 'rs/lock-correct-ref-during-delete'

When "update-ref -d --no-deref SYM" tried to delete a symbolic ref
SYM, it incorrectly locked the underlying reference pointed by SYM,
not the symbolic ref itself.

* rs/lock-correct-ref-during-delete:
refs: lock symref that is to be deleted, not its target

Merge branch 'nd/attr-match-optim-more'Jeff King Fri, 9 Nov 2012 17:42:25 +0000 (12:42 -0500)

Merge branch 'nd/attr-match-optim-more'

Start laying the foundation to build the "wildmatch" after we can
agree on its desired semantics.

* nd/attr-match-optim-more:
attr: more matching optimizations from .gitignore
gitignore: make pattern parsing code a separate function
exclude: split pathname matching code into a separate function
exclude: fix a bug in prefix compare optimization
exclude: split basename matching code into a separate function
exclude: stricten a length check in EXC_FLAG_ENDSWITH case

Merge branch 'mh/maint-parse-dirstat-fix'Jeff King Fri, 9 Nov 2012 17:42:21 +0000 (12:42 -0500)

Merge branch 'mh/maint-parse-dirstat-fix'

Cleans up some code and avoids a potential bug.

* mh/maint-parse-dirstat-fix:
parse_dirstat_params(): use string_list to split comma-separated string

gitweb.perl: fix %highlight_ext mappingsRichard Hubbell Sun, 4 Nov 2012 17:45:55 +0000 (09:45 -0800)

gitweb.perl: fix %highlight_ext mappings

When commit 592ea41 refactored the list of extensions for
syntax highlighting, it failed to take into account perl's
operator precedence within lists. As a result, we end up
creating a dictionary of one-to-one elements when the intent
was to map mutliple related types to one main type (e.g.,
bash, ksh, zsh, and sh should all map to sh since they share
similar syntax, but we ended up just mapping "bash" to
"bash" and so forth).

This patch adds parentheses to make the mapping as the
original change intended. It also reorganizes the list to
keep mapped extensions together.

Signed-off-by: Richard Hubbell <richard_hubbe11@lavabit.com>
Signed-off-by: Jeff King <peff@peff.net>

git p4: RCS expansion should not span newlinesPete Wyckoff Sun, 4 Nov 2012 22:04:02 +0000 (17:04 -0500)

git p4: RCS expansion should not span newlines

This bug was introduced in cb585a9 (git-p4: keyword
flattening fixes, 2011-10-16). The newline character
is indeed special, and $File$ expansions should not try
to match across multiple lines.

Based-on-patch-by: Chris Goard <cgoard@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Jeff King <peff@peff.net>

link_alt_odb_entries(): take (char *, len) rather than... Michael Haggerty Mon, 5 Nov 2012 08:41:23 +0000 (09:41 +0100)

link_alt_odb_entries(): take (char *, len) rather than two pointers

Change link_alt_odb_entries() to take the length of the "alt"
parameter rather than a pointer to the end of the "alt" string. This
is the more common calling convention and simplifies the code a tiny
bit.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>

link_alt_odb_entries(): use string_list_split_in_place()Michael Haggerty Mon, 5 Nov 2012 08:41:22 +0000 (09:41 +0100)

link_alt_odb_entries(): use string_list_split_in_place()

Change link_alt_odb_entry() to take a NUL-terminated string instead of
(char *, len). Use string_list_split_in_place() rather than inline
code in link_alt_odb_entries().

This approach saves some code and also avoids the (probably harmless)
error of passing a non-NUL-terminated string to is_absolute_path().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Jeff King <peff@peff.net>

string_list_add_refs_from_colon_sep(): use string_list_... Michael Haggerty Sun, 4 Nov 2012 07:07:10 +0000 (08:07 +0100)

string_list_add_refs_from_colon_sep(): use string_list_split()

It makes for simpler code than strbuf_split().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>

notes: fix handling of colon-separated valuesMichael Haggerty Sun, 4 Nov 2012 07:07:09 +0000 (08:07 +0100)

notes: fix handling of colon-separated values

The substrings output by strbuf_split() include the ':' delimiters.
When processing GIT_NOTES_DISPLAY_REF and GIT_NOTES_REWRITE_REF, strip
off the delimiter character *before* checking whether the substring is
empty rather than after, so that empty strings within the list are
also skipped.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>

combine_notes_cat_sort_uniq(): sort and dedup lines... Michael Haggerty Sun, 4 Nov 2012 07:07:08 +0000 (08:07 +0100)

combine_notes_cat_sort_uniq(): sort and dedup lines all at once

Instead of reading lines one by one and insertion-sorting them into a
string_list, read all of the lines, sort them, then remove duplicates.
Aside from being less code, this reduces the complexity from O(N^2) to
O(N lg N) in the total number of lines.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>

Initialize sort_uniq_list using named constantMichael Haggerty Sun, 4 Nov 2012 07:07:07 +0000 (08:07 +0100)

Initialize sort_uniq_list using named constant

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>

string_list: add a function string_list_remove_empty_it... Michael Haggerty Sun, 4 Nov 2012 07:07:06 +0000 (08:07 +0100)

string_list: add a function string_list_remove_empty_items()

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Jeff King <peff@peff.net>

push/pull: adjust missing upstream help text to changed... Michael J Gruber Tue, 6 Nov 2012 10:29:01 +0000 (11:29 +0100)

push/pull: adjust missing upstream help text to changed interface

In case of a missing upstream, the git-parse-remote script suggests:

If you wish to set tracking information for this branch you can do so
with:

git branch --set-upstream nsiv2 origin/<branch>

But --set-upstream is deprectated. Change the suggestion to:

git branch --set-upstream-to=origin/<branch> nsiv2

Reported-by: Jeroen van der Ham <vdham@uva.nl>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Jeff King <peff@peff.net>

reencode_string(): introduce and use same_encoding()Junio C Hamano Fri, 19 Oct 2012 05:41:56 +0000 (22:41 -0700)

reencode_string(): introduce and use same_encoding()

Callers of reencode_string() that re-encodes a string from one
encoding to another all used ad-hoc way to bypass the case where the
input and the output encodings are the same. Some did strcmp(),
some did strcasecmp(), yet some others when converting to UTF-8 used
is_encoding_utf8().

Introduce same_encoding() helper function to make these callers use
the same logic. Notably, is_encoding_utf8() has a work-around for
common misconfiguration to use "utf8" to name UTF-8 encoding, which
does not match "UTF-8" hence strcasecmp() would not consider the
same. Make use of it in this helper function.

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

cvsimport: work around perl tzset issueJeff King Sun, 4 Nov 2012 12:25:36 +0000 (07:25 -0500)

cvsimport: work around perl tzset issue

On many platforms, the first invocation of localtime_r will
check $TZ in the environment, but subsequent invocations
will use a cached value. That means that setting $ENV{TZ} in
the middle of the program may or may not have an effect on
later calls to localtime. Perl 5.10.0 and later handles
this automatically for us, but we try to remain portable
back to 5.8. Work around it by calling tzset ourselves.

Merge branch 'tj/maint-doc-commit-sign'Jeff King Sun, 4 Nov 2012 13:00:47 +0000 (08:00 -0500)

Merge branch 'tj/maint-doc-commit-sign'

* tj/maint-doc-commit-sign:
Add -S, --gpg-sign option to manpage of "git commit"

Merge branch 'pp/maint-doc-pager-config'Jeff King Sun, 4 Nov 2012 13:00:37 +0000 (08:00 -0500)

Merge branch 'pp/maint-doc-pager-config'

* pp/maint-doc-pager-config:
Documentation: improve the example of overriding LESS via core.pager

Merge branch 'km/maint-doc-git-reset'Jeff King Sun, 4 Nov 2012 13:00:33 +0000 (08:00 -0500)

Merge branch 'km/maint-doc-git-reset'

* km/maint-doc-git-reset:
doc: git-reset: make "<mode>" optional

Merge branch 'tb/maint-t9200-case-insensitive'Jeff King Sun, 4 Nov 2012 13:00:29 +0000 (08:00 -0500)

Merge branch 'tb/maint-t9200-case-insensitive'

* tb/maint-t9200-case-insensitive:
Fix t9200 on case insensitive file systems

Merge branch 'rf/maint-mailmap-off-by-one'Jeff King Sun, 4 Nov 2012 13:00:23 +0000 (08:00 -0500)

Merge branch 'rf/maint-mailmap-off-by-one'

* rf/maint-mailmap-off-by-one:
mailmap: avoid out-of-bounds memory access

Merge branch 'gb/maint-doc-svn-log-window-size'Jeff King Sun, 4 Nov 2012 13:00:21 +0000 (08:00 -0500)

Merge branch 'gb/maint-doc-svn-log-window-size'

* gb/maint-doc-svn-log-window-size:
Document git-svn fetch --log-window-size parameter