gitweb.git
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

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

Merge branch 'sz/maint-submodule-reference-arg'Jeff King Sun, 4 Nov 2012 13:00:16 +0000 (08:00 -0500)

Merge branch 'sz/maint-submodule-reference-arg'

* sz/maint-submodule-reference-arg:
submodule add: fix handling of --reference=<repo> option

Merge branch 'sl/maint-configure-messages'Jeff King Sun, 4 Nov 2012 13:00:13 +0000 (08:00 -0500)

Merge branch 'sl/maint-configure-messages'

Minor message fixes for the configure script.

* sl/maint-configure-messages:
configure: fix some output message

Merge branch 'po/maint-refs-replace-docs'Jeff King Sun, 4 Nov 2012 13:00:11 +0000 (08:00 -0500)

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

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'Jeff King Sun, 4 Nov 2012 13:00:06 +0000 (08:00 -0500)

Merge branch 'ph/pull-rebase-detached'

Avoids spewing error messages when using "pull --rebase" on a
detached HEAD.

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

Merge branch 'mm/maint-doc-remote-tracking'Jeff King Sun, 4 Nov 2012 12:59:57 +0000 (07:59 -0500)

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

We long ago hyphenated "remote-tracking branch"; this
catches some new instances added since then.

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

Add -S, --gpg-sign option to manpage of "git commit"Tom Jones Sun, 21 Oct 2012 19:46:37 +0000 (20:46 +0100)

Add -S, --gpg-sign option to manpage of "git commit"

git commit -S, --gpg-sign was mentioned in the program's help message,
but not in the manpage.

This adds an equivalent entry for the option in the manpage.

Signed-off-by: Tom Jones <tom@oxix.org>
Signed-off-by: Jeff King <peff@peff.net>

Merge branch 'rs/branch-del-symref'Jeff King Mon, 29 Oct 2012 08:15:04 +0000 (04:15 -0400)

Merge branch 'rs/branch-del-symref'

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/status-long'Jeff King Mon, 29 Oct 2012 08:14:57 +0000 (04:14 -0400)

Merge branch 'nd/status-long'

Allow an earlier "--short" option on the command line to be
countermanded with the "--long" option for "git status" and "git
commit".

* nd/status-long:
status: add --long output format option

Merge branch 'jk/sh-setup-in-filter-branch'Jeff King Mon, 29 Oct 2012 08:13:49 +0000 (04:13 -0400)

Merge branch 'jk/sh-setup-in-filter-branch'

Refactoring to avoid code duplication in shell scripts.

* jk/sh-setup-in-filter-branch:
filter-branch: use git-sh-setup's ident parsing functions
git-sh-setup: refactor ident-parsing functions

Merge branch 'nd/grep-true-path'Jeff King Mon, 29 Oct 2012 08:13:16 +0000 (04:13 -0400)

Merge branch 'nd/grep-true-path'

"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 'jk/maint-http-init-not-in-result-handler'Jeff King Mon, 29 Oct 2012 08:13:09 +0000 (04:13 -0400)

Merge branch 'jk/maint-http-init-not-in-result-handler'

Further clean-up to the http codepath that picks up results after
cURL library is done with one request slot.

* jk/maint-http-init-not-in-result-handler:
http: do not set up curl auth after a 401
remote-curl: do not call run_slot repeatedly

Merge branch 'jc/grep-pcre-loose-ends'Jeff King Mon, 29 Oct 2012 08:12:15 +0000 (04:12 -0400)

Merge branch 'jc/grep-pcre-loose-ends'

"git log -F -E --grep='<ere>'" failed to use the given <ere>
pattern as extended regular expression, and instead looked for the
string literally. The early part of this series is a fix for it;
the latter part teaches log to respect the grep.* configuration.

* jc/grep-pcre-loose-ends:
log: honor grep.* configuration
log --grep: accept --basic-regexp and --perl-regexp
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 'jl/submodule-add-by-name'Jeff King Mon, 29 Oct 2012 08:12:12 +0000 (04:12 -0400)

Merge branch 'jl/submodule-add-by-name'

If you remove a submodule, in order to keep the repository so that
"git checkout" to an older commit in the superproject history can
resurrect the submodule, the real repository will stay in $GIT_DIR
of the superproject. A later "git submodule add $path" to add a
different submodule at the same path will fail. Diagnose this case
a bit better, and if the user really wants to add an unrelated
submodule at the same path, give the "--name" option to give it a
place in $GIT_DIR of the superproject that does not conflict with
the original submodule.

* jl/submodule-add-by-name:
submodule add: Fail when .git/modules/<name> already exists unless forced
Teach "git submodule add" the --name option

Merge branch 'jl/submodule-rm'Jeff King Mon, 29 Oct 2012 08:12:07 +0000 (04:12 -0400)

Merge branch 'jl/submodule-rm'

"git rm submodule" cannot blindly remove a submodule directory as
its working tree may have local changes, and worse yet, it may even
have its repository embedded in it. Teach it some special cases
where it is safe to remove a submodule, specifically, when there is
no local changes in the submodule working tree, and its repository
is not embedded in its working tree but is elsewhere and uses the
gitfile mechanism to point at it.

* jl/submodule-rm:
submodule: teach rm to remove submodules unless they contain a git directory

parse_dirstat_params(): use string_list to split comma... Michael Haggerty Sun, 28 Oct 2012 16:50:54 +0000 (17:50 +0100)

parse_dirstat_params(): use string_list to split comma-separated string

Use string_list_split_in_place() to split the comma-separated
parameters string. This simplifies the code and also fixes a bug: the
old code made calls like

memcmp(p, "lines", p_len)

which needn't work if p_len is different than the length of the
constant string (and could illegally access memory if p_len is larger
than the length of the constant string).

When p_len was less than the length of the constant string, the old
code would have allowed some abbreviations to be accepted (e.g., "cha"
for "changes") but this seems to have been a bug rather than a
feature, because (1) it is not documented; (2) no attempt was made to
handle ambiguous abbreviations, like "c" for "changes" vs
"cumulative".

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

Documentation: improve the example of overriding LESS... Patrick Palka Sun, 28 Oct 2012 20:12:46 +0000 (16:12 -0400)

Documentation: improve the example of overriding LESS via core.pager

You can override an option set in the LESS variable by simply prefixing
the command line option with `-+`. This is more robust than the previous
example if the default LESS options are to ever change.

Signed-off-by: Patrick Palka <patrick@parcs.ath.cx>
Signed-off-by: Jeff King <peff@peff.net>

doc: git-reset: make "<mode>" optionalKrzysztof Mazur Sun, 28 Oct 2012 14:13:27 +0000 (15:13 +0100)

doc: git-reset: make "<mode>" optional

The git-reset's "<mode>" is an optional argument, however it was
documented as required.

The "<mode>" is documented as one of: --soft, --mixed, --hard, --merge
or --keep, so "<mode>" should be used instead of "--<mode>".

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Jeff King <peff@peff.net>

Fix t9200 on case insensitive file systemsTorsten Bögershausen Fri, 26 Oct 2012 16:18:24 +0000 (18:18 +0200)

Fix t9200 on case insensitive file systems

t9200 defines $CVSROOT where cvs should init its repository
$CVSROOT is set to $PWD/cvsroot.
cvs init is supposed to create the repository inside $PWD/cvsroot/CVSROOT

"cvs init" (e.g. version 1.11.23) checks if the last element of the path is
"CVSROOT", and if a directory with e.g. $PWD/cvsroot/CVSROOT already exists.

For such a $CVSROOT cvs refuses to init a repository here:
"Cannot initialize repository under existing CVSROOT:

On a case insenstive file system cvsroot and CVSROOT are the same directories
and t9200 fails.

Solution: use $PWD/tmpcvsroot instead of cvsroot $PWD/cvsroot

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Jeff King <peff@peff.net>

mailmap: avoid out-of-bounds memory accessRomain Francoise Sat, 27 Oct 2012 22:49:55 +0000 (00:49 +0200)

mailmap: avoid out-of-bounds memory access

AddressSanitizer (http://clang.llvm.org/docs/AddressSanitizer.html)
complains of a one-byte buffer underflow in parse_name_and_email() while
running the test suite. And indeed, if one of the lines in the mailmap
begins with '<', we dereference the address just before the beginning of
the buffer when looking for whitespace to remove, before checking that
we aren't going too far.

So reverse the order of the tests to make sure that we don't read
outside the buffer.

Signed-off-by: Romain Francoise <romain@orebokech.com>
Signed-off-by: Jeff King <peff@peff.net>

submodule add: fix handling of --reference=<repo> optionStefan Zager Thu, 25 Oct 2012 04:52:52 +0000 (21:52 -0700)

submodule add: fix handling of --reference=<repo> option

Doing a shift here is wrong because there is no extra
argument to consume when "--reference=<repo>" is used (note
the '=' instead of a space).

Signed-off-by: Stefan Zager <szager@google.com>
Signed-off-by: Jeff King <peff@peff.net>

Document git-svn fetch --log-window-size parameterGunnlaugur Þór Briem Tue, 23 Oct 2012 10:33:26 +0000 (10:33 +0000)

Document git-svn fetch --log-window-size parameter

The --log-window-size parameter to git-svn fetch is undocumented.

Minimally describe what it does and why the user might change it.

Signed-off-by: Gunnlaugur Þór Briem <gunnlaugur@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>

configure: fix some output messageStefano Lattarini Wed, 24 Oct 2012 15:34:27 +0000 (17:34 +0200)

configure: fix some output message

Before this change, output from ./configure could contain
botched wording like this:

checking Checking for POSIX Threads with '-pthread'... yes

instead of the intended:

checking for POSIX Threads with '-pthread'... yes

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>

Doc repository-layout: Show refs/replacePhilip Oakley Sun, 21 Oct 2012 20:52:37 +0000 (21:52 +0100)

Doc repository-layout: Show refs/replace

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Jeff King <peff@peff.net>

Documentation: remote tracking branch -> remote-trackin... Matthieu Moy Tue, 23 Oct 2012 11:34:05 +0000 (13:34 +0200)

Documentation: remote tracking branch -> remote-tracking branch

This change was already done by 0e615b252f3 (Matthieu Moy, Tue Nov 2
2010, Replace "remote tracking" with "remote-tracking"), but new
instances of remote tracking (without dash) were introduced in the
meantime.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Jeff King <peff@peff.net>

Merge branch 'jk/strbuf-detach-always-non-null'Jeff King Thu, 25 Oct 2012 10:43:03 +0000 (06:43 -0400)

Merge branch 'jk/strbuf-detach-always-non-null'

* jk/strbuf-detach-always-non-null:
strbuf: always return a non-NULL value from strbuf_detach

Merge branch 'js/mingw-fflush-errno'Jeff King Thu, 25 Oct 2012 10:43:01 +0000 (06:43 -0400)

Merge branch 'js/mingw-fflush-errno'

* js/mingw-fflush-errno:
maybe_flush_or_die: move a too-loose Windows specific error

Merge branch 'da/mergetools-p4'Jeff King Thu, 25 Oct 2012 10:42:57 +0000 (06:42 -0400)

Merge branch 'da/mergetools-p4'

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

Merge branch 'jc/test-say-color-avoid-echo-escape'Jeff King Thu, 25 Oct 2012 10:42:49 +0000 (06:42 -0400)

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

Recent nd/wildmatch series was the first to reveal this ancient bug
in the test scaffolding.

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

Merge branch 'nd/attr-match-optim'Jeff King Thu, 25 Oct 2012 10:42:36 +0000 (06:42 -0400)

Merge branch 'nd/attr-match-optim'

Trivial and obvious optimization for finding attributes that match
a given path.

* nd/attr-match-optim:
attr: avoid searching for basename on every match
attr: avoid strlen() on every match

Merge branch 'jk/peel-ref'Jeff King Thu, 25 Oct 2012 10:42:27 +0000 (06:42 -0400)

Merge branch 'jk/peel-ref'

Speeds up "git upload-pack" (what is invoked by "git fetch" on the
other side of the connection) by reducing the cost to advertise the
branches and tags that are available in the repository.

* jk/peel-ref:
upload-pack: use peel_ref for ref advertisements
peel_ref: check object type before loading
peel_ref: do not return a null sha1
peel_ref: use faster deref_tag_noverify

Merge branch 'bw/config-lift-variable-name-length-limit'Jeff King Thu, 25 Oct 2012 10:42:11 +0000 (06:42 -0400)

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

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

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

Merge branch 'fa/remote-svn'Jeff King Thu, 25 Oct 2012 10:42:01 +0000 (06:42 -0400)

Merge branch 'fa/remote-svn'

A GSoC project.

* fa/remote-svn:
Add a test script for remote-svn
remote-svn: add marks-file regeneration
Add a svnrdump-simulator replaying a dump file for testing
remote-svn: add incremental import
remote-svn: Activate import/export-marks for fast-import
Create a note for every imported commit containing svn metadata
vcs-svn: add fast_export_note to create notes
Allow reading svn dumps from files via file:// urls
remote-svn, vcs-svn: Enable fetching to private refs
When debug==1, start fast-import with "--stats" instead of "--quiet"
Add documentation for the 'bidi-import' capability of remote-helpers
Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
Add argv_array_detach and argv_array_free_detached
Add svndump_init_fd to allow reading dumps from arbitrary FDs
Add git-remote-testsvn to Makefile
Implement a remote helper for svn in C

Merge branch 'jm/diff-context-config'Jeff King Thu, 25 Oct 2012 10:41:57 +0000 (06:41 -0400)

Merge branch 'jm/diff-context-config'

Teaches a new configuration variable to "git diff" Porcelain and
its friends.

* jm/diff-context-config:
t4055: avoid use of sed 'a' command
diff: diff.context configuration gives default to -U

Merge branch 'jk/no-more-pre-exec-callback'Jeff King Thu, 25 Oct 2012 10:41:15 +0000 (06:41 -0400)

Merge branch 'jk/no-more-pre-exec-callback'

Removes a workaround for buggy version of less older than version
406.

* jk/no-more-pre-exec-callback:
pager: drop "wait for output to run less" hack

git-send-email: add rfc2047 quoting for "=?"Krzysztof Mazur Wed, 24 Oct 2012 21:28:29 +0000 (23:28 +0200)

git-send-email: add rfc2047 quoting for "=?"

For raw subjects rfc2047 quoting is needed not only for non-ASCII characters,
but also for any possible rfc2047 in it.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Jeff King <peff@peff.net>

git-send-email: introduce quote_subject()Krzysztof Mazur Wed, 24 Oct 2012 21:08:26 +0000 (23:08 +0200)

git-send-email: introduce quote_subject()

The quote_rfc2047() always adds RFC2047 quoting. To avoid
quoting ASCII subjects, before calling quote_rfc2047()
subject must be tested for non-ASCII characters. This patch
introduces a new quote_subject() function, which performs
the test and calls quote_rfc2047 only if necessary.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Jeff King <peff@peff.net>

git-send-email: skip RFC2047 quoting for ASCII subjectsKrzysztof Mazur Wed, 24 Oct 2012 08:03:35 +0000 (10:03 +0200)

git-send-email: skip RFC2047 quoting for ASCII subjects

The git-send-email always use RFC2047 subject quoting for
files with "broken" encoding - non-ASCII files without
Content-Transfer-Encoding, even for ASCII subjects. This is
harmless but unnecessarily ugly for people reading the raw
headers. This patch skips rfc2047 quoting when the subject
does not need it.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Jeff King <peff@peff.net>

git-send-email: use compose-encoding for SubjectKrzysztof Mazur Mon, 22 Oct 2012 12:41:48 +0000 (14:41 +0200)

git-send-email: use compose-encoding for Subject

The commit "git-send-email: introduce compose-encoding" introduced
the compose-encoding option to specify the introduction email encoding
(--compose option), but the email Subject encoding was still hardcoded
to UTF-8.

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Signed-off-by: Jeff King <peff@peff.net>

git-pull: Avoid merge-base on detached headPhil Hord Tue, 23 Oct 2012 20:39:56 +0000 (16:39 -0400)

git-pull: Avoid merge-base on detached head

git pull --rebase does some clever tricks to find the base
for $upstream, but it forgets that we may not have any
branch at all. When this happens, git merge-base reports its
"usage" help in the middle of an otherwise successful
rebase operation, because git-merge is called with one too
few parameters.

Since we do not need the merge-base trick in the case of a
detached HEAD, detect this condition and bypass the clever
trick and the usage noise.

Signed-off-by: Phil Hord <hordp@cisco.com>
Signed-off-by: Jeff King <peff@peff.net>

Git 1.8.0 v1.8.0Junio C Hamano Sun, 21 Oct 2012 20:56:23 +0000 (13:56 -0700)

Git 1.8.0

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

filter-branch: use git-sh-setup's ident parsing functionsJeff King Thu, 18 Oct 2012 10:33:02 +0000 (06:33 -0400)

filter-branch: use git-sh-setup's ident parsing functions

This saves us some code, but it also reduces the number of
processes we start for each filtered commit. Since we can
parse both author and committer in the same sed invocation,
we save one process. And since the new interface avoids tr,
we save 4 processes.

It also avoids using "tr", which has had some odd
portability problems reported with from Solaris's xpg6
version.

We also tweak one of the tests in t7003 to double-check that
we are properly exporting the variables (because test-lib.sh
exports GIT_AUTHOR_NAME, it will be automatically exported
in subprograms. We override this to make sure that
filter-branch handles it properly itself).

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

git-sh-setup: refactor ident-parsing functionsJeff King Thu, 18 Oct 2012 07:25:22 +0000 (03:25 -0400)

git-sh-setup: refactor ident-parsing functions

The only ident-parsing function we currently provide is
get_author_ident_from_commit. This is not very
flexible for two reasons:

1. It takes a commit as an argument, and can't read from
commit headers saved on disk.

2. It will only parse authors, not committers.

This patch provides a more flexible interface which will
parse multiple idents from a commit provide on stdin. We can
easily use it as a building block for the current function
to retain compatibility.

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

status: add --long output format optionJeff King Thu, 18 Oct 2012 14:15:50 +0000 (21:15 +0700)

status: add --long output format option

You can currently set the output format to --short or
--porcelain. There is no --long, because we default to it
already. However, you may want to override an alias that
uses "--short" to get back to the default.

This requires a little bit of refactoring, because currently
we use STATUS_FORMAT_LONG internally to mean the same as
"the user did not specify anything". By expanding the enum
to include STATUS_FORMAT_NONE, we can distinguish between
the implicit and explicit cases. This effects these
conditions:

1. The user has asked for NUL termination. With NONE, we
currently default to turning on the porcelain mode.
With an explicit --long, we would in theory use NUL
termination with the long mode, but it does not support
it. So we can just complain and die.

2. When an output format is given to "git commit", we
default to "--dry-run". This behavior would now kick in
when "--long" is given, too.

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

branch: show targets of deleted symrefs, not sha1sRené Scharfe Thu, 18 Oct 2012 12:08:03 +0000 (14:08 +0200)

branch: show targets of deleted symrefs, not sha1s

git branch reports the abbreviated hash of the head commit of
a deleted branch to make it easier for a user to undo the
operation. For symref branches this doesn't help. Print the
symref target instead for them.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: skip commit checks when deleting symref branchesRené Scharfe Thu, 18 Oct 2012 12:07:11 +0000 (14:07 +0200)

branch: skip commit checks when deleting symref branches

Before a branch is deleted, we check that it points to a valid
commit. With -d we also check that the commit is a merged; this
check is not done with -D.

The reason for that is that commits pointed to by branches should
never go missing; if they do then something broke and it's better
to stop instead of adding to the mess. And a non-merged commit
may contain changes that are worth preserving, so we require the
stronger option -D instead of -d to get rid of them.

If a branch consists of a symref, these concerns don't apply.
Deleting such a branch can't make a commit become unreferenced,
so we don't need to check if it is merged, or even if it is
actually a valid commit. Skip them in that case. This allows
us to delete dangling symref branches.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: delete symref branch, not its targetRené Scharfe Thu, 18 Oct 2012 12:05:17 +0000 (14:05 +0200)

branch: delete symref branch, not its target

If a branch that is to be deleted happens to be a symref to another
branch, the current code removes the targeted branch instead of the
one it was called for.

Change this surprising behaviour and delete the symref branch
instead.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: factor out delete_branch_config()René Scharfe Thu, 18 Oct 2012 12:04:08 +0000 (14:04 +0200)

branch: factor out delete_branch_config()

Provide a small helper function for deleting branch config sections.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: factor out check_branch_commit()René Scharfe Thu, 18 Oct 2012 12:02:51 +0000 (14:02 +0200)

branch: factor out check_branch_commit()

Move the code to perform checks on the tip commit of a branch
to its own function.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch tests: check quoting/encoding in To: and... Jan H. Schönherr Thu, 18 Oct 2012 14:43:34 +0000 (16:43 +0200)

format-patch tests: check quoting/encoding in To: and Cc: headers

git-format-patch does currently not parse user supplied extra header
values (e. g., --cc, --add-header) and just replays them. That forces
users to add them RFC 2822/2047 conform in encoded form, e.g.

--cc '=?UTF-8?q?Jan=20H=2E=20Sch=C3=B6nherr?= <...>'

which is inconvenient. We would want to update git-format-patch to
accept human-readable input

--cc 'Jan H. Schönherr <...>'

and handle the encoding, wrapping and quoting internally in the future,
similar to what is already done in git-send-email. The necessary code
should mostly exist in the code paths that handle the From: and Subject:
headers.

Whether we want to do this only for the git-format-patch options
--to and --cc (and the corresponding config options) or also for
user supplied headers via --add-header, is open for discussion.

For now, add test_expect_failure tests for To: and Cc: headers as a
reminder and fix tests that would otherwise fail should this get
implemented.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: fix rfc2047 address encoding with respect... Jan H. Schönherr Thu, 18 Oct 2012 14:43:33 +0000 (16:43 +0200)

format-patch: fix rfc2047 address encoding with respect to rfc822 specials

According to RFC 2047 and RFC 822, rfc2047 encoded words and and rfc822
quoted strings do not mix. Since add_rfc2047() no longer leaves RFC 822
specials behind, the quoting is also no longer necessary to create a
standard-conforming mail.

Remove the quoting, when RFC 2047 encoding takes place. This actually
requires to refactor add_rfc2047() a bit, so that the different cases
can be distinguished.

With this patch, my own name gets correctly decoded as Jan H. Schönherr
(without quotes) and not as "Jan H. Schönherr" (with quotes).

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: make rfc2047 encoding more strictJan H. Schönherr Thu, 18 Oct 2012 14:43:32 +0000 (16:43 +0200)

format-patch: make rfc2047 encoding more strict

RFC 2047 requires more characters to be encoded than it is currently done.
Especially, RFC 2047 distinguishes between allowed remaining characters
in encoded words in addresses (From, To, etc.) and other headers, such
as Subject.

Make add_rfc2047() and is_rfc2047_special() location dependent and include
all non-allowed characters to hopefully be RFC 2047 conformant.

This especially fixes a problem, where RFC 822 specials (e. g. ".") were
left unencoded in addresses, which was solved with a non-standard-conforming
workaround in the past (which is going to be removed in a follow-up patch).

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: introduce helper function last_line_length()Jan H. Schönherr Thu, 18 Oct 2012 14:43:31 +0000 (16:43 +0200)

format-patch: introduce helper function last_line_length()

Currently, an open-coded loop to calculate the length of the last
line of a string buffer is used in multiple places.

Move that code into a function of its own.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: do not wrap rfc2047 encoded headers too... Jan H. Schönherr Thu, 18 Oct 2012 14:43:30 +0000 (16:43 +0200)

format-patch: do not wrap rfc2047 encoded headers too late

Encoded characters add more than one character at once to an encoded
header. Include all characters that are about to be added in the length
calculation for wrapping.

Additionally, RFC 2047 imposes a maximum line length of 76 characters
if that line contains an rfc2047 encoded word.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: do not wrap non-rfc2047 headers too earlyJan H. Schönherr Thu, 18 Oct 2012 14:43:29 +0000 (16:43 +0200)

format-patch: do not wrap non-rfc2047 headers too early

Do not wrap the second and later lines of non-rfc2047-encoded headers
substantially before the 78 character limit.

Instead of passing the remaining length of the first line as wrapping
width, use the correct maximum length and tell strbuf_add_wrapped_bytes()
how many characters of the first line are already used.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

utf8: fix off-by-one wrapping of textJan H. Schönherr Thu, 18 Oct 2012 14:43:28 +0000 (16:43 +0200)

utf8: fix off-by-one wrapping of text

The wrapping logic in strbuf_add_wrapped_text() does currently not allow
lines that entirely fill the allowed width, instead it wraps the line one
character too early.

For example, the text "This is the sixth commit." formatted via
"%w(11,1,2)" (wrap at 11 characters, 1 char indent of first line, 2 char
indent of following lines) results in four lines: " This is", " the",
" sixth", " commit." This is wrong, because " the sixth" is exactly
11 characters long, and thus allowed.

Fix this by allowing the (width+1) character of a line to be a valid
wrapping point if it is a whitespace character.

Signed-off-by: Jan H. Schönherr <schnhrr@cs.tu-berlin.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

strbuf: always return a non-NULL value from strbuf_detachJeff King Thu, 18 Oct 2012 10:00:12 +0000 (06:00 -0400)

strbuf: always return a non-NULL value from strbuf_detach

The current behavior is to return NULL when strbuf did not
actually allocate a string. This can be quite surprising to
callers, though, who may feed the strbuf from arbitrary data
and expect to always get a valid value.

In most cases, it does not make a difference because calling
any strbuf function will cause an allocation (even if the
function ends up not inserting any data). But if the code is
structured like:

struct strbuf buf = STRBUF_INIT;
if (some_condition)
strbuf_addstr(&buf, some_string);
return strbuf_detach(&buf, NULL);

then you may or may not return NULL, depending on the
condition. This can cause us to segfault in http-push
(when fed an empty URL) and in http-backend (when an empty
parameter like "foo=bar&&" is in the $QUERY_STRING).

This patch forces strbuf_detach to allocate an empty
NUL-terminated string when it is called on a strbuf that has
not been allocated.

I investigated all call-sites of strbuf_detach. The majority
are either not affected by the change (because they call a
strbuf_* function unconditionally), or can handle the empty
string just as easily as NULL.

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

Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-guiJunio C Hamano Wed, 17 Oct 2012 22:55:46 +0000 (15:55 -0700)

Merge tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui

git-gui 0.17.0

* tag 'gitgui-0.17.0' of git://repo.or.cz/git-gui:
git-gui 0.17
git-gui: Don't prepend the prefix if value looks like a full path
git-gui: Detect full path when parsing arguments
git-gui: remove .git/CHERRY_PICK_HEAD after committing
git-gui: Fix a loose/lose mistake
git-gui: Fix semi-working shortcuts for unstage and revert
git-gui: de.po: translate "remote" as "extern"
git-gui: de.po: translate "bare" as "bloß"
git-gui: de.po: consistently add untranslated hook names within braces
git-gui: preserve commit messages in utf-8
git-gui: open console when using --trace on windows
git-gui: fix a typo in po/ files
git-gui: Use PWD if it exists on Mac OS X
git-gui: fix git-gui crash due to uninitialized variable

git-gui 0.17 gitgui-0.17.0Pat Thoyts Wed, 17 Oct 2012 20:57:29 +0000 (21:57 +0100)

git-gui 0.17

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: Don't prepend the prefix if value looks like... Andrew Wong Tue, 2 Oct 2012 16:25:15 +0000 (12:25 -0400)

git-gui: Don't prepend the prefix if value looks like a full path

When argument parsing fails to detect a file name, "git-gui" will try to
use the previously detected "head" as the file name. We should avoid
prepending the prefix if "head" looks like a full path.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

git-gui: Detect full path when parsing argumentsAndrew Wong Tue, 2 Oct 2012 16:25:14 +0000 (12:25 -0400)

git-gui: Detect full path when parsing arguments

When running "git-gui blame" from a subfolder (which means prefix is
non-empty), if we pass a full path as argument, the argument parsing
will fail to recognize the argument as a file name, because prefix is
prepended to the argument.

This patch handles that scenario by adding an additional branch that
checks the file name without using the prefix.

Signed-off-by: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>

Git 1.8.0-rc3 v1.8.0-rc3Junio C Hamano Wed, 17 Oct 2012 17:39:44 +0000 (10:39 -0700)

Git 1.8.0-rc3

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

Merge git://github.com/git-l10n/git-poJunio C Hamano Wed, 17 Oct 2012 17:37:40 +0000 (10:37 -0700)

Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
l10n: vi.po: update from v1.8.0-rc2-4-g42e55
l10n: Update Swedish translation (1964t0f0u)

Sync with 1.7.12.4Junio C Hamano Wed, 17 Oct 2012 17:37:32 +0000 (10:37 -0700)

Sync with 1.7.12.4

Git 1.7.12.4 v1.7.12.4Junio C Hamano Wed, 17 Oct 2012 17:36:01 +0000 (10:36 -0700)

Git 1.7.12.4

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

Merge branch 'jk/maint-http-half-auth-push' into maintJunio C Hamano Wed, 17 Oct 2012 17:29:24 +0000 (10:29 -0700)

Merge branch 'jk/maint-http-half-auth-push' into maint

* jk/maint-http-half-auth-push:
http: fix segfault in handle_curl_result

Merge branch 'rr/git-uri-doc' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:56 +0000 (10:28 -0700)

Merge branch 'rr/git-uri-doc' into maint

* rr/git-uri-doc:
Git url doc: mark ftp/ftps as read-only and deprecate them

Merge branch 'bw/cp-a-is-gnuism' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:48 +0000 (10:28 -0700)

Merge branch 'bw/cp-a-is-gnuism' into maint

* bw/cp-a-is-gnuism:
tests: "cp -a" is a GNUism

Merge branch 'nd/doc-ignore' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:42 +0000 (10:28 -0700)

Merge branch 'nd/doc-ignore' into maint

* nd/doc-ignore:
gitignore.txt: suggestions how to get literal # or ! at the beginning

Merge branch 'jc/doc-long-options' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:34 +0000 (10:28 -0700)

Merge branch 'jc/doc-long-options' into maint

* jc/doc-long-options:
gitcli: parse-options lets you omit tail of long options

Merge branch 'jc/maint-t1450-fsck-order-fix' into maintJunio C Hamano Wed, 17 Oct 2012 17:28:19 +0000 (10:28 -0700)

Merge branch 'jc/maint-t1450-fsck-order-fix' into maint

* jc/maint-t1450-fsck-order-fix:
t1450: the order the objects are checked is undefined

Merge branch 'rr/test-use-shell-path-not-shell' into... Junio C Hamano Wed, 17 Oct 2012 17:27:28 +0000 (10:27 -0700)

Merge branch 'rr/test-use-shell-path-not-shell' into maint

* rr/test-use-shell-path-not-shell:
test-lib: use $SHELL_PATH, not $SHELL

Merge branch 'rr/test-make-sure-we-have-git' into maintJunio C Hamano Wed, 17 Oct 2012 17:27:21 +0000 (10:27 -0700)

Merge branch 'rr/test-make-sure-we-have-git' into maint

* rr/test-make-sure-we-have-git:
t/test-lib: make sure Git has already been built

Merge branch 'po/maint-docs' into maintJunio C Hamano Wed, 17 Oct 2012 17:27:10 +0000 (10:27 -0700)

Merge branch 'po/maint-docs' into maint

* po/maint-docs:
Doc branch: show -vv option and alternative
Doc clean: add See Also link
Doc add: link gitignore
Doc: separate gitignore pattern sources
Doc: shallow clone deepens _to_ new depth

Merge branch 'jc/ll-merge-binary-ours' into maintJunio C Hamano Wed, 17 Oct 2012 17:26:51 +0000 (10:26 -0700)

Merge branch 'jc/ll-merge-binary-ours' into maint

* jc/ll-merge-binary-ours:
ll-merge: warn about inability to merge binary files only when we can't
attr: "binary" attribute should choose built-in "binary" merge driver
merge: teach -Xours/-Xtheirs to binary ll-merge driver

Merge branch 'db/doc-custom-xmlto' into maintJunio C Hamano Wed, 17 Oct 2012 17:25:37 +0000 (10:25 -0700)

Merge branch 'db/doc-custom-xmlto' into maint

* db/doc-custom-xmlto:
Documentation/Makefile: Allow custom XMLTO binary

maybe_flush_or_die: move a too-loose Windows specific... Johannes Sixt Wed, 17 Oct 2012 07:05:51 +0000 (09:05 +0200)

maybe_flush_or_die: move a too-loose Windows specific error

check to compat

Commit b2f5e268 (Windows: Work around an oddity when a pipe with no reader
is written to) introduced a check for EINVAL after fflush() to fight
spurious "Invalid argument" errors on Windows when a pipe was broken. But
this check may hide real errors on systems that do not have the this odd
behavior. Introduce an fflush wrapper in compat/mingw.* so that the treatment
is only applied on Windows.

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

Merge branch 'master' of https://github.com/nafmo/git... Jiang Xin Wed, 17 Oct 2012 01:38:30 +0000 (09:38 +0800)

Merge branch 'master' of https://github.com/nafmo/git-l10n-sv

* 'master' of https://github.com/nafmo/git-l10n-sv:
l10n: Update Swedish translation (1964t0f0u)

Merge branch 'master' of git://github.com/vnwildman/gitJiang Xin Wed, 17 Oct 2012 01:37:30 +0000 (09:37 +0800)

Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
l10n: vi.po: update from v1.8.0-rc2-4-g42e55

l10n: vi.po: update from v1.8.0-rc2-4-g42e55Tran Ngoc Quan Wed, 17 Oct 2012 01:15:28 +0000 (08:15 +0700)

l10n: vi.po: update from v1.8.0-rc2-4-g42e55

* translate 3 new messages
* review quotes

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

Documentation/RelNotes: remove "updated up to this... Thomas Ackermann Tue, 16 Oct 2012 17:26:23 +0000 (19:26 +0200)

Documentation/RelNotes: remove "updated up to this revision" markers

These were used to keep track of the last commit a release notes
entry was written for, and should have been removed when cutting
the final release.

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.8.0Junio C Hamano Tue, 16 Oct 2012 20:27:23 +0000 (13:27 -0700)

Update draft release notes to 1.8.0

We are almost there...

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

Merge branch 'jk/maint-http-half-auth-push'Junio C Hamano Tue, 16 Oct 2012 18:44:37 +0000 (11:44 -0700)

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

Fixes a regression in maint-1.7.11 (v1.7.11.7), maint (v1.7.12.1)
and master (v1.8.0-rc0).

* jk/maint-http-half-auth-push:
http: fix segfault in handle_curl_result

refs: lock symref that is to be deleted, not its targetRené Scharfe Tue, 16 Oct 2012 10:22:15 +0000 (12:22 +0200)

refs: lock symref that is to be deleted, not its target

When delete_ref is called on a symref then it locks its target and then
either deletes the target or the symref, depending on whether the flag
REF_NODEREF was set in the parameter delopt.

Instead, simply pass the flag to lock_ref_sha1_basic, which will then
either lock the target or the symref, and delete the locked ref.

This reimplements part of eca35a25 (Fix git branch -m for symrefs.).

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: Update Swedish translation (1964t0f0u)Peter Krefting Tue, 16 Oct 2012 07:38:11 +0000 (08:38 +0100)

l10n: Update Swedish translation (1964t0f0u)

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

l10n: Update git.pot (3 new, 6 removed messages)Jiang Xin Tue, 16 Oct 2012 00:39:10 +0000 (08:39 +0800)

l10n: Update git.pot (3 new, 6 removed messages)

This po/git.pot update is generated from v1.8.0-rc2-4-g42e55.

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

Merge branch 'master' of git://github.com/vnwildman/gitJiang Xin Tue, 16 Oct 2012 00:31:22 +0000 (08:31 +0800)

Merge branch 'master' of git://github.com/vnwildman/git

* 'master' of git://github.com/vnwildman/git:
l10n: vi.po: update translation upto cc76011

attr: more matching optimizations from .gitignoreNguyễn Thái Ngọc Duy Mon, 15 Oct 2012 06:24:39 +0000 (13:24 +0700)

attr: more matching optimizations from .gitignore

.gitattributes and .gitignore share the same pattern syntax but has
separate matching implementation. Over the years, ignore's
implementation accumulates more optimizations while attr's stays the
same.

This patch reuses the core matching functions that are also used by
excluded_from_list. excluded_from_list and path_matches can't be
merged due to differences in exclude and attr, for example:

* "!pattern" syntax is forbidden in .gitattributes. As an attribute
can be unset (i.e. set to a special value "false") or made back to
unspecified (i.e. not even set to "false"), "!pattern attr" is unclear
which one it means.

* we support attaching attributes to directories, but git-core
internally does not currently make use of attributes on
directories.

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

gitignore: make pattern parsing code a separate functionNguyễn Thái Ngọc Duy Mon, 15 Oct 2012 06:24:38 +0000 (13:24 +0700)

gitignore: make pattern parsing code a separate function

This function can later be reused by attr.c. Also turn to_exclude
field into a flag.

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

exclude: split pathname matching code into a separate... Nguyễn Thái Ngọc Duy Mon, 15 Oct 2012 06:24:37 +0000 (13:24 +0700)

exclude: split pathname matching code 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>