OSDN Git Service

git-core/git.git
8 years agoMerge branch 'ak/git-strip-extension-from-dashed-command'
Junio C Hamano [Fri, 26 Feb 2016 21:37:13 +0000 (13:37 -0800)]
Merge branch 'ak/git-strip-extension-from-dashed-command'

Code simplification.

* ak/git-strip-extension-from-dashed-command:
  git.c: simplify stripping extension of a file in handle_builtin()

8 years agoMerge branch 'ak/extract-argv0-last-dir-sep'
Junio C Hamano [Fri, 26 Feb 2016 21:37:12 +0000 (13:37 -0800)]
Merge branch 'ak/extract-argv0-last-dir-sep'

Code simplification.

* ak/extract-argv0-last-dir-sep:
  exec_cmd.c: use find_last_dir_sep() for code simplification

8 years agoMerge branch 'kn/ref-filter-atom-parsing'
Junio C Hamano [Fri, 26 Feb 2016 21:37:10 +0000 (13:37 -0800)]
Merge branch 'kn/ref-filter-atom-parsing'

The ref-filter's format-parsing code has been refactored, in
preparation for "branch --format" and friends.

* kn/ref-filter-atom-parsing:
  ref-filter: introduce objectname_atom_parser()
  ref-filter: introduce contents_atom_parser()
  ref-filter: introduce remote_ref_atom_parser()
  ref-filter: align: introduce long-form syntax
  ref-filter: introduce align_atom_parser()
  ref-filter: introduce parse_align_position()
  ref-filter: introduce color_atom_parser()
  ref-filter: introduce parsing functions for each valid atom
  ref-filter: introduce struct used_atom
  ref-filter: bump 'used_atom' and related code to the top
  ref-filter: use string_list_split over strbuf_split

8 years agoMerge branch 'tg/git-remote'
Junio C Hamano [Fri, 26 Feb 2016 21:37:09 +0000 (13:37 -0800)]
Merge branch 'tg/git-remote'

The internal API to interact with "remote.*" configuration
variables has been streamlined.

* tg/git-remote:
  remote: use remote_is_configured() for add and rename
  remote: actually check if remote exits
  remote: simplify remote_is_configured()
  remote: use parse_config_key

8 years agoEighth batch for 2.8
Junio C Hamano [Wed, 24 Feb 2016 21:31:57 +0000 (13:31 -0800)]
Eighth batch for 2.8

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jc/am-i-v-fix'
Junio C Hamano [Wed, 24 Feb 2016 21:26:01 +0000 (13:26 -0800)]
Merge branch 'jc/am-i-v-fix'

The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.

* jc/am-i-v-fix:
  am -i: fix "v"iew
  pager: factor out a helper to prepare a child process to run the pager
  pager: lose a separate argv[]

8 years agoMerge branch 'nd/worktree-add-B'
Junio C Hamano [Wed, 24 Feb 2016 21:26:00 +0000 (13:26 -0800)]
Merge branch 'nd/worktree-add-B'

"git worktree add -B <branchname>" did not work.

* nd/worktree-add-B:
  worktree add -B: do the checkout test before update branch
  worktree: fix "add -B"

8 years agoMerge branch 'nd/exclusion-regression-fix'
Junio C Hamano [Wed, 24 Feb 2016 21:25:59 +0000 (13:25 -0800)]
Merge branch 'nd/exclusion-regression-fix'

Another try to add support to the ignore mechanism that lets you
say "this is excluded" and then later say "oh, no, this part (that
is a subset of the previous part) is not excluded".

* nd/exclusion-regression-fix:
  dir.c: don't exclude whole dir prematurely
  dir.c: support marking some patterns already matched
  dir.c: support tracing exclude
  dir.c: fix match_pathname()

8 years agoMerge branch 'ce/https-public-key-pinning'
Junio C Hamano [Wed, 24 Feb 2016 21:25:58 +0000 (13:25 -0800)]
Merge branch 'ce/https-public-key-pinning'

You can now set http.[<url>.]pinnedpubkey to specify the pinned
public key when building with recent enough versions of libcURL.

* ce/https-public-key-pinning:
  http: implement public key pinning

8 years agoMerge branch 'bc/http-empty-auth'
Junio C Hamano [Wed, 24 Feb 2016 21:25:57 +0000 (13:25 -0800)]
Merge branch 'bc/http-empty-auth'

Some authentication methods do not need username or password, but
libcurl needs some hint that it needs to perform authentication.
Supplying an empty username and password string is a valid way to
do so, but you can set the http.[<url>.]emptyAuth configuration
variable to achieve the same, if you find it cleaner.

* bc/http-empty-auth:
  http: add option to try authentication without username

8 years agoMerge branch 'sp/remote-curl-ssl-strerror'
Junio C Hamano [Wed, 24 Feb 2016 21:25:56 +0000 (13:25 -0800)]
Merge branch 'sp/remote-curl-ssl-strerror'

Help those who debug http(s) part of the system.

* sp/remote-curl-ssl-strerror:
  remote-curl: include curl_errorstr on SSL setup failures

8 years agoMerge branch 'jk/lose-name-path'
Junio C Hamano [Wed, 24 Feb 2016 21:25:55 +0000 (13:25 -0800)]
Merge branch 'jk/lose-name-path'

The "name_path" API was an attempt to reduce the need to construct
the full path out of a series of path components while walking a
tree hierarchy, but over time made less efficient because the path
needs to be flattened, e.g. to be compared with another path that
is already flat.  The API has been removed and its users have been
rewritten to simplify the overall code complexity.

* jk/lose-name-path:
  list-objects: pass full pathname to callbacks
  list-objects: drop name_path entirely
  list-objects: convert name_path to a strbuf
  show_object_with_name: simplify by using path_name()
  http-push: stop using name_path

8 years agoMerge branch 'ew/force-ipv4'
Junio C Hamano [Wed, 24 Feb 2016 21:25:54 +0000 (13:25 -0800)]
Merge branch 'ew/force-ipv4'

"git fetch" and friends that make network connections can now be
told to only use ipv4 (or ipv6).

* ew/force-ipv4:
  connect & http: support -4 and -6 switches for remote operations

8 years agoMerge branch 'nd/git-common-dir-fix'
Junio C Hamano [Wed, 24 Feb 2016 21:25:53 +0000 (13:25 -0800)]
Merge branch 'nd/git-common-dir-fix'

"git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.

* nd/git-common-dir-fix:
  rev-parse: take prefix into account in --git-common-dir

8 years agoMerge branch 'nd/dwim-wildcards-as-pathspecs'
Junio C Hamano [Wed, 24 Feb 2016 21:25:52 +0000 (13:25 -0800)]
Merge branch 'nd/dwim-wildcards-as-pathspecs'

"git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.

* nd/dwim-wildcards-as-pathspecs:
  get_sha1: don't die() on bogus search strings
  check_filename: tighten dwim-wildcard ambiguity
  checkout: reorder check_filename conditional

8 years agotests: remove no-op full-svn-test target
Eric Wong [Tue, 23 Feb 2016 06:26:59 +0000 (06:26 +0000)]
tests: remove no-op full-svn-test target

git-svn has not supported GIT_SVN_NO_OPTIMIZE_COMMITS for
the "set-tree" sub-command in 9 years since commit 490f49ea5899
("git-svn: remove optimized commit stuff for set-tree").

So remove this target and TSVN variable to avoid confusion.

ref: http://mid.gmane.org/56C9B7B7.7030406@f2.dion.ne.jp

Helped-by: Kazutoshi Satoda <k_satoda@f2.dion.ne.jp>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoSync with 2.7.2
Junio C Hamano [Mon, 22 Feb 2016 21:16:12 +0000 (13:16 -0800)]
Sync with 2.7.2

8 years agoMerge branch 'js/git-remote-add-url-insteadof-test'
Junio C Hamano [Mon, 22 Feb 2016 21:15:01 +0000 (13:15 -0800)]
Merge branch 'js/git-remote-add-url-insteadof-test'

* js/git-remote-add-url-insteadof-test:
  t5505: 'remote add x y' should work when url.y.insteadOf = x

8 years agoMerge branch 'jk/config-include'
Junio C Hamano [Mon, 22 Feb 2016 21:14:48 +0000 (13:14 -0800)]
Merge branch 'jk/config-include'

* jk/config-include:
  git-config: better document default behavior for `--include`

8 years agoMerge branch 'ew/connect-verbose'
Junio C Hamano [Mon, 22 Feb 2016 21:14:33 +0000 (13:14 -0800)]
Merge branch 'ew/connect-verbose'

* ew/connect-verbose:
  t5570: add tests for "git {clone,fetch,pull} -v"

8 years agoGit 2.7.2 v2.7.2
Junio C Hamano [Mon, 22 Feb 2016 21:12:56 +0000 (13:12 -0800)]
Git 2.7.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'nd/ita-cleanup' into maint
Junio C Hamano [Mon, 22 Feb 2016 21:10:21 +0000 (13:10 -0800)]
Merge branch 'nd/ita-cleanup' into maint

Paths that have been told the index about with "add -N" are not
quite yet in the index, but a few commands behaved as if they
already are in a harmful way.

* nd/ita-cleanup:
  grep: make it clear i-t-a entries are ignored
  add and use a convenience macro ce_intent_to_add()
  blame: remove obsolete comment

8 years agoMerge branch 'pw/completion-stash' into maint
Junio C Hamano [Mon, 22 Feb 2016 21:10:20 +0000 (13:10 -0800)]
Merge branch 'pw/completion-stash' into maint

* pw/completion-stash:
  completion: fix mis-indentation in _git_stash()

8 years agoMerge branch 'mm/clean-doc-fix' into maint
Junio C Hamano [Mon, 22 Feb 2016 21:10:20 +0000 (13:10 -0800)]
Merge branch 'mm/clean-doc-fix' into maint

The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.

* mm/clean-doc-fix:
  Documentation/git-clean.txt: don't mention deletion of .git/modules/*

8 years agoMerge branch 'dw/mergetool-vim-window-shuffle' into maint
Junio C Hamano [Mon, 22 Feb 2016 21:10:19 +0000 (13:10 -0800)]
Merge branch 'dw/mergetool-vim-window-shuffle' into maint

The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.

* dw/mergetool-vim-window-shuffle:
  mergetool: reorder vim/gvim buffers in three-way diffs

8 years agoMerge branch 'ah/stripspace-optstring' into maint
Junio C Hamano [Mon, 22 Feb 2016 21:10:19 +0000 (13:10 -0800)]
Merge branch 'ah/stripspace-optstring' into maint

* ah/stripspace-optstring:
  stripspace: call U+0020 a "space" instead of a "blank"

8 years agoMerge branch 'ks/svn-pathnameencoding-4' of git://git.bogomips.org/git-svn
Junio C Hamano [Mon, 22 Feb 2016 18:29:46 +0000 (10:29 -0800)]
Merge branch 'ks/svn-pathnameencoding-4' of git://git.bogomips.org/git-svn

* 'ks/svn-pathnameencoding-4' of git://git.bogomips.org/git-svn:
  git-svn: apply "svn.pathnameencoding" before URL encoding
  git-svn: enable "svn.pathnameencoding" on dcommit
  git-svn: hoist out utf8 prep from t9129 to lib-git-svn

8 years agoMerge branch 'pw/completion-stash'
Junio C Hamano [Mon, 22 Feb 2016 18:27:24 +0000 (10:27 -0800)]
Merge branch 'pw/completion-stash'

* pw/completion-stash:
  completion: fix mis-indentation in _git_stash()

8 years agocompletion: fix mis-indentation in _git_stash()
SZEDER Gábor [Mon, 22 Feb 2016 13:02:50 +0000 (14:02 +0100)]
completion: fix mis-indentation in _git_stash()

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agogit.c: simplify stripping extension of a file in handle_builtin()
Alexander Kuleshov [Mon, 22 Feb 2016 07:18:29 +0000 (13:18 +0600)]
git.c: simplify stripping extension of a file in handle_builtin()

The handle_builtin() starts from stripping of command extension if
STRIP_EXTENSION is enabled. Actually STRIP_EXTENSION does not used
anywhere else.

This patch introduces strip_extension() helper to strip STRIP_EXTENSION
extension from argv[0] with the strip_suffix() instead of manually
stripping.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agogit-svn: apply "svn.pathnameencoding" before URL encoding
Kazutoshi Satoda [Mon, 8 Feb 2016 15:21:02 +0000 (00:21 +0900)]
git-svn: apply "svn.pathnameencoding" before URL encoding

The conversion from "svn.pathnameencoding" to UTF-8 should be applied
first, and then URL encoding should be applied on the resulting UTF-8
path. The reversed order of these transforms (used before this fix)
makes non-UTF-8 URL which causes error from Subversion such as
"Filesystem has no item: '...' path not found" when sending a rename (or
a copy) from non-ASCII path.

[ew: t9115 test case added (requires SVN_HTTPD_PORT set to test),
 squash LC_ALL=$a_utf8_locale export from Kazutoshi for Cygwin]

Signed-off-by: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
8 years agogit-svn: enable "svn.pathnameencoding" on dcommit
Kazutoshi Satoda [Mon, 8 Feb 2016 15:20:31 +0000 (00:20 +0900)]
git-svn: enable "svn.pathnameencoding" on dcommit

Without the initialization of $self->{pathnameencoding}, conversion in
repo_path() is always skipped as $self->{pathnameencoding} is undefined
even if "svn.pathnameencoding" is configured.

The lack of conversion results in mysterious failure of dcommit (e.g.
"Malformed XML") which happen only when a commit involves a change on
non-ASCII path.

[ew: add test case to t9115,
 squash LC_ALL=$a_utf8_locale export from Kazutoshi for Cygwin]

Signed-off-by: Kazutoshi SATODA <k_satoda@f2.dion.ne.jp>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
8 years agogit-svn: hoist out utf8 prep from t9129 to lib-git-svn
Eric Wong [Mon, 22 Feb 2016 02:17:51 +0000 (02:17 +0000)]
git-svn: hoist out utf8 prep from t9129 to lib-git-svn

We will be reusing this in t9115.

Suggested-by: Kazutoshi Satoda <k_satoda@f2.dion.ne.jp>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
8 years agoexec_cmd.c: use find_last_dir_sep() for code simplification
Alexander Kuleshov [Fri, 19 Feb 2016 08:44:48 +0000 (14:44 +0600)]
exec_cmd.c: use find_last_dir_sep() for code simplification

We are trying to extract dirname from argv0 in the git_extract_argv0_path().
But in the same time, the <git-compat-util.h> provides find_last_dir_sep()
to get dirname from a given path.  Let's use it instead of loop for the code
simplification.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce objectname_atom_parser()
Karthik Nayak [Wed, 17 Feb 2016 18:06:19 +0000 (23:36 +0530)]
ref-filter: introduce objectname_atom_parser()

Introduce objectname_atom_parser() which will parse the
'%(objectname)' atom and store information into the 'used_atom'
structure based on the modifiers used along with the atom.

Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce contents_atom_parser()
Karthik Nayak [Wed, 17 Feb 2016 18:06:18 +0000 (23:36 +0530)]
ref-filter: introduce contents_atom_parser()

Introduce contents_atom_parser() which will parse the '%(contents)'
atom and store information into the 'used_atom' structure based on the
modifiers used along with the atom. Also introduce body_atom_parser()
and subject_atom_parser() for parsing atoms '%(body)' and '%(subject)'
respectively.

Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce remote_ref_atom_parser()
Karthik Nayak [Wed, 17 Feb 2016 18:06:17 +0000 (23:36 +0530)]
ref-filter: introduce remote_ref_atom_parser()

Introduce remote_ref_atom_parser() which will parse the '%(upstream)'
and '%(push)' atoms and store information into the 'used_atom'
structure based on the modifiers used along with the corresponding
atom.

Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: align: introduce long-form syntax
Karthik Nayak [Wed, 17 Feb 2016 18:06:16 +0000 (23:36 +0530)]
ref-filter: align: introduce long-form syntax

Introduce optional prefixes "width=" and "position=" for the align atom
so that the atom can be used as "%(align:width=<width>,position=<position>)".

Add Documentation and tests for the same.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce align_atom_parser()
Karthik Nayak [Wed, 17 Feb 2016 18:06:15 +0000 (23:36 +0530)]
ref-filter: introduce align_atom_parser()

Introduce align_atom_parser() which will parse an 'align' atom and
store the required alignment position and width in the 'used_atom'
structure for further usage in populate_value().

Since this patch removes the last usage of match_atom_name(), remove
the function from ref-filter.c.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Helped-by: Jeff King <peff@peff.net>
Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce parse_align_position()
Karthik Nayak [Wed, 17 Feb 2016 18:06:14 +0000 (23:36 +0530)]
ref-filter: introduce parse_align_position()

Extract parse_align_position() from populate_value(), which, given a
string, would give us the alignment position. This is a preparatory
patch as to introduce prefixes for the %(align) atom and avoid
redundancy in the code.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce color_atom_parser()
Karthik Nayak [Wed, 17 Feb 2016 18:06:13 +0000 (23:36 +0530)]
ref-filter: introduce color_atom_parser()

Introduce color_atom_parser() which will parse a "color" atom and
store its color in the "used_atom" structure for further usage in
populate_value().

Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce parsing functions for each valid atom
Karthik Nayak [Wed, 17 Feb 2016 18:06:12 +0000 (23:36 +0530)]
ref-filter: introduce parsing functions for each valid atom

Parsing atoms is done in populate_value(), this is repetitive and
hence expensive. Introduce a parsing function which would let us parse
atoms beforehand and store the required details into the 'used_atom'
structure for further usage.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Helped-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: introduce struct used_atom
Karthik Nayak [Wed, 17 Feb 2016 18:06:11 +0000 (23:36 +0530)]
ref-filter: introduce struct used_atom

Introduce the 'used_atom' structure to replace the existing
implementation of 'used_atom' (which is a list of atoms). This helps
us parse atoms beforehand and store required details into the
'used_atom' for future usage.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: bump 'used_atom' and related code to the top
Karthik Nayak [Wed, 17 Feb 2016 18:06:10 +0000 (23:36 +0530)]
ref-filter: bump 'used_atom' and related code to the top

Bump code to the top for usage in further patches.

Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoref-filter: use string_list_split over strbuf_split
Jeff King [Wed, 17 Feb 2016 18:06:09 +0000 (23:36 +0530)]
ref-filter: use string_list_split over strbuf_split

We don't do any post-processing on the resulting strbufs, so it is
simpler to just use string_list_split, which takes care of removing
the delimiter for us.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Karthik Nayak <Karthik.188@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'maint'
Junio C Hamano [Wed, 17 Feb 2016 18:14:39 +0000 (10:14 -0800)]
Merge branch 'maint'

* maint:
  Start preparing for 2.7.2
  git-cvsserver.perl: fix typo

8 years agoSeventh batch for the 2.8 cycle
Junio C Hamano [Wed, 17 Feb 2016 18:13:57 +0000 (10:13 -0800)]
Seventh batch for the 2.8 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'dw/mergetool-vim-window-shuffle'
Junio C Hamano [Wed, 17 Feb 2016 18:13:34 +0000 (10:13 -0800)]
Merge branch 'dw/mergetool-vim-window-shuffle'

The vimdiff backend for "git mergetool" has been tweaked to arrange
and number buffers in the order that would match the expectation of
majority of people who read left to right, then top down and assign
buffers 1 2 3 4 "mentally" to local base remote merge windows based
on that order.

* dw/mergetool-vim-window-shuffle:
  mergetool: reorder vim/gvim buffers in three-way diffs

8 years agoMerge branch 'ah/stripspace-optstring'
Junio C Hamano [Wed, 17 Feb 2016 18:13:33 +0000 (10:13 -0800)]
Merge branch 'ah/stripspace-optstring'

* ah/stripspace-optstring:
  stripspace: call U+0020 a "space" instead of a "blank"

8 years agoMerge branch 'mm/clean-doc-fix'
Junio C Hamano [Wed, 17 Feb 2016 18:13:33 +0000 (10:13 -0800)]
Merge branch 'mm/clean-doc-fix'

The documentation for "git clean" has been corrected; it mentioned
that .git/modules/* are removed by giving two "-f", which has never
been the case.

* mm/clean-doc-fix:
  Documentation/git-clean.txt: don't mention deletion of .git/modules/*

8 years agoMerge branch 'jk/rerere-xsnprintf'
Junio C Hamano [Wed, 17 Feb 2016 18:13:33 +0000 (10:13 -0800)]
Merge branch 'jk/rerere-xsnprintf'

Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues.  A few
calls to strcpy(3) in "git rerere" that are already safe has been
rewritten to avoid false wanings.

* jk/rerere-xsnprintf:
  rerere: replace strcpy with xsnprintf

8 years agoMerge branch 'jk/test-path-utils-xsnprintf'
Junio C Hamano [Wed, 17 Feb 2016 18:13:32 +0000 (10:13 -0800)]
Merge branch 'jk/test-path-utils-xsnprintf'

Some calls to strcpy(3) triggers a false warning from static
analysers that are less intelligent than humans, and reducing the
number of these false hits helps us notice real issues.  A few
calls to strcpy(3) in test-path-utils that are already safe has
been rewritten to avoid false wanings.

* jk/test-path-utils-xsnprintf:
  test-path-utils: use xsnprintf in favor of strcpy

8 years agoMerge branch 'da/user-useconfigonly'
Junio C Hamano [Wed, 17 Feb 2016 18:13:31 +0000 (10:13 -0800)]
Merge branch 'da/user-useconfigonly'

The "user.useConfigOnly" configuration variable can be used to
force the user to always set user.email & user.name configuration
variables, serving as a reminder for those who work on multiple
projects and do not want to put these in their $HOME/.gitconfig.

* da/user-useconfigonly:
  ident: add user.useConfigOnly boolean for when ident shouldn't be guessed
  fmt_ident: refactor strictness checks

8 years agoMerge branch 'nd/clear-gitenv-upon-use-of-alias'
Junio C Hamano [Wed, 17 Feb 2016 18:13:31 +0000 (10:13 -0800)]
Merge branch 'nd/clear-gitenv-upon-use-of-alias'

The automatic typo correction applied to an alias was broken
with a recent change already in 'master'.

* nd/clear-gitenv-upon-use-of-alias:
  restore_env(): free the saved environment variable once we are done
  git: simplify environment save/restore logic
  git: protect against unbalanced calls to {save,restore}_env()
  git: remove an early return from save_env_before_alias()

8 years agoMerge branch 'mg/mingw-test-fix'
Junio C Hamano [Wed, 17 Feb 2016 18:13:29 +0000 (10:13 -0800)]
Merge branch 'mg/mingw-test-fix'

An earlier adjustment of test mistakenly used write_script
to prepare a file whose exact content matters for the test;
reverting that part fixes the breakage for those who use
SHELL_PATH that is different from /bin/sh.

* mg/mingw-test-fix:
  t9100: fix breakage when SHELL_PATH is not /bin/sh

8 years agoMerge branch 'js/mingw-tests'
Junio C Hamano [Wed, 17 Feb 2016 18:13:28 +0000 (10:13 -0800)]
Merge branch 'js/mingw-tests'

Test scripts have been updated to remove assumptions that are not
portable between Git for POSIX and Git for Windows, or to skip ones
with expectations that are not satisfiable on Git for Windows.

* js/mingw-tests: (21 commits)
  gitignore: ignore generated test-fake-ssh executable
  mingw: do not bother to test funny file names
  mingw: skip a test in t9130 that cannot pass on Windows
  mingw: handle the missing POSIXPERM prereq in t9124
  mingw: avoid illegal filename in t9118
  mingw: mark t9100's test cases with appropriate prereqs
  t0008: avoid absolute path
  mingw: work around pwd issues in the tests
  mingw: fix t9700's assumption about directory separators
  mingw: skip test in t1508 that fails due to path conversion
  tests: turn off git-daemon tests if FIFOs are not available
  mingw: disable mkfifo-based tests
  mingw: accomodate t0060-path-utils for MSYS2
  mingw: fix t5601-clone.sh
  mingw: let lstat() fail with errno == ENOTDIR when appropriate
  mingw: try to delete target directory before renaming
  mingw: prepare the TMPDIR environment variable for shell scripts
  mingw: factor out Windows specific environment setup
  Git.pm: stop assuming that absolute paths start with a slash
  mingw: do not trust MSYS2's MinGW gettext.sh
  ...

8 years agoMerge branch 'jk/drop-rsync-transport'
Junio C Hamano [Wed, 17 Feb 2016 18:13:28 +0000 (10:13 -0800)]
Merge branch 'jk/drop-rsync-transport'

It turns out "git clone" over rsync transport has been broken when
the source repository has packed references for a long time, and
nobody noticed nor complained about it.

* jk/drop-rsync-transport:
  transport: drop support for git-over-rsync

8 years agoStart preparing for 2.7.2
Junio C Hamano [Wed, 17 Feb 2016 18:05:44 +0000 (10:05 -0800)]
Start preparing for 2.7.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'js/test-lib-windows-emulated-yes' into maint
Junio C Hamano [Wed, 17 Feb 2016 18:03:41 +0000 (10:03 -0800)]
Merge branch 'js/test-lib-windows-emulated-yes' into maint

The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.

* js/test-lib-windows-emulated-yes:
  test-lib: limit the output of the yes utility

8 years agoMerge branch 'aw/push-force-with-lease-reporting' into maint
Junio C Hamano [Wed, 17 Feb 2016 18:03:40 +0000 (10:03 -0800)]
Merge branch 'aw/push-force-with-lease-reporting' into maint

"git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).

* aw/push-force-with-lease-reporting:
  push: fix ref status reporting for --force-with-lease

8 years agoMerge branch 'nd/do-not-move-worktree-manually' into maint
Junio C Hamano [Wed, 17 Feb 2016 18:03:40 +0000 (10:03 -0800)]
Merge branch 'nd/do-not-move-worktree-manually' into maint

"git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.

* nd/do-not-move-worktree-manually:
  worktree: stop supporting moving worktrees manually
  worktree.c: fix indentation

8 years agoMerge branch 'js/xmerge-marker-eol' into maint
Junio C Hamano [Wed, 17 Feb 2016 18:03:39 +0000 (10:03 -0800)]
Merge branch 'js/xmerge-marker-eol' into maint

The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.

* js/xmerge-marker-eol:
  merge-file: ensure that conflict sections match eol style
  merge-file: let conflict markers match end-of-line style of the context

8 years agogit-cvsserver.perl: fix typo
GyuYong Jung [Wed, 17 Feb 2016 02:14:58 +0000 (11:14 +0900)]
git-cvsserver.perl: fix typo

Signed-off-by: GyuYong Jung <obliviscence@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot5505: 'remote add x y' should work when url.y.insteadOf = x
Johannes Schindelin [Wed, 17 Feb 2016 16:20:47 +0000 (17:20 +0100)]
t5505: 'remote add x y' should work when url.y.insteadOf = x

This is the test missing from fb86e32 (git remote: allow adding
remotes agreeing with url.<...>.insteadOf, 2014-12-23): we should
allow adding a remote with the URL when it agrees with the
url.<...>.insteadOf setting.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoam -i: fix "v"iew
Junio C Hamano [Tue, 16 Feb 2016 22:46:39 +0000 (14:46 -0800)]
am -i: fix "v"iew

The 'v'iew subcommand of the interactive mode of "git am -i" was
broken by the rewrite to C we did at around 2.6.0 timeframe at
7ff26832 (builtin-am: implement -i/--interactive, 2015-08-04); we
used to spawn the pager via the shell, accepting things like

PAGER='less -S'

in the environment, but the rewrite forgot and tried to directly
spawn a command whose name is the entire string.

The previous refactoring of the new helper function makes it easier
for us to do the right thing.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agopager: factor out a helper to prepare a child process to run the pager
Junio C Hamano [Tue, 16 Feb 2016 22:34:44 +0000 (14:34 -0800)]
pager: factor out a helper to prepare a child process to run the pager

When running a pager, we need to run the program git_pager() gave
us, but we need to make sure we spawn it via the shell (i.e. it is
valid to say PAGER='less -S', for example) and give default values
to $LESS and $LV environment variables.  Factor out these details
to a separate helper function.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agopager: lose a separate argv[]
Junio C Hamano [Tue, 16 Feb 2016 22:26:40 +0000 (14:26 -0800)]
pager: lose a separate argv[]

These days, using the embedded args array in the child_process
structure is the norm.  Follow that practice.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoremote: use remote_is_configured() for add and rename
Thomas Gummerer [Tue, 16 Feb 2016 09:47:52 +0000 (10:47 +0100)]
remote: use remote_is_configured() for add and rename

Both remote add and remote rename use a slightly different hand-rolled
check if the remote exits.  The hand-rolled check may have some subtle
cases in which it might fail to detect when a remote already exists.
One such case was fixed in fb86e32 ("git remote: allow adding remotes
agreeing with url.<...>.insteadOf").  Another case is when a remote is
configured as follows:

  [remote "foo"]
    vcs = bar

If we try to run `git remote add foo bar` with the above remote
configuration, git segfaults.  This change fixes it.

In addition, git remote rename $existing foo with the configuration for
foo as above silently succeeds, even though foo already exists,
modifying its configuration.  With this patch it fails with "remote foo
already exists".

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoremote: actually check if remote exits
Thomas Gummerer [Tue, 16 Feb 2016 09:47:51 +0000 (10:47 +0100)]
remote: actually check if remote exits

When converting the git remote command to a builtin in 211c89 ("Make
git-remote a builtin"), a few calls to check if a remote exists were
converted from:
       if (!exists $remote->{$name}) {
          [...]
to:
       remote = remote_get(argv[1]);
       if (!remote)
          [...]

The new check is not quite correct, because remote_get() never returns
NULL if a name is given.  This leaves us with the somewhat cryptic error
message "error: Could not remove config section 'remote.test'", if we
are trying to remove a remote that does not exist, or a similar error if
we try to rename a remote.

Use the remote_is_configured() function to check whether the remote
actually exists, and die with a more sensible error message ("No such
remote: $remotename") instead if it doesn't.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoremote: simplify remote_is_configured()
Thomas Gummerer [Tue, 16 Feb 2016 09:47:50 +0000 (10:47 +0100)]
remote: simplify remote_is_configured()

The remote_is_configured() function allows checking whether a remote
exists or not.  The function however only works if remote_get() wasn't
called before calling it.  In addition, it only checks the configuration
for remotes, but not remotes or branches files.

Make use of the origin member of struct remote instead, which indicates
where the remote comes from.  It will be set to some value if the remote
is configured in any file in the repository, but is initialized to 0 if
the remote is only created in make_remote().

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoremote: use parse_config_key
Thomas Gummerer [Tue, 16 Feb 2016 09:47:49 +0000 (10:47 +0100)]
remote: use parse_config_key

95b567c7 ("use skip_prefix to avoid repeating strings") transformed
calls using starts_with() and then skipping the length of the prefix to
skip_prefix() calls.  In remote.c there are a few calls like:

  if (starts_with(foo, "bar"))
      foo += 3

These calls weren't touched by the aformentioned commit, but can be
replaced by calls to parse_config_key(), to simplify the code and
clarify the intentions.  Do that.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agohttp: implement public key pinning
Christoph Egger [Mon, 15 Feb 2016 14:04:22 +0000 (15:04 +0100)]
http: implement public key pinning

Add the http.pinnedpubkey configuration option for public key
pinning. It allows any string supported by libcurl --
base64(sha256(pubkey)) or filename of the full public key.

If cURL does not support pinning (is too old) output a warning to the
user.

Signed-off-by: Christoph Egger <christoph@christoph-egger.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree add -B: do the checkout test before update branch
Nguyễn Thái Ngọc Duy [Mon, 15 Feb 2016 13:35:33 +0000 (20:35 +0700)]
worktree add -B: do the checkout test before update branch

If --force is not given but -B is, we should not proceed if the given
branch is already checked out elsewhere. add_worktree() has this test,
but it kicks in too late when "git branch --force" is already
executed. As a result, even though we correctly refuse to create a new
worktree, we have already updated the branch and mess up the other
checkout.

Repeat the die_if_checked_out() test again for this specific case before
"git branch" runs.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree: fix "add -B"
Nguyễn Thái Ngọc Duy [Mon, 15 Feb 2016 13:35:32 +0000 (20:35 +0700)]
worktree: fix "add -B"

Current code does not update "symref" when -B is used. This string
contains the new HEAD. Because it's empty "git worktree add -B" fails at
symbolic-ref step.

Because branch creation is already done before calling add_worktree(),
-B is equivalent to -b from add_worktree() point of view. We do not need
the special case for -B.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodir.c: don't exclude whole dir prematurely
Nguyễn Thái Ngọc Duy [Mon, 15 Feb 2016 09:03:39 +0000 (16:03 +0700)]
dir.c: don't exclude whole dir prematurely

If there is a pattern "!foo/bar", this patch makes it not exclude
"foo" right away. This gives us a chance to examine "foo" and
re-include "foo/bar".

Helped-by: brian m. carlson <sandals@crustytoothpaste.net>
Helped-by: Micha Wiedenmann <mw-u2@gmx.de>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodir.c: support marking some patterns already matched
Nguyễn Thái Ngọc Duy [Mon, 15 Feb 2016 09:03:38 +0000 (16:03 +0700)]
dir.c: support marking some patterns already matched

Given path "a" and the pattern "a", it's matched. But if we throw path
"a/b" to pattern "a", the code fails to realize that if "a" matches
"a" then "a/b" should also be matched.

When the pattern is matched the first time, we can mark it "sticky", so
that all files and dirs inside the matched path also matches. This is a
simpler solution than modify all match scenarios to fix that.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodir.c: support tracing exclude
Nguyễn Thái Ngọc Duy [Mon, 15 Feb 2016 09:03:37 +0000 (16:03 +0700)]
dir.c: support tracing exclude

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodir.c: fix match_pathname()
Nguyễn Thái Ngọc Duy [Mon, 15 Feb 2016 09:03:36 +0000 (16:03 +0700)]
dir.c: fix match_pathname()

Given the pattern "1/2/3/4" and the path "1/2/3/4/f", the pattern
prefix is "1/2/3/4". We will compare and remove the prefix from both
pattern and path and come to this code

/*
 * If the whole pattern did not have a wildcard,
 * then our prefix match is all we need; we
 * do not need to call fnmatch at all.
 */
if (!patternlen && !namelen)
return 1;

where patternlen is zero (full pattern consumed) and the remaining
path in "name" is "/f". We fail to realize it's matched in this case
and fall back to fnmatch(), which also fails to catch it. Fix it.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agohttp: add option to try authentication without username
brian m. carlson [Mon, 15 Feb 2016 18:44:46 +0000 (18:44 +0000)]
http: add option to try authentication without username

Performing GSS-Negotiate authentication using Kerberos does not require
specifying a username or password, since that information is already
included in the ticket itself.  However, libcurl refuses to perform
authentication if it has not been provided with a username and password.
Add an option, http.emptyAuth, that provides libcurl with an empty
username and password to make it attempt authentication anyway.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoremote-curl: include curl_errorstr on SSL setup failures
Shawn Pearce [Sun, 14 Feb 2016 01:39:34 +0000 (17:39 -0800)]
remote-curl: include curl_errorstr on SSL setup failures

For curl error 35 (CURLE_SSL_CONNECT_ERROR) users need the
additional text stored in CURLOPT_ERRORBUFFER to debug why
the connection did not start. This is curl_errorstr inside
of http.c, so include that in the message if it is non-empty.

Sometimes HTTP response codes aren't yet available, such as
when the SSL setup fails. Don't include HTTP 0 in the message.

Signed-off-by: Shawn Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot5570: add tests for "git {clone,fetch,pull} -v"
Eric Wong [Sun, 14 Feb 2016 09:26:29 +0000 (09:26 +0000)]
t5570: add tests for "git {clone,fetch,pull} -v"

Now that git_connect is more information about connectivity
progress after: ("pass transport verbosity down to git_connect")
we should ensure it remains so for future users who need to
to diagnose networking problems.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agogit-config: better document default behavior for `--include`
Jeff King [Mon, 19 Jan 2015 19:58:47 +0000 (14:58 -0500)]
git-config: better document default behavior for `--include`

As described in the commit message of 9b25a0b (config: add
include directive, 2012-02-06), the `--include` option is
only on by default in some cases. But our documentation
described it as just "defaults to on", which doesn't tell
the whole story.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agorev-parse: take prefix into account in --git-common-dir
Nguyễn Thái Ngọc Duy [Fri, 12 Feb 2016 04:31:45 +0000 (11:31 +0700)]
rev-parse: take prefix into account in --git-common-dir

Most of the time, get_git_common_dir() returns an absolute path so
prefix is irrelevant. If it returns a relative path (e.g. from the
main worktree) then prefixing is required.

Noticed-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agolist-objects: pass full pathname to callbacks
Jeff King [Thu, 11 Feb 2016 22:28:36 +0000 (17:28 -0500)]
list-objects: pass full pathname to callbacks

When we find a blob at "a/b/c", we currently pass this to
our show_object_fn callbacks as two components: "a/b/" and
"c". Callbacks which want the full value then call
path_name(), which concatenates the two. But this is an
inefficient interface; the path is a strbuf, and we could
simply append "c" to it temporarily, then roll back the
length, without creating a new copy.

So we could improve this by teaching the callsites of
path_name() this trick (and there are only 3). But we can
also notice that no callback actually cares about the
broken-down representation, and simply pass each callback
the full path "a/b/c" as a string. The callback code becomes
even simpler, then, as we do not have to worry about freeing
an allocated buffer, nor rolling back our modification to
the strbuf.

This is theoretically less efficient, as some callbacks
would not bother to format the final path component. But in
practice this is not measurable. Since we use the same
strbuf over and over, our work to grow it is amortized, and
we really only pay to memcpy a few bytes.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agolist-objects: drop name_path entirely
Jeff King [Thu, 11 Feb 2016 22:26:44 +0000 (17:26 -0500)]
list-objects: drop name_path entirely

In the previous commit, we left name_path as a thin wrapper
around a strbuf. This patch drops it entirely. As a result,
every show_object_fn callback needs to be adjusted. However,
none of their code needs to be changed at all, because the
only use was to pass it to path_name(), which now handles
the bare strbuf.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agolist-objects: convert name_path to a strbuf
Jeff King [Thu, 11 Feb 2016 22:26:18 +0000 (17:26 -0500)]
list-objects: convert name_path to a strbuf

The "struct name_path" data is examined in only two places:
we generate it in process_tree(), and we convert it to a
single string in path_name(). Everyone else just passes it
through to those functions.

We can further note that process_tree() already keeps a
single strbuf with the leading tree path, for use with
tree_entry_interesting().

Instead of building a separate name_path linked list, let's
just use the one we already build in "base". This reduces
the amount of code (especially tricky code in path_name()
which did not check for integer overflows caused by deep
or large pathnames).

It is also more efficient in some instances.  Any time we
were using tree_entry_interesting, we were building up the
strbuf anyway, so this is an immediate and obvious win
there. In cases where we were not, we trade off storing
"pathname/" in a strbuf on the heap for each level of the
path, instead of two pointers and an int on the stack (with
one pointer into the tree object). On a 64-bit system, the
latter is 20 bytes; so if path components are less than that
on average, this has lower peak memory usage.  In practice
it probably doesn't matter either way; we are already
holding in memory all of the tree objects leading up to each
pathname, and for normal-depth pathnames, we are only
talking about hundreds of bytes.

This patch leaves "struct name_path" as a thin wrapper
around the strbuf, to avoid disrupting callbacks. We should
fix them, but leaving it out makes this diff easier to view.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoshow_object_with_name: simplify by using path_name()
Jeff King [Thu, 11 Feb 2016 22:24:18 +0000 (17:24 -0500)]
show_object_with_name: simplify by using path_name()

When "git rev-list" shows an object with its associated path
name, it does so by walking the name_path linked list and
printing each component (stopping at any embedded NULs or
newlines).

We'd like to eventually get rid of name_path entirely in
favor of a single buffer, and dropping this custom printing
code is part of that. As a first step, let's use path_name()
to format the list into a single buffer, and print that.
This is strictly less efficient than the original, but it's
a temporary step in the refactoring; our end game will be to
get the fully formatted name in the first place.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agohttp-push: stop using name_path
Jeff King [Thu, 11 Feb 2016 22:23:48 +0000 (17:23 -0500)]
http-push: stop using name_path

The graph traversal code here passes along a name_path to
build up the pathname at which we find each blob. But we
never actually do anything with the resulting names, making
it a waste of code and memory.

This usage came in aa1dbc9 (Update http-push functionality,
2006-03-07), and originally the result was passed to
"add_object" (which stored it, but didn't really use it,
either). But we stopped using that function in 1f1e895 (Add
"named object array" concept, 2006-06-19) in favor of
storing just the objects themselves.

Moreover, the generation of the name in process_tree() is
buggy. It sticks "name" onto the end of the name_path linked
list, and then passes it down again as it recurses (instead
of "entry.path"). So it's a good thing this was unused, as
the resulting path for "a/b/c/d" would end up as "a/a/a/a".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoconnect & http: support -4 and -6 switches for remote operations
Eric Wong [Wed, 3 Feb 2016 04:09:14 +0000 (04:09 +0000)]
connect & http: support -4 and -6 switches for remote operations

Sometimes it is necessary to force IPv4-only or IPv6-only operation
on networks where name lookups may return a non-routable address and
stall remote operations.

The ssh(1) command has an equivalent switches which we may pass when
we run them.  There may be old ssh(1) implementations out there
which do not support these switches; they should report the
appropriate error in that case.

rsync support is untouched for now since it is deprecated and
scheduled to be removed.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agomergetool: reorder vim/gvim buffers in three-way diffs
Dickson Wong [Fri, 29 Jan 2016 02:18:14 +0000 (18:18 -0800)]
mergetool: reorder vim/gvim buffers in three-way diffs

When invoking default (g)vimdiff three-way merge, the merged file is
loaded as the first buffer but moved to the bottom as the fourth window.
This causes a disconnect between vim commands that operate on window
positions (e.g. CTRL-W_w) and those that operate on buffer index (e.g.
do/dp).

This change reorders the buffers to have the same index as windows while
keeping the cursor default to the merged result as the bottom window.

Signed-off-by: Dickson Wong <dicksonwong@gmail.com>
Tested-by: Michael J Gruber <git@drmicha.warpmail.net>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoSixth batch for the 2.8 cycle
Junio C Hamano [Wed, 10 Feb 2016 22:24:14 +0000 (14:24 -0800)]
Sixth batch for the 2.8 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'js/test-lib-windows-emulated-yes'
Junio C Hamano [Wed, 10 Feb 2016 22:20:10 +0000 (14:20 -0800)]
Merge branch 'js/test-lib-windows-emulated-yes'

The emulated "yes" command used in our test scripts has been
tweaked not to spend too much time generating unnecessary output
that is not used, to help those who test on Windows where it would
not stop until it fills the pipe buffer due to lack of SIGPIPE.

* js/test-lib-windows-emulated-yes:
  test-lib: limit the output of the yes utility

8 years agoMerge branch 'wp/sha1-name-negative-match'
Junio C Hamano [Wed, 10 Feb 2016 22:20:10 +0000 (14:20 -0800)]
Merge branch 'wp/sha1-name-negative-match'

A new "<branch>^{/!-<pattern>}" notation can be used to name a
commit that is reachable from <branch> that does not match the
given <pattern>.

* wp/sha1-name-negative-match:
  object name: introduce '^{/!-<negative pattern>}' notation
  test for '!' handling in rev-parse's named commits

8 years agoMerge branch 'jk/options-cleanup'
Junio C Hamano [Wed, 10 Feb 2016 22:20:08 +0000 (14:20 -0800)]
Merge branch 'jk/options-cleanup'

Various clean-ups to the command line option parsing.

* jk/options-cleanup:
  apply, ls-files: simplify "-z" parsing
  checkout-index: disallow "--no-stage" option
  checkout-index: handle "--no-index" option
  checkout-index: handle "--no-prefix" option
  checkout-index: simplify "-z" option parsing
  give "nbuf" strbuf a more meaningful name

8 years agoMerge branch 'aw/push-force-with-lease-reporting'
Junio C Hamano [Wed, 10 Feb 2016 22:20:08 +0000 (14:20 -0800)]
Merge branch 'aw/push-force-with-lease-reporting'

"git push --force-with-lease" has been taught to report if the push
needed to force (or fast-forwarded).

* aw/push-force-with-lease-reporting:
  push: fix ref status reporting for --force-with-lease

8 years agoMerge branch 'ls/clean-smudge-override-in-config'
Junio C Hamano [Wed, 10 Feb 2016 22:20:07 +0000 (14:20 -0800)]
Merge branch 'ls/clean-smudge-override-in-config'

Clean/smudge filters defined in a configuration file of lower
precedence can now be overridden to be a pass-through no-op by
setting the variable to an empty string.

* ls/clean-smudge-override-in-config:
  convert: treat an empty string for clean/smudge filters as "cat"

8 years agoMerge branch 'ew/connect-verbose'
Junio C Hamano [Wed, 10 Feb 2016 22:20:07 +0000 (14:20 -0800)]
Merge branch 'ew/connect-verbose'

There were a few "now I am doing this thing" progress messages in
the TCP connection code that can be triggered by setting a verbose
option internally in the code, but "git fetch -v" and friends never
passed the verbose option down to that codepath.

There was a brief discussion about the impact on the end-user
experience by not limiting this to "fetch -v -v", but I think the
conclusion is that this is OK to enable with a single "-v" as it is
not too noisy.

* ew/connect-verbose:
  pass transport verbosity down to git_connect

8 years agoMerge branch 'cc/untracked'
Junio C Hamano [Wed, 10 Feb 2016 22:20:06 +0000 (14:20 -0800)]
Merge branch 'cc/untracked'

Update the untracked cache subsystem and change its primary UI from
"git update-index" to "git config".

* cc/untracked:
  t7063: add tests for core.untrackedCache
  test-dump-untracked-cache: don't modify the untracked cache
  config: add core.untrackedCache
  dir: simplify untracked cache "ident" field
  dir: add remove_untracked_cache()
  dir: add {new,add}_untracked_cache()
  update-index: move 'uc' var declaration
  update-index: add untracked cache notifications
  update-index: add --test-untracked-cache
  update-index: use enum for untracked cache options
  dir: free untracked cache when removing it

8 years agoMerge branch 'js/xmerge-marker-eol'
Junio C Hamano [Wed, 10 Feb 2016 22:20:06 +0000 (14:20 -0800)]
Merge branch 'js/xmerge-marker-eol'

The low-level merge machinery has been taught to use CRLF line
termination when inserting conflict markers to merged contents that
are themselves CRLF line-terminated.

* js/xmerge-marker-eol:
  merge-file: ensure that conflict sections match eol style
  merge-file: let conflict markers match end-of-line style of the context

8 years agoMerge branch 'nd/do-not-move-worktree-manually'
Junio C Hamano [Wed, 10 Feb 2016 22:20:05 +0000 (14:20 -0800)]
Merge branch 'nd/do-not-move-worktree-manually'

"git worktree" had a broken code that attempted to auto-fix
possible inconsistency that results from end-users moving a
worktree to different places without telling Git (the original
repository needs to maintain backpointers to its worktrees, but
"mv" run by end-users who are not familiar with that fact will
obviously not adjust them), which actually made things worse
when triggered.

* nd/do-not-move-worktree-manually:
  worktree: stop supporting moving worktrees manually
  worktree.c: fix indentation