gitweb.git
Merge branch 'nd/export-worktree'Junio C Hamano Mon, 3 Aug 2015 18:01:14 +0000 (11:01 -0700)

Merge branch 'nd/export-worktree'

Running an aliased command from a subdirectory when the .git thing
in the working tree is a gitfile pointing elsewhere did not work.

* nd/export-worktree:
setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR

Merge branch 'ee/clean-remove-dirs'Junio C Hamano Mon, 3 Aug 2015 18:01:13 +0000 (11:01 -0700)

Merge branch 'ee/clean-remove-dirs'

Replace "is this subdirectory a separate repository that should not
be touched?" check "git clean" does by checking if it has .git/HEAD
using the submodule-related code with a more optimized check.

* ee/clean-remove-dirs:
read_gitfile_gently: fix use-after-free
clean: improve performance when removing lots of directories
p7300: add performance tests for clean
t7300: add tests to document behavior of clean and nested git
setup: sanity check file size in read_gitfile_gently
setup: add gentle version of read_gitfile

Merge branch 'cb/parse-magnitude'Junio C Hamano Mon, 3 Aug 2015 18:01:13 +0000 (11:01 -0700)

Merge branch 'cb/parse-magnitude'

Move machinery to parse human-readable scaled numbers like 1k, 4M,
and 2G as an option parameter's value from pack-objects to
parse-options API, to make it available to other codepaths.

* cb/parse-magnitude:
parse-options: move unsigned long option parsing out of pack-objects.c
test-parse-options: update to handle negative ints

Merge branch 'bc/gpg-verify-raw'Junio C Hamano Mon, 3 Aug 2015 18:01:12 +0000 (11:01 -0700)

Merge branch 'bc/gpg-verify-raw'

"git verify-tag" and "git verify-commit" have been taught to share
more code, and then learned to optionally show the verification
message from the underlying GPG implementation.

* bc/gpg-verify-raw:
verify-tag: add option to print raw gpg status information
verify-commit: add option to print raw gpg status information
gpg: centralize printing signature buffers
gpg: centralize signature check
verify-commit: add test for exit status on untrusted signature
verify-tag: share code with verify-commit
verify-tag: add tests

Merge branch 'pt/am-foreign'Junio C Hamano Mon, 3 Aug 2015 18:01:12 +0000 (11:01 -0700)

Merge branch 'pt/am-foreign'

Various enhancements around "git am" reading patches generated by
foreign SCM.

* pt/am-foreign:
am: teach mercurial patch parser how to read from stdin
am: use gmtime() to parse mercurial patch date
t4150: test applying StGit series
am: teach StGit patch parser how to read from stdin
t4150: test applying StGit patch

Merge branch 'kn/for-each-ref'Junio C Hamano Mon, 3 Aug 2015 18:01:10 +0000 (11:01 -0700)

Merge branch 'kn/for-each-ref'

GSoC project to rebuild ref listing by branch and tag based on the
for-each-ref machinery. This is its first part.

* kn/for-each-ref:
ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname
for-each-ref: introduce filter_refs()
ref-filter: move code from 'for-each-ref'
ref-filter: add 'ref-filter.h'
for-each-ref: rename variables called sort to sorting
for-each-ref: rename some functions and make them public
for-each-ref: introduce 'ref_array_clear()'
for-each-ref: introduce new structures for better organisation
for-each-ref: rename 'refinfo' to 'ref_array_item'
for-each-ref: clean up code
for-each-ref: extract helper functions out of grab_single_ref()

Merge branch 'mh/replace-refs'Junio C Hamano Mon, 3 Aug 2015 18:01:10 +0000 (11:01 -0700)

Merge branch 'mh/replace-refs'

Add an environment variable to tell Git to look into refs hierarchy
other than refs/replace/ for the object replacement data.

* mh/replace-refs:
Allow to control where the replace refs are looked for

Sync with 2.4.8Junio C Hamano Mon, 3 Aug 2015 17:45:34 +0000 (10:45 -0700)

Sync with 2.4.8

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

Git 2.4.8 v2.4.8Junio C Hamano Mon, 3 Aug 2015 17:40:37 +0000 (10:40 -0700)

Git 2.4.8

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

Merge branch 'js/rebase-i-clean-up-upon-continue-to... Junio C Hamano Mon, 3 Aug 2015 17:41:34 +0000 (10:41 -0700)

Merge branch 'js/rebase-i-clean-up-upon-continue-to-skip' into maint

Abandoning an already applied change in "git rebase -i" with
"--continue" left CHERRY_PICK_HEAD and confused later steps.

* js/rebase-i-clean-up-upon-continue-to-skip:
rebase -i: do not leave a CHERRY_PICK_HEAD file behind
t3404: demonstrate CHERRY_PICK_HEAD bug

Merge branch 'ss/clone-guess-dir-name-simplify' into... Junio C Hamano Mon, 3 Aug 2015 17:41:33 +0000 (10:41 -0700)

Merge branch 'ss/clone-guess-dir-name-simplify' into maint

Code simplification.

* ss/clone-guess-dir-name-simplify:
clone: simplify string handling in guess_dir_name()

Merge branch 'sg/completion-commit-cleanup' into maintJunio C Hamano Mon, 3 Aug 2015 17:41:33 +0000 (10:41 -0700)

Merge branch 'sg/completion-commit-cleanup' into maint

* sg/completion-commit-cleanup:
completion: teach 'scissors' mode to 'git commit --cleanup='

Merge branch 'pt/am-abort-fix' into maintJunio C Hamano Mon, 3 Aug 2015 17:41:32 +0000 (10:41 -0700)

Merge branch 'pt/am-abort-fix' into maint

Various fixes around "git am" that applies a patch to a history
that is not there yet.

* pt/am-abort-fix:
am --abort: keep unrelated commits on unborn branch
am --abort: support aborting to unborn branch
am --abort: revert changes introduced by failed 3way merge
am --skip: support skipping while on unborn branch
am -3: support 3way merge on unborn branch
am --skip: revert changes introduced by failed 3way merge

Merge branch 'mh/reporting-broken-refs-from-for-each... Junio C Hamano Mon, 3 Aug 2015 17:41:31 +0000 (10:41 -0700)

Merge branch 'mh/reporting-broken-refs-from-for-each-ref' into maint

"git for-each-ref" reported "missing object" for 0{40} when it
encounters a broken ref. The lack of object whose name is 0{40} is
not the problem; the ref being broken is.

* mh/reporting-broken-refs-from-for-each-ref:
read_loose_refs(): treat NULL_SHA1 loose references as broken
read_loose_refs(): simplify function logic
for-each-ref: report broken references correctly
t6301: new tests of for-each-ref error handling

Merge branch 'sg/commit-cleanup-scissors' into maintJunio C Hamano Mon, 3 Aug 2015 17:41:30 +0000 (10:41 -0700)

Merge branch 'sg/commit-cleanup-scissors' into maint

"git commit --cleanup=scissors" was not careful enough to protect
against getting fooled by a line that looked like scissors.

* sg/commit-cleanup-scissors:
commit: cope with scissors lines in commit message

for-each-ref: add '--contains' optionKarthik Nayak Tue, 7 Jul 2015 16:06:17 +0000 (21:36 +0530)

for-each-ref: add '--contains' option

Add the '--contains' option provided by 'ref-filter'. The '--contains'
option lists only refs which contain the mentioned commit (HEAD if no
commit is explicitly given).

Add documentation and tests for the same.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: implement '--contains' optionKarthik Nayak Tue, 7 Jul 2015 16:06:16 +0000 (21:36 +0530)

ref-filter: implement '--contains' option

'tag -l' and 'branch -l' have two different ways of finding
out if a certain ref contains a commit. Implement both these
methods in ref-filter and give the caller of ref-filter API
the option to pick which implementation to be used.

'branch -l' uses 'is_descendant_of()' from commit.c which is
left as the default implementation to be used.

'tag -l' uses a more specific algorithm since ffc4b80. This
implementation is used whenever the 'with_commit_tag_algo' bit
is set in 'struct ref_filter'.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-options.h: add macros for '--contains' optionKarthik Nayak Tue, 7 Jul 2015 16:06:15 +0000 (21:36 +0530)

parse-options.h: add macros for '--contains' option

Add a macro for using the '--contains' option in parse-options.h
also include an optional '--with' option macro which performs the
same action as '--contains'.

Make tag.c and branch.c use this new macro.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

parse-option: rename parse_opt_with_commit()Karthik Nayak Tue, 7 Jul 2015 16:06:14 +0000 (21:36 +0530)

parse-option: rename parse_opt_with_commit()

Rename parse_opt_with_commit() to parse_opt_commits() to show
that it can be used to obtain a list of commits and is not
constricted to usage of '--contains' option.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: add '--merged' and '--no-merged' optionsKarthik Nayak Tue, 7 Jul 2015 16:06:13 +0000 (21:36 +0530)

for-each-ref: add '--merged' and '--no-merged' options

Add the '--merged' and '--no-merged' options provided by 'ref-filter'.
The '--merged' option lets the user to only list refs merged into the
named commit. The '--no-merged' option lets the user to only list refs
not merged into the named commit.

Add documentation and tests for the same.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: implement '--merged' and '--no-merged'... Karthik Nayak Tue, 7 Jul 2015 16:06:12 +0000 (21:36 +0530)

ref-filter: implement '--merged' and '--no-merged' options

In 'branch -l' we have '--merged' option which only lists refs (branches)
merged into the named commit and '--no-merged' option which only lists
refs (branches) not merged into the named commit. Implement these two
options in ref-filter.{c,h} so that other commands can benefit from this.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: add parse_opt_merge_filter()Karthik Nayak Tue, 7 Jul 2015 16:06:11 +0000 (21:36 +0530)

ref-filter: add parse_opt_merge_filter()

Add 'parse_opt_merge_filter()' to parse '--merged' and '--no-merged'
options and write macros for the same.

This is copied from 'builtin/branch.c' which will eventually be removed
when we port 'branch.c' to use ref-filter APIs.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: add '--points-at' optionKarthik Nayak Tue, 7 Jul 2015 16:06:10 +0000 (21:36 +0530)

for-each-ref: add '--points-at' option

Add the '--points-at' option provided by 'ref-filter'. The
option lets the user to list only refs which points at the
given object.

Add documentation and tests for the same.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: implement '--points-at' optionKarthik Nayak Tue, 7 Jul 2015 16:06:09 +0000 (21:36 +0530)

ref-filter: implement '--points-at' option

In 'tag -l' we have '--points-at' option which lets users
list only tags of a given object. Implement this option in
'ref-filter.{c,h}' so that other commands can benefit from this.

This is duplicated from tag.c, we will eventually remove that
when we port tag.c to use ref-filter APIs.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tag: libify parse_opt_points_at()Karthik Nayak Tue, 7 Jul 2015 16:06:08 +0000 (21:36 +0530)

tag: libify parse_opt_points_at()

Rename 'parse_opt_points_at()' to 'parse_opt_object_name()' and
move it from 'tag.c' to 'parse-options'. This now acts as a common
parse_opt function which accepts an objectname and stores it into
a sha1_array.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6302: for-each-ref tests for ref-filter APIsKarthik Nayak Thu, 9 Jul 2015 06:03:21 +0000 (11:33 +0530)

t6302: for-each-ref tests for ref-filter APIs

Add a test suite for testing the ref-filter APIs used
by for-each-ref. We just intialize the test suite for now.
More tests will be added in the following patches as more
options are added to for-each-ref.

Based-on-patch-by: Jeff King <peff@peff.net>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: make 'ref_array_item' use a FLEX_ARRAY... Karthik Nayak Sat, 13 Jun 2015 19:37:29 +0000 (01:07 +0530)

ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname

This would remove the need of using a pointer to store refname.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: introduce filter_refs()Karthik Nayak Sat, 13 Jun 2015 19:37:28 +0000 (01:07 +0530)

for-each-ref: introduce filter_refs()

Introduce filter_refs() which will act as an API for filtering
a set of refs. Based on the type of refs the user has requested,
we iterate through those refs and apply filters as per the
given ref_filter structure and finally store the filtered refs
in the ref_array structure.

Currently this will wrap around ref_filter_handler(). Hence,
ref_filter_handler is made file scope static.

As users of this API will no longer send a ref_filter_cbdata
structure directly, we make the elements of ref_filter_cbdata
pointers. We can now use the information given by the users
to obtain our own ref_filter_cbdata structure. Changes are made to
support the change in ref_filter_cbdata structure.

Make 'for-each-ref' use this API.

Helped-by: Junio C Hamano <gitster@pobox.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: move code from 'for-each-ref'Karthik Nayak Sat, 13 Jun 2015 19:37:27 +0000 (01:07 +0530)

ref-filter: move code from 'for-each-ref'

Move most of the code from 'for-each-ref' to 'ref-filter' to make
it publicly available to other commands, this is to unify the code
of 'tag -l', 'branch -l' and 'for-each-ref' so that they can share
their implementations with each other.

Add 'ref-filter' to the Makefile, this completes the movement of code
from 'for-each-ref' to 'ref-filter'.

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: TEAMS: stash inactive zh_CN team membersJiang Xin Mon, 3 Aug 2015 16:33:16 +0000 (00:33 +0800)

l10n: TEAMS: stash inactive zh_CN team members

Add Ray Chen as member of zh_CN l10n team member, and move other
inactive zh_CN l10n team members to the header of zh_CN.po.

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

untracked-cache: support sparse checkoutDavid Turner Fri, 31 Jul 2015 17:35:01 +0000 (13:35 -0400)

untracked-cache: support sparse checkout

Remove a check that would disable the untracked cache for sparse
checkouts. Add tests that ensure that the untracked cache works with
sparse checkouts -- specifically considering the case that a file
foo/bar is checked out, but foo/.gitignore is not.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: replace write_cherry_pick_head with update_refDavid Turner Fri, 31 Jul 2015 06:06:21 +0000 (02:06 -0400)

sequencer: replace write_cherry_pick_head with update_ref

Now update_ref (via write_pseudoref) does almost exactly what
write_cherry_pick_head did, so we can remove write_cherry_pick_head
and just use update_ref.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bisect: use update_refDavid Turner Fri, 31 Jul 2015 06:06:20 +0000 (02:06 -0400)

bisect: use update_ref

Instead of manually writing a pseudoref (in one case) and shelling out
to git update-ref (in another), use the update_ref function. This
is much simpler.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pseudorefs: create and use pseudoref update and delete... David Turner Fri, 31 Jul 2015 06:06:19 +0000 (02:06 -0400)

pseudorefs: create and use pseudoref update and delete functions

Pseudorefs should not be updated through the ref transaction
API, because alternate ref backends still need to store pseudorefs
in GIT_DIR (instead of wherever they store refs). Instead,
change update_ref and delete_ref to call pseudoref-specific
functions.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: add ref_type functionDavid Turner Fri, 31 Jul 2015 06:06:18 +0000 (02:06 -0400)

refs: add ref_type function

Add a function ref_type, which categorizes refs as per-worktree,
pseudoref, or normal ref.

Later, we will use this in refs.c to treat pseudorefs specially.
Alternate ref backends may use it to treat both pseudorefs and
per-worktree refs differently.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: introduce pseudoref and per-worktree ref conceptsDavid Turner Fri, 31 Jul 2015 06:06:17 +0000 (02:06 -0400)

refs: introduce pseudoref and per-worktree ref concepts

Add glossary entries for both concepts.

Pseudorefs and per-worktree refs do not yet have special handling,
because the files refs backend already handles them correctly. Later,
we will make the LMDB backend call out to the files backend to handle
per-worktree refs.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add: remove dead codeStefan Beller Fri, 31 Jul 2015 00:19:16 +0000 (17:19 -0700)

add: remove dead code

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

pull.sh: quote $upload_pack when passing it to git... Matthieu Moy Thu, 30 Jul 2015 20:40:03 +0000 (22:40 +0200)

pull.sh: quote $upload_pack when passing it to git-fetch

The previous code broke for example

git pull --upload-pack 'echo --foo'

Reported-by: Joey Hess <id@joeyh.name>
Fix-suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: zh_CN: Update Translation of "tag"Ray Chen Tue, 28 Jul 2015 04:52:28 +0000 (12:52 +0800)

l10n: zh_CN: Update Translation of "tag"

- "tag" translated as "标签".
- "annotated tag" translated as "附注标签".
- "mergetag" translated as "合并标签".
- "tag name" translated as "标签名称".
- Relevant adjustments.

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

parse-options: align curly braces for all optionsStefan Beller Wed, 29 Jul 2015 20:18:37 +0000 (13:18 -0700)

parse-options: align curly braces for all options

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

get_remote_group(): use skip_prefix()Michael Haggerty Tue, 28 Jul 2015 21:08:21 +0000 (23:08 +0200)

get_remote_group(): use skip_prefix()

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_remote_group(): eliminate superfluous call to strcspn()Michael Haggerty Tue, 28 Jul 2015 21:08:20 +0000 (23:08 +0200)

get_remote_group(): eliminate superfluous call to strcspn()

There is no need to call it if value is the empty string. This also
eliminates code duplication.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_remote_group(): rename local variable "space" to... Michael Haggerty Tue, 28 Jul 2015 21:08:19 +0000 (23:08 +0200)

get_remote_group(): rename local variable "space" to "wordlen"

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_remote_group(): handle remotes with single-characte... Michael Haggerty Tue, 28 Jul 2015 21:08:18 +0000 (23:08 +0200)

get_remote_group(): handle remotes with single-character names

The code for splitting a whitespace-separated list of values in
"remotes.<name>" had an off-by-one error that caused it to skip over
remotes whose names consist of a single character.

Also remove unnecessary braces.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

unpack-trees: populate cache-tree on successful mergeBrian Degenhardt Tue, 28 Jul 2015 19:30:40 +0000 (15:30 -0400)

unpack-trees: populate cache-tree on successful merge

When we unpack trees into an existing index, we discard the old
index and replace it with the new, merged index. Ensure that this
index has its cache-tree populated. This will make subsequent git
status and commit commands faster.

Signed-off-by: Brian Degenhardt <bmd@bmdhacks.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/config: mention "now" and "never" for... Eric Sunshine Tue, 28 Jul 2015 20:06:10 +0000 (16:06 -0400)

Documentation/config: mention "now" and "never" for 'expire' settings

In addition to approxidate-style values ("2.months.ago", "yesterday"),
consumers of 'gc.*expire*' configuration variables also accept and
respect 'now' ("do it immediately") and 'never' ("suppress entirely").

Suggested-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-tools: retire manually-maintained... Eric Sunshine Tue, 28 Jul 2015 20:06:15 +0000 (16:06 -0400)

Documentation/git-tools: retire manually-maintained list

When Git was young, people looking for third-party Git-related tools
came to the Git project itself to find them, so it made sense to
maintain a list of tools here. These days, however, search engines fill
that role much more efficiently, so retire the manually-maintained
list.

The list of front-ends and tools on the Git wiki rates perhaps a distant
second to search engines, and may still have value, so retain a
reference to it.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-tools: drop references to defunct... Eric Sunshine Tue, 28 Jul 2015 20:06:14 +0000 (16:06 -0400)

Documentation/git-tools: drop references to defunct tools

Cogito -- unmaintained since late 2006[1]
pg -- URL dead; web searches reveal no information
quilt2git -- URL dead; web searches reveal no information
(h)gct -- URL dead; no repository activity since 2007[2]

[1]: http://git.or.cz/cogito/
[2]: http://repo.or.cz/w/hgct.git

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-tools: fix item text formattingEric Sunshine Tue, 28 Jul 2015 20:06:13 +0000 (16:06 -0400)

Documentation/git-tools: fix item text formatting

Descriptive text for each tool item is incorrectly formatted using a
fixed width font. Fix formatting to use a variable width font by
unindenting the item text.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-tools: improve discoverability of... Eric Sunshine Tue, 28 Jul 2015 20:06:12 +0000 (16:06 -0400)

Documentation/git-tools: improve discoverability of Git wiki

These days, the best way to find Git-related tools is via a search
engine. The Git wiki may be a distant second, and git-tools.txt falls in
last place. Therefore, promote the Git wiki reference to the top of
git-tools.txt so the reader will encounter it first, rather than hiding
it away at the very bottom.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

docs/config.txt: reorder hideRefs configJeff King Tue, 28 Jul 2015 19:59:11 +0000 (15:59 -0400)

docs/config.txt: reorder hideRefs config

The descriptions for receive.hideRefs and
uploadpack.hideRefs are largely the same, and then
transfer.hideRefs refers to both of them. Instead, let's
make transfer.hideRefs the "master" source, and refer to it
from the other sites (with appropriate program-specific
annotations).

This avoids duplication, and will make it easier to document
changes to the config option without having to copy and
paste the description in two places.

While we're at it, this fixes some bogus subject/verb
agreement in the original description.

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

tests: remove some direct access to .git/logsDavid Turner Mon, 27 Jul 2015 22:57:08 +0000 (18:57 -0400)

tests: remove some direct access to .git/logs

Alternate refs backends might store reflogs somewhere other than
.git/logs. Change most test code that directly accesses .git/logs to
instead use git reflog commands.

There are still a few tests which need direct access to reflogs: to
check reflog permissions, to manually create reflogs from scratch, to
save/restore reflogs, to check the format of raw reflog data, and to
remove not just reflog contents, but the reflogs themselves. All cases
which don't need direct access have been modified.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t7509: remove unnecessary manipulation of reflogDavid Turner Mon, 27 Jul 2015 22:57:07 +0000 (18:57 -0400)

t/t7509: remove unnecessary manipulation of reflog

Remove unnecessary reflog manipulation. The test does not rely in any
way on this reflog manipulation, and the case that the test
exercises is unrelated to reflogs.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

typofix for index-format.txtThomas Ackermann Tue, 28 Jul 2015 17:45:14 +0000 (19:45 +0200)

typofix for index-format.txt

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

l10n: zh_CN: Unify Translation of "packfile"Ray Chen Tue, 28 Jul 2015 05:26:41 +0000 (13:26 +0800)

l10n: zh_CN: Unify Translation of "packfile"

Signed-off-by: Ray Chen <oldsharp@gmail.com>

Git 2.5 v2.5.0Junio C Hamano Mon, 27 Jul 2015 19:29:47 +0000 (12:29 -0700)

Git 2.5

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

Sync with 2.4.7Junio C Hamano Mon, 27 Jul 2015 19:26:36 +0000 (12:26 -0700)

Sync with 2.4.7

Git 2.4.7 v2.4.7Junio C Hamano Mon, 27 Jul 2015 19:25:42 +0000 (12:25 -0700)

Git 2.4.7

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

Merge branch 'jk/pretty-encoding-doc' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:48 +0000 (12:21 -0700)

Merge branch 'jk/pretty-encoding-doc' into maint

Doc update.

* jk/pretty-encoding-doc:
docs: clarify that --encoding can produce invalid sequences

Merge branch 'tb/checkout-doc' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:47 +0000 (12:21 -0700)

Merge branch 'tb/checkout-doc' into maint

Doc update.

* tb/checkout-doc:
git-checkout.txt: document "git checkout <pathspec>" better

Merge branch 'ls/hint-rev-list-count' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:47 +0000 (12:21 -0700)

Merge branch 'ls/hint-rev-list-count' into maint

* ls/hint-rev-list-count:
rev-list: add --count to usage guide

Merge branch 'mm/branch-doc-updates' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:46 +0000 (12:21 -0700)

Merge branch 'mm/branch-doc-updates' into maint

* mm/branch-doc-updates:
Documentation/branch: document -M and -D in terms of --force
Documentation/branch: document -d --force and -m --force

Merge branch 'jc/fsck-retire-require-eoh' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:45 +0000 (12:21 -0700)

Merge branch 'jc/fsck-retire-require-eoh' into maint

A fix to a minor regression to "git fsck" in v2.2 era that started
complaining about a body-less tag object when it lacks a separator
empty line after its header to separate it with a non-existent body.

* jc/fsck-retire-require-eoh:
fsck: it is OK for a tag and a commit to lack the body

Merge branch 'et/http-proxyauth' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:44 +0000 (12:21 -0700)

Merge branch 'et/http-proxyauth' into maint

We used to ask libCURL to use the most secure authentication method
available when talking to an HTTP proxy only when we were told to
talk to one via configuration variables. We now ask libCURL to
always use the most secure authentication method, because the user
can tell libCURL to use an HTTP proxy via an environment variable
without using configuration variables.

* et/http-proxyauth:
http: always use any proxy auth method available

Merge branch 'jc/unexport-git-pager-in-use-in-pager... Junio C Hamano Mon, 27 Jul 2015 19:21:43 +0000 (12:21 -0700)

Merge branch 'jc/unexport-git-pager-in-use-in-pager' into maint

When you say "!<ENTER>" while running say "git log", you'd confuse
yourself in the resulting shell, that may look as if you took
control back to the original shell you spawned "git log" from but
that isn't what is happening. To that new shell, we leaked
GIT_PAGER_IN_USE environment variable that was meant as a local
communication between the original "Git" and subprocesses that was
spawned by it after we launched the pager, which caused many
"interesting" things to happen, e.g. "git diff | cat" still paints
its output in color by default.

Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.

* jc/unexport-git-pager-in-use-in-pager:
pager: do not leak "GIT_PAGER_IN_USE" to the pager

Merge branch 'mh/strbuf-read-file-returns-ssize-t'... Junio C Hamano Mon, 27 Jul 2015 19:21:43 +0000 (12:21 -0700)

Merge branch 'mh/strbuf-read-file-returns-ssize-t' into maint

Avoid possible ssize_t to int truncation.

* mh/strbuf-read-file-returns-ssize-t:
strbuf: strbuf_read_file() should return ssize_t

Merge branch 'kb/config-unmap-before-renaming' into... Junio C Hamano Mon, 27 Jul 2015 19:21:42 +0000 (12:21 -0700)

Merge branch 'kb/config-unmap-before-renaming' into maint

"git config" failed to update the configuration file when the
underlying filesystem is incapable of renaming a file that is still
open.

* kb/config-unmap-before-renaming:
config.c: fix writing config files on Windows network shares

Merge branch 'jk/rev-list-no-bitmap-while-pruning'... Junio C Hamano Mon, 27 Jul 2015 19:21:42 +0000 (12:21 -0700)

Merge branch 'jk/rev-list-no-bitmap-while-pruning' into maint

A minor bugfix when pack bitmap is used with "rev-list --count".

* jk/rev-list-no-bitmap-while-pruning:
rev-list: disable --use-bitmap-index when pruning commits

Merge branch 'rh/test-color-avoid-terminfo-in-original... Junio C Hamano Mon, 27 Jul 2015 19:21:41 +0000 (12:21 -0700)

Merge branch 'rh/test-color-avoid-terminfo-in-original-home' into maint

An ancient test framework enhancement to allow color was not
entirely correct; this makes it work even when tput needs to read
from the ~/.terminfo under the user's real HOME directory.

* rh/test-color-avoid-terminfo-in-original-home:
test-lib.sh: fix color support when tput needs ~/.terminfo
Revert "test-lib.sh: do tests for color support after changing HOME"

Merge branch 'jk/fix-refresh-utime' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:40 +0000 (12:21 -0700)

Merge branch 'jk/fix-refresh-utime' into maint

Fix a small bug in our use of umask() return value.

* jk/fix-refresh-utime:
check_and_freshen_file: fix reversed success-check

Merge branch 'cb/rebase-am-exit-code' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:39 +0000 (12:21 -0700)

Merge branch 'cb/rebase-am-exit-code' into maint

"git rebase" did not exit with failure when format-patch it invoked
failed for whatever reason.

* cb/rebase-am-exit-code:
rebase: return non-zero error code if format-patch fails

Merge branch 'jk/index-pack-reduce-recheck' into maintJunio C Hamano Mon, 27 Jul 2015 19:21:38 +0000 (12:21 -0700)

Merge branch 'jk/index-pack-reduce-recheck' into maint

Disable "have we lost a race with competing repack?" check while
receiving a huge object transfer that runs index-pack.

* jk/index-pack-reduce-recheck:
index-pack: avoid excessive re-reading of pack directory

refs: loosen restriction on wildcard "*" refspecsJacob Keller Wed, 22 Jul 2015 21:05:33 +0000 (14:05 -0700)

refs: loosen restriction on wildcard "*" refspecs

Loosen restrictions on refspecs by allowing patterns that have a "*"
within a component instead of only as the whole component.

Remove the logic to accept a single "*" as a whole component from
check_refname_format(), and implement an extended form of that logic
in check_refname_component(). Pass the pointer to the flags argument
to the latter, as it has to clear REFNAME_REFSPEC_PATTERN bit when
it sees "*".

Teach check_refname_component() function to allow an asterisk "*"
only when REFNAME_REFSPEC_PATTERN is set in the flags, and drop the
bit after seeing a "*", to ensure that one side of a refspec
contains at most one asterisk.

This will allow us to accept refspecs such as `for/bar*:foo/baz*`.
Any refspec which functioned before shall continue functioning with
the new logic.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: cleanup comments regarding check_refname_component()Jacob Keller Wed, 22 Jul 2015 21:05:32 +0000 (14:05 -0700)

refs: cleanup comments regarding check_refname_component()

Correctly specify all characters which are rejected under the '4: a
bad character' disposition, which did not list all characters that
are treated as such.

Cleanup comment style for rejected refs by inserting a ", or" at the
end of each statement.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: zh_CN: Update Translation: "tag object"Ray Chen Mon, 27 Jul 2015 06:55:00 +0000 (14:55 +0800)

l10n: zh_CN: Update Translation: "tag object"

* "tag object" translated as "标签对象".
* "objects to be packed" translated as "待打包对象".
* Add "那些", for better reading experience.

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

Documentation/git: drop outdated Cogito referenceEric Sunshine Fri, 24 Jul 2015 04:00:54 +0000 (00:00 -0400)

Documentation/git: drop outdated Cogito reference

Cogito hasn't been maintained since late 2006, so drop the reference
to it. The warning that SCMS front-ends might override listed
environment variables, however, may still be valuable, so keep it but
generalize the wording.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rerere: un-nest merge() furtherJunio C Hamano Mon, 6 Jul 2015 22:32:53 +0000 (15:32 -0700)

rerere: un-nest merge() further

By consistently using "upon failure, set 'ret' and jump to out"
pattern, flatten the function further.

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

rerere: use "struct rerere_id" instead of "char *"... Junio C Hamano Sun, 5 Jul 2015 00:38:34 +0000 (17:38 -0700)

rerere: use "struct rerere_id" instead of "char *" for conflict ID

This gives a thin abstraction between the conflict ID that is a hash
value obtained by inspecting the conflicts and the name of the
directory under $GIT_DIR/rr-cache/, in which the previous resolution
is recorded to be replayed. The plan is to make sure that the
presence of the directory does not imply the presense of a previous
resolution and vice-versa, and later allow us to have more than one
pair of <preimage, postimage> for a given conflict ID.

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

rerere: call conflict-ids IDsJunio C Hamano Mon, 6 Jul 2015 21:45:55 +0000 (14:45 -0700)

rerere: call conflict-ids IDs

Most places we call conflict IDs "name" and some others we call them
"hex"; update all of them to "id".

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

rerere: further clarify do_rerere_one_path()Junio C Hamano Mon, 6 Jul 2015 21:18:09 +0000 (14:18 -0700)

rerere: further clarify do_rerere_one_path()

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

rerere: further de-dent do_plain_rerere()Junio C Hamano Sun, 5 Jul 2015 00:17:38 +0000 (17:17 -0700)

rerere: further de-dent do_plain_rerere()

It's just easier to follow this way.

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

rerere: refactor "replay" part of do_plain_rerere()Junio C Hamano Wed, 1 Jul 2015 02:36:24 +0000 (19:36 -0700)

rerere: refactor "replay" part of do_plain_rerere()

Extract the body of a loop that attempts to replay recorded
resolution for each conflicted path into a helper function, not
because I want to call it from multiple places later, but because
the logic has become too deeply nested and hard to read.

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

rerere: explain the remainderJunio C Hamano Wed, 1 Jul 2015 05:43:37 +0000 (22:43 -0700)

rerere: explain the remainder

Explain the internals of rerere as in-code comments, while
sprinkling "NEEDSWORK" comment to highlight iffy bits and
questionable assumptions.

This covers the codepath that implements "rerere gc" and "rerere
clear".

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

rerere: explain "rerere forget" codepathJunio C Hamano Wed, 1 Jul 2015 05:42:34 +0000 (22:42 -0700)

rerere: explain "rerere forget" codepath

Explain the internals of rerere as in-code comments, while
sprinkling "NEEDSWORK" comment to highlight iffy bits and
questionable assumptions.

This covers the codepath that implements "rerere forget".

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

rerere: explain the primary codepathJunio C Hamano Wed, 1 Jul 2015 05:40:35 +0000 (22:40 -0700)

rerere: explain the primary codepath

Explain the internals of rerere as in-code comments, while
sprinkling "NEEDSWORK" comment to highlight iffy bits and
questionable assumptions.

This one covers the codepath reached from rerere(), the primary
interface to the subsystem.

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

rerere: explain MERGE_RR management helpersJunio C Hamano Wed, 1 Jul 2015 05:36:35 +0000 (22:36 -0700)

rerere: explain MERGE_RR management helpers

Explain the internals of rerere as in-code comments, while
sprinkling "NEEDSWORK" comment to highlight iffy bits and
questionable assumptions.

This one covers the "$GIT_DIR/MERGE_RR" file and in-core merge_rr
that are used to keep track of the status of "rerere" session in
progress.

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

rerere: fix benign off-by-one non-bug and clarify codeJunio C Hamano Fri, 24 Jul 2015 23:01:48 +0000 (16:01 -0700)

rerere: fix benign off-by-one non-bug and clarify code

rerere_io_putconflict() wants to use a limited fixed-sized buf[] on
stack repeatedly to formulate a longer string, but its implementation
is doubly confusing:

* When it knows that the whole thing fits in buf[], it wants to
fill early part of buf[] with conflict marker characters,
followed by a LF and a NUL. It miscounts the size of the buffer
by 1 and does not use the last byte of buf[].

* When it needs to show only the early part of a long conflict
marker string (because the whole thing does not fit in buf[]), it
adjusts the number of bytes shown in the current round in a
strange-looking way. It makes sure that this round does not emit
all bytes and leaves at least one byte to the next round, so that
"it all fits" case will pick up the rest and show the terminating
LF. While this is correct, one needs to stop and think for a
while to realize why it is correct without an explanation.

Fix the benign off-by-one, and add comments to explain the
strange-looking size adjustment.

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

rerere: explain the rerere I/O abstractionJunio C Hamano Wed, 1 Jul 2015 05:33:19 +0000 (22:33 -0700)

rerere: explain the rerere I/O abstraction

Explain the internals of rerere as in-code comments.

This one covers our thin I/O abstraction to read from either
a file or a memory while optionally writing out to a file.

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

rerere: do not leak mmfile[] for a path with multiple... Junio C Hamano Fri, 24 Jul 2015 22:10:52 +0000 (15:10 -0700)

rerere: do not leak mmfile[] for a path with multiple stage #1 entries

A conflicted index can have multiple stage #1 entries when dealing
with a criss-cross merge and using the "resolve" merge strategy.

Plug the leak by reading only the first one of the same stage
entries.

Strictly speaking, this fix does change the semantics, in that we
used to use the last stage #1 entry as the common ancestor when
doing the plain-vanilla three-way merge, but with the leak fix, we
will use the first stage #1 entry. But it is not a grave backward
compatibility breakage. Either way, we are arbitrarily picking one
of multiple stage #1 entries and using it, ignoring others, and
there is no meaning in the ordering of these stage #1 entries.

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

rerere: stop looping unnecessarilyJunio C Hamano Tue, 30 Jun 2015 23:10:10 +0000 (16:10 -0700)

rerere: stop looping unnecessarily

handle_cache() loops 3 times starting from an index entry that is
unmerged, while ignoring an entry for a path that is different from
what we are looking for.

As the index is sorted, once we see a different path, we know we saw
all stages for the path we are interested in. Just loop while we
see the same path and then break, instead of continuing for 3 times.

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

rerere: drop want_sp parameter from is_cmarker()Junio C Hamano Mon, 29 Jun 2015 22:05:24 +0000 (15:05 -0700)

rerere: drop want_sp parameter from is_cmarker()

As the nature of the conflict marker line determines if there should
be a SP and label after it, the caller shouldn't have to pass the
parameter redundantly.

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

rerere: report autoupdated paths only after actually... Junio C Hamano Mon, 29 Jun 2015 04:13:24 +0000 (21:13 -0700)

rerere: report autoupdated paths only after actually updating them

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

rerere: write out each record of MERGE_RR in one goJunio C Hamano Sun, 28 Jun 2015 23:28:00 +0000 (16:28 -0700)

rerere: write out each record of MERGE_RR in one go

Instead of writing the hash for a conflict, a HT, and the path
with three separate write_in_full() calls, format them into a
single record into a strbuf and write it out in one go.

As a more recent "rerere remaining" codepath abuses the .util field
of the merge_rr data to store a sentinel token, make sure that
codepath does not call into this function (of course, "remaining" is
a read-only operation and currently does not call it).

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

rerere: lift PATH_MAX limitationJunio C Hamano Sun, 28 Jun 2015 22:51:59 +0000 (15:51 -0700)

rerere: lift PATH_MAX limitation

The MERGE_RR file records a collection of NUL-terminated entries,
each of which consists of

- a hash that identifies the conflict
- a HT
- the pathname

We used to read this piece-by-piece, and worse yet, read the
pathname part a byte at a time into a fixed buffer of size PATH_MAX.

Instead, read a whole entry using strbuf_getwholeline() and parse
out the fields. This way, we issue fewer read(2) calls and more
importantly we do not have to limit the pathname to PATH_MAX.

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

rerere: plug conflict ID leaksJunio C Hamano Tue, 30 Jun 2015 20:03:36 +0000 (13:03 -0700)

rerere: plug conflict ID leaks

The merge_rr string list stores the conflict ID (a hexadecimal
string that is used to index into $GIT_DIR/rr-cache) in the .util
field of its elements, and when do_plain_rerere() resolves a
conflict, the field is cleared. Also, when rerere_forget()
recomputes the conflict ID to updates the preimage file, the
conflict ID for the path is updated.

We forgot to free the existing conflict ID when we did these two
operations.

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

rerere: handle conflicts with multiple stage #1 entriesJunio C Hamano Fri, 24 Jul 2015 22:08:03 +0000 (15:08 -0700)

rerere: handle conflicts with multiple stage #1 entries

A conflicted index can have multiple stage #1 entries when dealing
with a criss-cross merge and using the "resolve" merge strategy.

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

RelNotes: am.threeWay does not exist (yet)Junio C Hamano Fri, 24 Jul 2015 21:31:23 +0000 (14:31 -0700)

RelNotes: am.threeWay does not exist (yet)

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

Revert "git-am: add am.threeWay config variable"Junio C Hamano Fri, 24 Jul 2015 17:55:24 +0000 (10:55 -0700)

Revert "git-am: add am.threeWay config variable"

This reverts commit d96a275b91bae1800cd43be0651e886e7e042a17.

It used to be possible to apply a patch series with "git am mbox"
and then only after seeing a failure, switch to three-way mode via
"git am -3" (no other options or arguments). The commit being
reverted broke this workflow.

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

Documentation/git-worktree: fix broken 'linkgit' invocationEric Sunshine Fri, 24 Jul 2015 04:00:52 +0000 (00:00 -0400)

Documentation/git-worktree: fix broken 'linkgit' invocation

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/subtree: ignore log.date configurationDavid Aguilar Wed, 22 Jul 2015 00:01:02 +0000 (17:01 -0700)

contrib/subtree: ignore log.date configuration

git-subtree's log format string uses "%ad" and "%cd", which
respect the user's configured log.date value.

This is problematic for git-subtree because it needs to use real
dates so that copied commits come through unchanged.

Add a test and tweak the format strings to use %aD and %cD
so that the default date format is used instead.

Reported-by: Bryan Jacobs <b@q3q.us>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>