gitweb.git
Merge branch 'ta/config-set-2'Junio C Hamano Thu, 11 Sep 2014 17:33:26 +0000 (10:33 -0700)

Merge branch 'ta/config-set-2'

Update git_config() users with callback functions for a very narrow
scope with calls to config-set API that lets us query a single
variable.

* ta/config-set-2:
builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`
merge-recursive.c: replace `git_config()` with `git_config_get_int()`
ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
fast-import.c: replace `git_config()` with `git_config_get_*()` family
branch.c: replace `git_config()` with `git_config_get_string()
alias.c: replace `git_config()` with `git_config_get_string()`
imap-send.c: replace `git_config()` with `git_config_get_*()` family
pager.c: replace `git_config()` with `git_config_get_value()`
builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
rerere.c: replace `git_config()` with `git_config_get_*()` family
fetchpack.c: replace `git_config()` with `git_config_get_*()` family
archive.c: replace `git_config()` with `git_config_get_bool()` family
read-cache.c: replace `git_config()` with `git_config_get_*()` family
http-backend.c: replace `git_config()` with `git_config_get_bool()` family
daemon.c: replace `git_config()` with `git_config_get_bool()` family

Merge branch 'ta/config-set-1'Junio C Hamano Thu, 11 Sep 2014 17:33:25 +0000 (10:33 -0700)

Merge branch 'ta/config-set-1'

Use the new caching config-set API in git_config() calls.

* ta/config-set-1:
add tests for `git_config_get_string_const()`
add a test for semantic errors in config files
rewrite git_config() to use the config-set API
config: add `git_die_config()` to the config-set API
change `git_config()` return value to void
add line number and file name info to `config_set`
config.c: fix accuracy of line number in errors
config.c: mark error and warnings strings for translation

Update draft release notes to 2.2Junio C Hamano Tue, 9 Sep 2014 20:06:26 +0000 (13:06 -0700)

Update draft release notes to 2.2

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

Merge branch 'sp/pack-protocol-doc-on-shallow'Junio C Hamano Tue, 9 Sep 2014 19:54:09 +0000 (12:54 -0700)

Merge branch 'sp/pack-protocol-doc-on-shallow'

* sp/pack-protocol-doc-on-shallow:
Document LF appearing in shallow command during send-pack/receive-pack

Merge branch 'tf/imap-send-create'Junio C Hamano Tue, 9 Sep 2014 19:54:08 +0000 (12:54 -0700)

Merge branch 'tf/imap-send-create'

* tf/imap-send-create:
imap-send: create target mailbox if it is missing
imap-send: clarify CRAM-MD5 vs LOGIN documentation

Merge branch 'jk/prompt-stash-could-be-packed'Junio C Hamano Tue, 9 Sep 2014 19:54:08 +0000 (12:54 -0700)

Merge branch 'jk/prompt-stash-could-be-packed'

The prompt script checked $GIT_DIR/ref/stash file to see if there
is a stash, which was a no-no.

* jk/prompt-stash-could-be-packed:
git-prompt: do not look for refs/stash in $GIT_DIR

Merge branch 'tb/pretty-format-cd-date-format'Junio C Hamano Tue, 9 Sep 2014 19:54:07 +0000 (12:54 -0700)

Merge branch 'tb/pretty-format-cd-date-format'

Documentation update.

* tb/pretty-format-cd-date-format:
pretty: note that %cd respects the --date= option

Merge branch 'rs/inline-compat-path-macros'Junio C Hamano Tue, 9 Sep 2014 19:54:07 +0000 (12:54 -0700)

Merge branch 'rs/inline-compat-path-macros'

* rs/inline-compat-path-macros:
turn path macros into inline function

Merge branch 'rs/clean-menu-item-defn'Junio C Hamano Tue, 9 Sep 2014 19:54:06 +0000 (12:54 -0700)

Merge branch 'rs/clean-menu-item-defn'

* rs/clean-menu-item-defn:
clean: use f(void) instead of f() to declare a pointer to a function without arguments

Merge branch 'jc/config-mak-document-darwin-vs-macosx'Junio C Hamano Tue, 9 Sep 2014 19:54:05 +0000 (12:54 -0700)

Merge branch 'jc/config-mak-document-darwin-vs-macosx'

* jc/config-mak-document-darwin-vs-macosx:
config.mak.uname: add hint on uname_R for MacOS X
config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older systems

Merge branch 'sb/mailsplit-dead-code-removal'Junio C Hamano Tue, 9 Sep 2014 19:54:04 +0000 (12:54 -0700)

Merge branch 'sb/mailsplit-dead-code-removal'

* sb/mailsplit-dead-code-removal:
mailsplit.c: remove dead code

Merge branch 'so/rebase-doc'Junio C Hamano Tue, 9 Sep 2014 19:54:03 +0000 (12:54 -0700)

Merge branch 'so/rebase-doc'

May need further updates to the description to explain what makes
various modes of operation to decide that the request can become a
"no-op".

* so/rebase-doc:
Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op

Merge branch 'sb/prepare-revision-walk-error-check'Junio C Hamano Tue, 9 Sep 2014 19:54:03 +0000 (12:54 -0700)

Merge branch 'sb/prepare-revision-walk-error-check'

* sb/prepare-revision-walk-error-check:
prepare_revision_walk(): check for return value in all places

Merge branch 'sb/blame-msg-i18n'Junio C Hamano Tue, 9 Sep 2014 19:54:03 +0000 (12:54 -0700)

Merge branch 'sb/blame-msg-i18n'

* sb/blame-msg-i18n:
builtin/blame.c: add translation to warning about failed revision walk

Merge branch 'nd/strbuf-utf8-replace'Junio C Hamano Tue, 9 Sep 2014 19:54:02 +0000 (12:54 -0700)

Merge branch 'nd/strbuf-utf8-replace'

* nd/strbuf-utf8-replace:
utf8.c: fix strbuf_utf8_replace() consuming data beyond input string

Merge branch 'sb/plug-leaks'Junio C Hamano Tue, 9 Sep 2014 19:54:01 +0000 (12:54 -0700)

Merge branch 'sb/plug-leaks'

* sb/plug-leaks:
clone.c: don't leak memory in cmd_clone
remote.c: don't leak the base branch name in format_tracking_info

Merge branch 'rs/refresh-beyond-symlink'Junio C Hamano Tue, 9 Sep 2014 19:54:01 +0000 (12:54 -0700)

Merge branch 'rs/refresh-beyond-symlink'

"git add x" where x that used to be a directory has become a
symbolic link to a directory misbehaved.

* rs/refresh-beyond-symlink:
read-cache: check for leading symlinks when refreshing index

Merge branch 'la/init-doc'Junio C Hamano Tue, 9 Sep 2014 19:54:00 +0000 (12:54 -0700)

Merge branch 'la/init-doc'

* la/init-doc:
Documentation: git-init: flesh out example
Documentation: git-init: template directory: reword and cross-reference
Documentation: git-init: reword parenthetical statements
Documentation: git-init: --separate-git-dir: clarify
Documentation: git-init: template directory: reword
Documentation: git-init: list items facelift
Documentation: git-init: typographical fixes

Merge branch 'jk/stash-list-p'Junio C Hamano Tue, 9 Sep 2014 19:54:00 +0000 (12:54 -0700)

Merge branch 'jk/stash-list-p'

Teach "git stash list -p" to show the difference between the base
commit version and the working tree version, which is in line with
what "git show" gives.

* jk/stash-list-p:
stash: default listing to working-tree diff

Merge branch 'mm/log-branch-desc-plug-leak'Junio C Hamano Tue, 9 Sep 2014 19:53:59 +0000 (12:53 -0700)

Merge branch 'mm/log-branch-desc-plug-leak'

* mm/log-branch-desc-plug-leak:
builtin/log.c: fix minor memory leak

Merge branch 'lf/bundle-exclusion'Junio C Hamano Tue, 9 Sep 2014 19:53:58 +0000 (12:53 -0700)

Merge branch 'lf/bundle-exclusion'

"git bundle create" with date-range specification were meant to
exclude tags outside the range

* lf/bundle-exclusion:
bundle: fix exclusion of annotated tags

Merge branch 'jc/apply-ws-prefix'Junio C Hamano Tue, 9 Sep 2014 19:53:58 +0000 (12:53 -0700)

Merge branch 'jc/apply-ws-prefix'

Applying a patch not generated by Git in a subdirectory used to
check the whitespace breakage using the attributes for incorrect
paths. Also whitespace checks were performed even for paths
excluded via "git apply --exclude=<path>" mechanism.

* jc/apply-ws-prefix:
apply: omit ws check for excluded paths
apply: hoist use_patch() helper for path exclusion up
apply: use the right attribute for paths in non-Git patches

Merge branch 'jk/command-line-config-empty-string'Junio C Hamano Tue, 9 Sep 2014 19:53:56 +0000 (12:53 -0700)

Merge branch 'jk/command-line-config-empty-string'

"git -c section.var command" and "git -c section.var= command"
should pass the configuration differently (the former should be
a boolean true, the latter should be an empty string).

* jk/command-line-config-empty-string:
config: teach "git -c" to recognize an empty string

Merge branch 'bc/imap-send-doc'Junio C Hamano Tue, 9 Sep 2014 19:53:55 +0000 (12:53 -0700)

Merge branch 'bc/imap-send-doc'

* bc/imap-send-doc:
imap-send doc: omit confusing "to use imap-send" modifier

Merge branch 'jc/not-mingw-cygwin'Junio C Hamano Tue, 9 Sep 2014 19:53:54 +0000 (12:53 -0700)

Merge branch 'jc/not-mingw-cygwin'

We have been using NOT_{MINGW,CYGWIN} test prerequisites long
before Peff invented support for negated prerequisites e.g. !MINGW
and we still add more uses of the former. Convert them to the
latter to avoid confusion.

* jc/not-mingw-cygwin:
test prerequisites: enumerate with commas
test prerequisites: eradicate NOT_FOO

Start the post-2.1 cycleJunio C Hamano Tue, 2 Sep 2014 20:30:13 +0000 (13:30 -0700)

Start the post-2.1 cycle

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

Merge branch 'rs/strbuf-getcwd'Junio C Hamano Tue, 2 Sep 2014 20:27:45 +0000 (13:27 -0700)

Merge branch 'rs/strbuf-getcwd'

Reduce the use of fixed sized buffer passed to getcwd() calls
by introducing xgetcwd() helper.

* rs/strbuf-getcwd:
use strbuf_add_absolute_path() to add absolute paths
abspath: convert absolute_path() to strbuf
use xgetcwd() to set $GIT_DIR
use xgetcwd() to get the current directory or die
wrapper: add xgetcwd()
abspath: convert real_path_internal() to strbuf
abspath: use strbuf_getcwd() to remember original working directory
setup: convert setup_git_directory_gently_1 et al. to strbuf
unix-sockets: use strbuf_getcwd()
strbuf: add strbuf_getcwd()

Merge branch 'ta/pretty-parse-config'Junio C Hamano Tue, 2 Sep 2014 20:27:39 +0000 (13:27 -0700)

Merge branch 'ta/pretty-parse-config'

* ta/pretty-parse-config:
pretty.c: make git_pretty_formats_config return -1 on git_config_string failure

Merge branch 'bc/archive-pax-header-mode'Junio C Hamano Tue, 2 Sep 2014 20:27:12 +0000 (13:27 -0700)

Merge branch 'bc/archive-pax-header-mode'

Implementations of "tar" that do not understand an extended pax
header would extract the contents of it in a regular file; make
sure the permission bits of this file follows the same tar.umask
configuration setting.

* bc/archive-pax-header-mode:
archive: honor tar.umask even for pax headers

Merge branch 'pr/remotes-in-hashmap'Junio C Hamano Tue, 2 Sep 2014 20:26:37 +0000 (13:26 -0700)

Merge branch 'pr/remotes-in-hashmap'

Optimize remotes configuration look-up in a repository with very
many remotes defined.

* pr/remotes-in-hashmap:
use a hashmap to make remotes faster

Merge branch 'jk/pretty-empty-format'Junio C Hamano Tue, 2 Sep 2014 20:25:03 +0000 (13:25 -0700)

Merge branch 'jk/pretty-empty-format'

"git log --pretty/format=" with an empty format string did not mean
the more obvious "No output whatsoever" but "Use default format",
which was counterintuitive.

* jk/pretty-empty-format:
pretty: make empty userformats truly empty
pretty: treat "--format=" as an empty userformat
revision: drop useless string offset when parsing "--pretty"

Merge branch 'ta/config-set'Junio C Hamano Tue, 2 Sep 2014 20:24:17 +0000 (13:24 -0700)

Merge branch 'ta/config-set'

Add in-core caching layer to let us avoid reading the same
configuration files number of times.

* ta/config-set:
test-config: add tests for the config_set API
add `config_set` API for caching config-like files

Merge branch 'rs/init-no-duplicate-real-path'Junio C Hamano Tue, 2 Sep 2014 20:24:04 +0000 (13:24 -0700)

Merge branch 'rs/init-no-duplicate-real-path'

* rs/init-no-duplicate-real-path:
init: avoid superfluous real_path() calls

Merge branch 'mm/config-edit-global'Junio C Hamano Tue, 2 Sep 2014 20:23:19 +0000 (13:23 -0700)

Merge branch 'mm/config-edit-global'

Start "git config --edit --global" from a skeletal per-user
configuration file contents, instead of a total blank, when the
user does not already have any. This immediately reduces the need
for a later "Have you forgotten setting core.user?" and we can add
more to the template as we gain more experience.

* mm/config-edit-global:
commit: advertise config --global --edit on guessed identity
home_config_paths(): let the caller ignore xdg path
config --global --edit: create a template file if needed

Merge branch 'jc/reopen-lock-file'Junio C Hamano Tue, 2 Sep 2014 20:20:12 +0000 (13:20 -0700)

Merge branch 'jc/reopen-lock-file'

There are cases where you lock and open to write a file, close it to
show the updated contents to external processes, and then have to
update the file again while still holding the lock, but the lockfile
API lacked support for such an access pattern.

* jc/reopen-lock-file:
lockfile: allow reopening a closed but still locked file

Merge git://github.com/git-l10n/git-poJunio C Hamano Fri, 29 Aug 2014 17:18:22 +0000 (10:18 -0700)

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

* git://github.com/git-l10n/git-po:
po/TEAMS: add new members to German translation team
l10n: de.po: translate 38 new messages

po/TEAMS: add new members to German translation teamRalf Thielow Tue, 26 Aug 2014 16:54:30 +0000 (18:54 +0200)

po/TEAMS: add new members to German translation team

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

l10n: de.po: translate 38 new messagesRalf Thielow Fri, 20 Jun 2014 15:22:48 +0000 (17:22 +0200)

l10n: de.po: translate 38 new messages

Translate 38 new messages came from git.pot update in fe05e19
(l10n: git.pot: v2.1.0 round 1 (38 new, 9 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

Document LF appearing in shallow command during send... Shawn Pearce Wed, 27 Aug 2014 20:46:56 +0000 (13:46 -0700)

Document LF appearing in shallow command during send-pack/receive-pack

The implementation sends an LF, but the protocol documentation was
missing this detail.

Signed-off-by: Shawn Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/diff-tree-t-fix'Junio C Hamano Tue, 26 Aug 2014 18:16:26 +0000 (11:16 -0700)

Merge branch 'jk/diff-tree-t-fix'

Fix (rarely used) "git diff-tree -t" regression in 2.0.

* jk/diff-tree-t-fix:
intersect_paths: respect mode in git's tree-sort

Merge branch 'jk/pack-shallow-always-without-bitmap'Junio C Hamano Tue, 26 Aug 2014 18:16:25 +0000 (11:16 -0700)

Merge branch 'jk/pack-shallow-always-without-bitmap'

Reachability bitmaps do not work with shallow operations.
Fixes regression in 2.0.

* jk/pack-shallow-always-without-bitmap:
pack-objects: turn off bitmaps when we see --shallow lines

Merge branch 'jk/fix-profile-feedback-build'Junio C Hamano Tue, 26 Aug 2014 18:16:25 +0000 (11:16 -0700)

Merge branch 'jk/fix-profile-feedback-build'

Fix profile-feedback build broken in 2.1 for tarball releases.

* jk/fix-profile-feedback-build:
Makefile: make perf tests optional for profile build

use strbuf_add_absolute_path() to add absolute pathsRené Scharfe Mon, 28 Jul 2014 18:34:42 +0000 (20:34 +0200)

use strbuf_add_absolute_path() to add absolute paths

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

abspath: convert absolute_path() to strbufRené Scharfe Mon, 28 Jul 2014 18:33:55 +0000 (20:33 +0200)

abspath: convert absolute_path() to strbuf

Move most of the code of absolute_path() into the new function
strbuf_add_absolute_path() and in the process transform it to use
struct strbuf and xgetcwd() instead of a PATH_MAX-sized buffer,
which can be too small on some file systems.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use xgetcwd() to set $GIT_DIRRené Scharfe Mon, 28 Jul 2014 18:31:57 +0000 (20:31 +0200)

use xgetcwd() to set $GIT_DIR

Instead of dying of a segmentation fault if getcwd() returns NULL, use
xgetcwd() to make sure to write a useful error message and then exit
in an orderly fashion.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

use xgetcwd() to get the current directory or dieRené Scharfe Mon, 28 Jul 2014 18:30:39 +0000 (20:30 +0200)

use xgetcwd() to get the current directory or die

Convert several calls of getcwd() and die() to use xgetcwd() instead.
This way we get rid of fixed-size buffers (which can be too small
depending on the used file system) and gain consistent error messages.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wrapper: add xgetcwd()René Scharfe Mon, 28 Jul 2014 18:29:50 +0000 (20:29 +0200)

wrapper: add xgetcwd()

Add the helper function xgetcwd(), which returns the current directory
or dies. The returned string has to be free()d after use.

Helped-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

abspath: convert real_path_internal() to strbufRené Scharfe Mon, 28 Jul 2014 18:28:30 +0000 (20:28 +0200)

abspath: convert real_path_internal() to strbuf

Use strbuf instead of fixed-sized buffers in real_path() in order to
avoid the size limitations of the latter.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

abspath: use strbuf_getcwd() to remember original worki... René Scharfe Mon, 28 Jul 2014 18:27:34 +0000 (20:27 +0200)

abspath: use strbuf_getcwd() to remember original working directory

Store the original working directory in a strbuf instead of in a
fixed-sized buffer, in order to be able to handle longer paths.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

setup: convert setup_git_directory_gently_1 et al.... René Scharfe Mon, 28 Jul 2014 18:26:40 +0000 (20:26 +0200)

setup: convert setup_git_directory_gently_1 et al. to strbuf

Convert setup_git_directory_gently_1() and its helper functions
setup_explicit_git_dir(), setup_discovered_git_dir() and
setup_bare_git_dir() to use a struct strbuf to hold the current working
directory. Replacing the PATH_MAX-sized buffer used before removes a
path length limition on some file systems. The functions are converted
all in one go because they all read and write the variable cwd.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

imap-send: create target mailbox if it is missingTony Finch Fri, 1 Aug 2014 08:15:52 +0000 (09:15 +0100)

imap-send: create target mailbox if it is missing

Some MUAs delete their "drafts" folder when it is empty, so
git imap-send should be able to create it if necessary.

This change checks that the folder exists immediately after
login and tries to create it if it is missing.

There was some vestigial code to handle a [TRYCREATE] response
from the server when an APPEND target is missing. However this
code never ran (the create and trycreate flags were never set)
and when I tried to make it run I found that the code had already
thrown away the contents of the message it was trying to append.

Signed-off-by: Tony Finch <dot@dotat.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge git://github.com/git-l10n/git-poJunio C Hamano Mon, 25 Aug 2014 22:12:58 +0000 (15:12 -0700)

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

* git://github.com/git-l10n/git-po:
l10n: de.po: improve message when switching branches
l10n: de.po: fix typo
po/TEAMS: Add Catalan team
l10n: Add Catalan translation
l10n: fr.po (2257t) update for version 2.1.0
l10n: sv.po: Update Swedish translation (2257t0f0u)
l10n: vi.po (2257t): Update translation
l10n: Updated Bulgarian translation of git (2257t,0f,0u)
l10n: zh_CN: translations for git v2.1.0-rc0
l10n: git.pot: v2.1.0 round 1 (38 new, 9 removed)
l10n: Updated Bulgarian translation of git (2247t,0f,0u)
l10n: Updated Bulgarian translation of git (2228t,0f,0u)
l10n: Fix more typos in the Swedish translations

git-prompt: do not look for refs/stash in $GIT_DIRJeff King Sat, 23 Aug 2014 05:26:51 +0000 (01:26 -0400)

git-prompt: do not look for refs/stash in $GIT_DIR

Since dd0b72c (bash prompt: use bash builtins to check stash
state, 2011-04-01), git-prompt checks whether we have a
stash by looking for $GIT_DIR/refs/stash. Generally external
programs should never do this, because they would miss
packed-refs.

That commit claims that packed-refs does not pack
refs/stash, but that is not quite true. It does pack the
ref, but due to a bug, fails to prune the ref. When we fix
that bug, we would want to be doing the right thing here.

Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: de.po: improve message when switching branchesRalf Thielow Thu, 12 Jun 2014 18:15:55 +0000 (20:15 +0200)

l10n: de.po: improve message when switching branches

Suggested-by: Stefan Beller <stefanbeller@gmail.com>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

l10n: de.po: fix typoRalf Thielow Wed, 11 Jun 2014 16:10:45 +0000 (18:10 +0200)

l10n: de.po: fix typo

Reported-by: Hartmut Henkel
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

po/TEAMS: Add Catalan teamAlex Henrie Sat, 23 Aug 2014 02:10:30 +0000 (20:10 -0600)

po/TEAMS: Add Catalan team

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

l10n: Add Catalan translationAlex Henrie Sat, 23 Aug 2014 02:10:22 +0000 (20:10 -0600)

l10n: Add Catalan translation

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

pretty: note that %cd respects the --date= optionThomas Braun Wed, 20 Aug 2014 12:27:10 +0000 (14:27 +0200)

pretty: note that %cd respects the --date= option

Signed-off-by: Thomas Braun <thomas.braun@virtuell-zuhause.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

intersect_paths: respect mode in git's tree-sortJeff King Wed, 20 Aug 2014 02:14:30 +0000 (22:14 -0400)

intersect_paths: respect mode in git's tree-sort

When we do a combined diff, we individually diff against
each parent, and then use intersect_paths to do a parallel
walk through the sorted results and come up with a final
list of interesting paths.

The sort order here is that returned by the diffs, which
means it is in git's tree-order which sorts sub-trees as if
their paths have "/" at the end. When we do our parallel
walk, we need to use a comparison function which provides
the same order.

Since 8518ff8 (combine-diff: optimize combine_diff_path sets
intersection, 2014-01-20), we use a simple strcmp to
compare the pathnames, and get this wrong. It's somewhat
hard to trigger because normally a diff does not produce
tree entries at all, and therefore the sort order is the
same as a strcmp. However, if the "-t" option is used with
the diff, then we will produce diff_filepairs for both trees
and files.

We can use base_name_compare to do the comparison, just as
the tree-diff code does. Even though what we have are not
technically base names (they are full paths within the
tree), the end result is the same (we do not care about
interior slashes at all, only about the final character).

However, since we do not have the length of each path
stored, we take a slight shortcut: if neither of the entries
is a sub-tree then the comparison is equivalent to a strcmp.
This lets us skip the extra strlen calls in the common case
without having to reimplement base_name_compare from
scratch.

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

Makefile: make perf tests optional for profile buildJeff King Tue, 19 Aug 2014 06:12:03 +0000 (02:12 -0400)

Makefile: make perf tests optional for profile build

The perf tests need a repository to operate on; if none is
defined, we fall back to the repository containing our build
directory. That fails, though, for an exported tarball of
git.git, which has no repository.

Since 5d7fd6d we run the perf tests as part of "make
profile". Therefore "make profile" fails out of the box on
released tarballs of v2.1.0.

We can fix this by making the perf tests optional; if they
are skipped, we still run the regular test suite, which
should give a lot of profile data (and is what we used to do
prior to 5d7fd6d anyway).

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

turn path macros into inline functionRené Scharfe Sat, 16 Aug 2014 21:48:33 +0000 (23:48 +0200)

turn path macros into inline function

Use static inline functions instead of macros for has_dos_drive_prefix,
offset_1st_component, is_dir_sep and find_last_dir_sep in order to let
the compiler do type checking.

The definitions of offset_1st_component and is_dir_sep are switched
around because the former uses the latter.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clean: use f(void) instead of f() to declare a pointer... René Scharfe Sat, 16 Aug 2014 11:16:56 +0000 (13:16 +0200)

clean: use f(void) instead of f() to declare a pointer to a function without arguments

Explicitly state that menu_item functions like clean_cmd don't take
any arguments by using void instead of an empty parameter list.

Found using gcc -Wstrict-prototypes.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.1 v2.1.0Junio C Hamano Fri, 15 Aug 2014 22:09:12 +0000 (15:09 -0700)

Git 2.1

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

config.mak.uname: add hint on uname_R for MacOS XJunio C Hamano Fri, 15 Aug 2014 17:02:46 +0000 (10:02 -0700)

config.mak.uname: add hint on uname_R for MacOS X

I always have to scratch my head every time I see this cryptic
pattern "[15678]\."; leave a short note to remind the maintainer
and the reviewers.

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

config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older... Kyle J. McKay Fri, 15 Aug 2014 07:46:11 +0000 (00:46 -0700)

config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older systems

Older MacOS systems prior to 10.5 do not have the CommonCrypto
support Git uses so set NO_APPLE_COMMON_CRYPTO on those systems.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: fix negated test_i18ngrep callsJohannes Sixt Wed, 13 Aug 2014 19:30:11 +0000 (21:30 +0200)

tests: fix negated test_i18ngrep calls

The helper function test_i18ngrep pretends that it found the expected
results when it is running under GETTEXT_POISON. For this reason, it must
not be used negated like so

! test_i18ngrep foo bar

because the test case would fail under GETTEXT_POISON. The function offers
a special syntax to test that a pattern is *not* found:

test_i18ngrep ! foo bar

Convert incorrect uses to this syntax.

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

builtin/apply.c: replace `git_config()` with `git_confi... Tanay Abhra Wed, 13 Aug 2014 08:22:02 +0000 (01:22 -0700)

builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`

Use `git_config_get_string_const()` instead of `git_config()` to take
advantage of the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge-recursive.c: replace `git_config()` with `git_con... Tanay Abhra Wed, 13 Aug 2014 08:22:01 +0000 (01:22 -0700)

merge-recursive.c: replace `git_config()` with `git_config_get_int()`

Use `git_config_get_int()` instead of `git_config()` to take advantage
of the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ll-merge.c: refactor `read_merge_config()` to use ... Tanay Abhra Wed, 13 Aug 2014 12:43:04 +0000 (18:13 +0530)

ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`

There is one slight behavior change, previously "merge.default"
silently ignored a NULL value and didn't raise any error. But,
in the same function, all other values raise an error on a NULL
value. So to conform with other call sites in Git, a NULL value
for "merge.default" raises an error.

The the new config-set API is not very useful here, because much of
the function is dedicated to processing "merge.<name>.variable",
which the new API does not handle well. If it were for variables
like, "merge.summary", "merge.tool", and "merge.verbosity", we could
use the new API.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fast-import.c: replace `git_config()` with `git_config_... Tanay Abhra Wed, 13 Aug 2014 12:22:56 +0000 (17:52 +0530)

fast-import.c: replace `git_config()` with `git_config_get_*()` family

Use `git_config_get_*()` family instead of `git_config()` to take
advantage of the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

mailsplit.c: remove dead codeStefan Beller Tue, 12 Aug 2014 21:21:27 +0000 (23:21 +0200)

mailsplit.c: remove dead code

This was found by coverity. (Id: 290001)

The variable 'output' is assigned to a value
after all gotos to the corrupt label.

Remove the goto by moving the errorhandling code to the
condition, which detects the error.

Signed-off-by: Stefan Beller <stefanbeller@gmail.com>
Helped-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-rebase.txt: -f forces a rebase that... Sergey Organov Mon, 11 Aug 2014 20:22:48 +0000 (00:22 +0400)

Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op

"Current branch is a descendant of the commit you are rebasing onto"
does not necessarily mean "rebase" requires "--force". For a plain
vanilla "history flattening" rebase, the rebase can be done without
forcing if there is a merge between the tip of the branch being
rebased and the commit you are rebasing onto, even if the tip is
descendant of the other.

[jc: reworded both the text and the log description]

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: turn off bitmaps when we see --shallow... Jeff King Tue, 12 Aug 2014 04:34:53 +0000 (00:34 -0400)

pack-objects: turn off bitmaps when we see --shallow lines

Reachability bitmaps do not work with shallow operations,
because they cache a view of the object reachability that
represents the true objects. Whereas a shallow repository
(or a shallow operation in a repository) is inherently
cutting off the object graph with a graft.

We explicitly disallow the use of bitmaps in shallow
repositories by checking is_repository_shallow(), and we
should continue to do that. However, we also want to
disallow bitmaps when we are serving a fetch to a shallow
client, since we momentarily take on their grafted view of
the world.

It used to be enough to call is_repository_shallow at the
start of pack-objects. Upload-pack wrote the other side's
shallow state to a temporary file and pointed the whole
pack-objects process at this state with "git --shallow-file",
and from the perspective of pack-objects, we really were
in a shallow repo. But since b790e0f (upload-pack: send
shallow info over stdin to pack-objects, 2014-03-11), we do
it differently: we send --shallow lines to pack-objects over
stdin, and it registers them itself.

This means that our is_repository_shallow check is way too
early (we have not been told about the shallowness yet), and
that it is insufficient (calling is_repository_shallow is
not enough, as the shallow grafts we register do not change
its return value). Instead, we can just turn off bitmaps
explicitly when we see these lines.

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

builtin/blame.c: add translation to warning about faile... Stefan Beller Sun, 10 Aug 2014 21:33:25 +0000 (23:33 +0200)

builtin/blame.c: add translation to warning about failed revision walk

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

prepare_revision_walk(): check for return value in... Stefan Beller Sun, 10 Aug 2014 21:33:26 +0000 (23:33 +0200)

prepare_revision_walk(): check for return value in all places

Even the documentation tells us:

You should check if it returns any error (non-zero return
code) and if it does not, you can start using get_revision()
to do the iteration.

In preparation for this commit, I grepped all occurrences of
prepare_revision_walk and added error messages, when there were none.

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

utf8.c: fix strbuf_utf8_replace() consuming data beyond... Nguyễn Thái Ngọc Duy Sun, 10 Aug 2014 07:05:21 +0000 (14:05 +0700)

utf8.c: fix strbuf_utf8_replace() consuming data beyond input string

The main loop in strbuf_utf8_replace() could summed up as:

while ('src' is still valid) {
1) advance 'src' to copy ANSI escape sequences
2) advance 'src' to copy/replace visible characters
}

The problem is after #1, 'src' may have reached the end of the string
(so 'src' points to NUL) and #2 will continue to copy that NUL as if
it's a normal character. Because the output is stored in a strbuf,
this NUL accounted in the 'len' field as well. Check after #1 and
break the loop if necessary.

The test does not look obvious, but the combination of %>>() should
make a call trace like this

show_log()
pretty_print_commit()
format_commit_message()
strbuf_expand()
format_commit_item()
format_and_pad_commit()
strbuf_utf8_replace()

where %C(auto)%d would insert a color reset escape sequence in the end
of the string given to strbuf_utf8_replace() and show_log() uses
fwrite() to send everything to stdout (including the incorrect NUL
inserted by strbuf_utf8_replace)

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

clone.c: don't leak memory in cmd_cloneStefan Beller Sun, 10 Aug 2014 13:57:56 +0000 (15:57 +0200)

clone.c: don't leak memory in cmd_clone

Free the refspec.
Found by scan.coverity.com (Id: 1127806)

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

remote.c: don't leak the base branch name in format_tra... Stefan Beller Sun, 10 Aug 2014 19:43:33 +0000 (21:43 +0200)

remote.c: don't leak the base branch name in format_tracking_info

Found by scan.coverity.com (Id: 1127809)

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

read-cache: check for leading symlinks when refreshing... René Scharfe Sat, 9 Aug 2014 17:43:29 +0000 (19:43 +0200)

read-cache: check for leading symlinks when refreshing index

Don't add paths with leading symlinks to the index while refreshing; we
only track those symlinks themselves. We already ignore them while
preloading (see read_index_preload.c).

Reported-by: Nikolay Avdeev <avdeev@math.vsu.ru>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'master' of git://ozlabs.org/~paulus/gitkJunio C Hamano Sun, 10 Aug 2014 18:03:03 +0000 (11:03 -0700)

Merge branch 'master' of git://ozlabs.org/~paulus/gitk

* 'master' of git://ozlabs.org/~paulus/gitk:
gitk: Updated Bulgarian translation (302t,0f,0u)
gitk: Add keybinding to switch to parent commit

Git 2.1-rc2 v2.1.0-rc2Junio C Hamano Fri, 8 Aug 2014 20:52:16 +0000 (13:52 -0700)

Git 2.1-rc2

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

Documentation: git-init: flesh out exampleLinus Arver Fri, 8 Aug 2014 17:29:20 +0000 (10:29 -0700)

Documentation: git-init: flesh out example

Add a third step `git commit` after adding files for the first time.

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-init: template directory: reword... Linus Arver Fri, 8 Aug 2014 17:29:19 +0000 (10:29 -0700)

Documentation: git-init: template directory: reword and cross-reference

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-init: reword parenthetical statementsLinus Arver Fri, 8 Aug 2014 17:29:18 +0000 (10:29 -0700)

Documentation: git-init: reword parenthetical statements

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-init: --separate-git-dir: clarifyLinus Arver Fri, 8 Aug 2014 17:29:17 +0000 (10:29 -0700)

Documentation: git-init: --separate-git-dir: clarify

Use shorter sentences to describe what actually happens. We describe
what the term "Git symbolic link" actually means.

Also, we separate out the description of the behavioral change upon
reinitialization into its own paragraph.

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-init: template directory: rewordLinus Arver Fri, 8 Aug 2014 17:29:16 +0000 (10:29 -0700)

Documentation: git-init: template directory: reword

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-init: list items faceliftLinus Arver Fri, 8 Aug 2014 17:29:15 +0000 (10:29 -0700)

Documentation: git-init: list items facelift

No textual change.

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-init: typographical fixesLinus Arver Fri, 8 Aug 2014 17:29:14 +0000 (10:29 -0700)

Documentation: git-init: typographical fixes

Use backticks when we quote something that the user should literally
use.

Signed-off-by: Linus Arver <linusarver@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitk: Updated Bulgarian translation (302t,0f,0u)Alexander Shopov Sun, 3 Aug 2014 12:36:43 +0000 (15:36 +0300)

gitk: Updated Bulgarian translation (302t,0f,0u)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>

gitk: Add keybinding to switch to parent commitMax Kirillov Tue, 8 Jul 2014 20:45:35 +0000 (23:45 +0300)

gitk: Add keybinding to switch to parent commit

Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>

bundle: fix exclusion of annotated tagsLukas Fleischer Sat, 2 Aug 2014 08:39:06 +0000 (10:39 +0200)

bundle: fix exclusion of annotated tags

In commit c9a42c4 (bundle: allow rev-list options to exclude annotated
tags, 2009-01-02), support for excluding annotated tags outside the
specified date range was added. However, the wrong order of parameters
was chosen when calling memchr().

Fix this by swapping the character to search for with the maximum length
parameter. Also cover this behavior with an additional test.

Signed-off-by: Lukas Fleischer <git@cryptocrack.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

stash: default listing to working-tree diffJeff King Wed, 6 Aug 2014 18:35:25 +0000 (14:35 -0400)

stash: default listing to working-tree diff

When you list stashes, you can provide arbitrary git-log
options to change the display. However, adding just "-p"
does nothing, because each stash is actually a merge commit.

This implementation detail is easy to forget, leading to
confused users who think "-p" is not working. We can make
this easier by defaulting to "--first-parent -m", which will
show the diff against the working tree. This omits the
index portion of the stash entirely, but it's simple and it
matches what "git stash show" provides.

People who are more clueful about stash's true form can use
"--cc" to override the "-m", and the "--first-parent" will
then do nothing. For diffs, it only affects non-combined
diffs, so "--cc" overrides it. And for the traversal, we are
walking the linear reflog anyway, so we do not even care
about the parents.

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

branch.c: replace `git_config()` with `git_config_get_s... Tanay Abhra Thu, 7 Aug 2014 17:56:42 +0000 (23:26 +0530)

branch.c: replace `git_config()` with `git_config_get_string()

Use `git_config_get_string()` instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow. While we are at
it, return -1 if we find no value for the queried variable. Original code
returned 0 for all cases, which was checked by `add_branch_desc()` in
fmt-merge-msg.c resulting in addition of a spurious newline to the `out`
strbuf. Now, the newline addition is skipped as -1 is returned to the caller
if no value is found.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

alias.c: replace `git_config()` with `git_config_get_st... Tanay Abhra Thu, 7 Aug 2014 16:21:25 +0000 (09:21 -0700)

alias.c: replace `git_config()` with `git_config_get_string()`

Use `git_config_get_string()` instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

imap-send.c: replace `git_config()` with `git_config_ge... Tanay Abhra Thu, 7 Aug 2014 16:21:24 +0000 (09:21 -0700)

imap-send.c: replace `git_config()` with `git_config_get_*()` family

Use `git_config_get_*()` family instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pager.c: replace `git_config()` with `git_config_get_va... Tanay Abhra Thu, 7 Aug 2014 16:21:23 +0000 (09:21 -0700)

pager.c: replace `git_config()` with `git_config_get_value()`

Use `git_config_get_value()` instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/gc.c: replace `git_config()` with `git_config_g... Tanay Abhra Thu, 7 Aug 2014 16:21:22 +0000 (09:21 -0700)

builtin/gc.c: replace `git_config()` with `git_config_get_*()` family

Use `git_config_get_*()` family instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rerere.c: replace `git_config()` with `git_config_get_... Tanay Abhra Thu, 7 Aug 2014 16:21:21 +0000 (09:21 -0700)

rerere.c: replace `git_config()` with `git_config_get_*()` family

Use `git_config_get_*()` family instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetchpack.c: replace `git_config()` with `git_config_ge... Tanay Abhra Thu, 7 Aug 2014 16:21:20 +0000 (09:21 -0700)

fetchpack.c: replace `git_config()` with `git_config_get_*()` family

Use `git_config_get_*()` family instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive.c: replace `git_config()` with `git_config_get_... Tanay Abhra Thu, 7 Aug 2014 16:21:19 +0000 (09:21 -0700)

archive.c: replace `git_config()` with `git_config_get_bool()` family

Use `git_config_get_bool()` family instead of `git_config()` to take advantage of
the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>