gitweb.git
Merge branch 'nd/object-allocation-comments'Junio C Hamano Wed, 14 Mar 2018 19:01:06 +0000 (12:01 -0700)

Merge branch 'nd/object-allocation-comments'

Code doc update.

* nd/object-allocation-comments:
object.h: realign object flag allocation comment
object.h: update flag allocation comment

Merge branch 'jk/smart-http-protocol-doc-fix'Junio C Hamano Wed, 14 Mar 2018 19:01:05 +0000 (12:01 -0700)

Merge branch 'jk/smart-http-protocol-doc-fix'

A doc update.

* jk/smart-http-protocol-doc-fix:
smart-http: document flush after "# service" line

Merge branch 'jk/add-i-diff-filter'Junio C Hamano Wed, 14 Mar 2018 19:01:05 +0000 (12:01 -0700)

Merge branch 'jk/add-i-diff-filter'

The "interactive.diffFilter" used by "git add -i" must retain
one-to-one correspondence between its input and output, but it was
not enforced and caused end-user confusion. We now at least make
sure the filtered result has the same number of lines as its input
to detect a broken filter.

* jk/add-i-diff-filter:
add--interactive: detect bogus diffFilter output
t3701: add a test for interactive.diffFilter

Merge branch 'nd/worktree-move'Junio C Hamano Wed, 14 Mar 2018 19:01:05 +0000 (12:01 -0700)

Merge branch 'nd/worktree-move'

"git worktree" learned move and remove subcommands.

* nd/worktree-move:
t2028: fix minor error and issues in newly-added "worktree move" tests
worktree remove: allow it when $GIT_WORK_TREE is already gone
worktree remove: new command
worktree move: refuse to move worktrees with submodules
worktree move: accept destination as directory
worktree move: new command
worktree.c: add update_worktree_location()
worktree.c: add validate_worktree()

Merge branch 'pw/add-p-recount'Junio C Hamano Wed, 14 Mar 2018 19:01:04 +0000 (12:01 -0700)

Merge branch 'pw/add-p-recount'

"git add -p" has been lazy in coalescing split patches before
passing the result to underlying "git apply", leading to corner
case bugs; the logic to prepare the patch to be applied after hunk
selections has been tightened.

* pw/add-p-recount:
add -p: don't rely on apply's '--recount' option
add -p: fix counting when splitting and coalescing
add -p: calculate offset delta for edited patches
add -p: adjust offsets of subsequent hunks when one is skipped
t3701: add failing test for pathological context lines
t3701: don't hard code sha1 hash values
t3701: use test_write_lines and write_script
t3701: indent here documents
add -i: add function to format hunk header

Merge branch 'ab/pre-auto-gc-battery'Junio C Hamano Wed, 14 Mar 2018 19:01:04 +0000 (12:01 -0700)

Merge branch 'ab/pre-auto-gc-battery'

A sample auto-gc hook (in contrib/) to skip auto-gc while on
battery has been updated to almost always allow running auto-gc
unless on_ac_power command is absolutely sure that we are on
battery power (earlier, it skipped unless the command is sure that
we are on ac power).

* ab/pre-auto-gc-battery:
hooks/pre-auto-gc-battery: allow gc to run on non-laptops

Merge branch 'sg/test-x'Junio C Hamano Wed, 14 Mar 2018 19:01:03 +0000 (12:01 -0700)

Merge branch 'sg/test-x'

Running test scripts under -x option of the shell is often not a
useful way to debug them, because the error messages from the
commands tests try to capture and inspect are contaminated by the
tracing output by the shell. An earlier work done to make it more
pleasant to run tests under -x with recent versions of bash is
extended to cover posix shells that do not support BASH_XTRACEFD.

* sg/test-x:
travis-ci: run tests with '-x' tracing
t/README: add a note about don't saving stderr of compound commands
t1510-repo-setup: mark as untraceable with '-x'
t9903-bash-prompt: don't check the stderr of __git_ps1()
t5570-git-daemon: don't check the stderr of a subshell
t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file
t5500-fetch-pack: don't check the stderr of a subshell
t3030-merge-recursive: don't check the stderr of a subshell
t1507-rev-parse-upstream: don't check the stderr of a shell function
t: add means to disable '-x' tracing for individual test scripts
t: prevent '-x' tracing from interfering with test helpers' stderr

Merge branch 'rj/test-i18ngrep'Junio C Hamano Wed, 14 Mar 2018 19:01:03 +0000 (12:01 -0700)

Merge branch 'rj/test-i18ngrep'

Test updates.

* rj/test-i18ngrep:
t5536: simplify checking of messages output to stderr
t4151: consolidate multiple calls to test_i18ngrep

Merge branch 'ma/roll-back-lockfiles'Junio C Hamano Wed, 14 Mar 2018 19:01:03 +0000 (12:01 -0700)

Merge branch 'ma/roll-back-lockfiles'

Some codepaths used to take a lockfile and did not roll it back;
they are automatically rolled back at program exit, so there is no
real "breakage", but it still is a good practice to roll back when
you are done with a lockfile.

* ma/roll-back-lockfiles:
sequencer: do not roll back lockfile unnecessarily
merge: always roll back lock in `checkout_fast_forward()`
merge-recursive: always roll back lock in `merge_recursive_generic()`
sequencer: always roll back lock in `do_recursive_merge()`
sequencer: make lockfiles non-static

Merge branch 'nd/diff-stat-with-summary'Junio C Hamano Wed, 14 Mar 2018 19:01:02 +0000 (12:01 -0700)

Merge branch 'nd/diff-stat-with-summary'

"git diff" and friends learned "--compact-summary" that shows the
information usually given with the "--summary" option on the same
line as the diffstat output of the "--stat" option (which saves
vertical space and keeps info on a single path at the same place).

* nd/diff-stat-with-summary:
diff: add --compact-summary
diff.c: refactor pprint_rename() to use strbuf

fetch-pack.c: use oidset to check existence of loose... Takuto Ikuta Wed, 14 Mar 2018 06:32:42 +0000 (15:32 +0900)

fetch-pack.c: use oidset to check existence of loose object

When fetching from a repository with large number of refs, because to
check existence of each refs in local repository to packed and loose
objects, 'git fetch' ends up doing a lot of lstat(2) to non-existing
loose form, which makes it slow.

Instead of making as many lstat(2) calls as the refs the remote side
advertised to see if these objects exist in the loose form, first
enumerate all the existing loose objects in hashmap beforehand and use
it to check existence of them if the number of refs is larger than the
number of loose objects.

With this patch, the number of lstat(2) calls in `git fetch` is reduced
from 411412 to 13794 for chromium repository, it has more than 480000
remote refs.

I took time stat of `git fetch` when fetch-pack happens for chromium
repository 3 times on linux with SSD.
* with this patch
8.105s
8.309s
7.640s
avg: 8.018s

* master
12.287s
11.175s
12.227s
avg: 11.896s

On my MacBook Air which has slower lstat(2).
* with this patch
14.501s

* master
1m16.027s

`git fetch` on slow disk will be improved largely.

Signed-off-by: Takuto Ikuta <tikuta@chromium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

convert: convert to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:56 +0000 (02:27 +0000)

convert: convert to struct object_id

Convert convert.c to struct object_id. Add a use of the_hash_algo to
replace hard-coded constants and change a strbuf_add to a strbuf_addstr
to avoid another hard-coded constant.

Note that a strict conversion using the hexsz constant would cause
problems in the future if the internal and user-visible hash algorithms
differed, as anticipated by the hash function transition plan.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: introduce a constant for max header lengthbrian m. carlson Mon, 12 Mar 2018 02:27:55 +0000 (02:27 +0000)

sha1_file: introduce a constant for max header length

There were several instances of 32 sprinkled throughout this file, all
of which were used for allocating a buffer to store the header of an
object. Introduce a constant, MAX_HEADER_LEN, for this purpose.

Note that this constant is slightly larger than required; the longest
possible header is 28 (7 for "commit", 1 for a space, 20 for a 63-bit
length in decimal, and 1 for the NUL). However, the overallocation
should not cause any problems, so leave it as it is.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Convert lookup_replace_object to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:54 +0000 (02:27 +0000)

Convert lookup_replace_object to struct object_id

Convert both the argument and the return value to be pointers to struct
object_id. Update the callers and their internals to deal with the new
type. Remove several temporaries which are no longer needed.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert read_sha1_file to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:53 +0000 (02:27 +0000)

sha1_file: convert read_sha1_file to struct object_id

Convert read_sha1_file to take a pointer to struct object_id and rename
it read_object_file. Do the same for read_sha1_file_extended.

Convert one use in grep.c to use the new function without any other code
change, since the pointer being passed is a void pointer that is already
initialized with a pointer to struct object_id. Update the declaration
and definitions of the modified functions, and apply the following
semantic patch to convert the remaining callers:

@@
expression E1, E2, E3;
@@
- read_sha1_file(E1.hash, E2, E3)
+ read_object_file(&E1, E2, E3)

@@
expression E1, E2, E3;
@@
- read_sha1_file(E1->hash, E2, E3)
+ read_object_file(E1, E2, E3)

@@
expression E1, E2, E3, E4;
@@
- read_sha1_file_extended(E1.hash, E2, E3, E4)
+ read_object_file_extended(&E1, E2, E3, E4)

@@
expression E1, E2, E3, E4;
@@
- read_sha1_file_extended(E1->hash, E2, E3, E4)
+ read_object_file_extended(E1, E2, E3, E4)

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert read_object_with_reference to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:52 +0000 (02:27 +0000)

sha1_file: convert read_object_with_reference to object_id

Convert read_object_with_reference to take pointers to struct object_id.
Update the internals of the function accordingly.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree-walk: convert tree entry functions to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:51 +0000 (02:27 +0000)

tree-walk: convert tree entry functions to object_id

Convert get_tree_entry and find_tree_entry to take pointers to struct
object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

streaming: convert istream internals to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:50 +0000 (02:27 +0000)

streaming: convert istream internals to struct object_id

Convert the various open_istream variants to take a pointer to struct
object_id. Introduce a temporary, which will be removed later, to work
around the fact that lookup_replace_object still returns a pointer to
unsigned char.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree-walk: convert get_tree_entry_follow_symlinks inter... brian m. carlson Mon, 12 Mar 2018 02:27:49 +0000 (02:27 +0000)

tree-walk: convert get_tree_entry_follow_symlinks internals to object_id

Convert the internals of this function to use struct object_id. This is
one of the last remaining callers of read_sha1_file_extended that has
not been converted yet.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/notes: convert static functions to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:48 +0000 (02:27 +0000)

builtin/notes: convert static functions to object_id

Convert the remaining static functions to take pointers to struct
object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/fmt-merge-msg: convert remaining code to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:47 +0000 (02:27 +0000)

builtin/fmt-merge-msg: convert remaining code to object_id

We were using the util pointer, which is a pointer to void, as an
unsigned char pointer. The pointer actually points to a struct
origin_data, which has a struct object_id as its first member, which in
turn has an unsigned char array as its first member, so this was valid.
Since we want to convert this to struct object_id, simply change the
pointer we're using.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert sha1_object_info* to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:46 +0000 (02:27 +0000)

sha1_file: convert sha1_object_info* to object_id

Convert sha1_object_info and sha1_object_info_extended to take pointers
to struct object_id and rename them to use "oid" instead of "sha1" in
their names. Update the declaration and definition and apply the
following semantic patch, plus the standard object_id transforms:

@@
expression E1, E2;
@@
- sha1_object_info(E1.hash, E2)
+ oid_object_info(&E1, E2)

@@
expression E1, E2;
@@
- sha1_object_info(E1->hash, E2)
+ oid_object_info(E1, E2)

@@
expression E1, E2, E3;
@@
- sha1_object_info_extended(E1.hash, E2, E3)
+ oid_object_info_extended(&E1, E2, E3)

@@
expression E1, E2, E3;
@@
- sha1_object_info_extended(E1->hash, E2, E3)
+ oid_object_info_extended(E1, E2, E3)

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

Convert remaining callers of sha1_object_info_extended... brian m. carlson Mon, 12 Mar 2018 02:27:45 +0000 (02:27 +0000)

Convert remaining callers of sha1_object_info_extended to object_id

Convert the remaining caller of sha1_object_info_extended to use struct
object_id. Introduce temporaries, which will be removed later, since
there is a dependency loop between sha1_object_info_extended and
lookup_replace_object_extended. This allows us to convert the code in a
piecemeal fashion instead of all at once.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

packfile: convert unpack_entry to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:44 +0000 (02:27 +0000)

packfile: convert unpack_entry to struct object_id

Convert unpack_entry and read_object to use struct object_id.

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

sha1_file: convert retry_bad_packed_offset to struct... brian m. carlson Mon, 12 Mar 2018 02:27:43 +0000 (02:27 +0000)

sha1_file: convert retry_bad_packed_offset to struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert assert_sha1_type to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:42 +0000 (02:27 +0000)

sha1_file: convert assert_sha1_type to object_id

Convert this function to take a pointer to struct object_id and rename
it to assert_oid_type.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/mktree: convert to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:41 +0000 (02:27 +0000)

builtin/mktree: convert to struct object_id

Convert this file to use struct object_id. Modify one use of
get_sha1_hex into parse_oid_hex; this is safe since we get the data from
a strbuf.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

streaming: convert open_istream to use struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:40 +0000 (02:27 +0000)

streaming: convert open_istream to use struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert check_sha1_signature to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:39 +0000 (02:27 +0000)

sha1_file: convert check_sha1_signature to struct object_id

Convert this function to take a pointer to struct object_id and rename
it check_object_signature. Introduce temporaries to convert the return
values of lookup_replace_object and lookup_replace_object_extended into
struct object_id.

The temporaries are needed because in order to convert
lookup_replace_object, open_istream needs to be converted, and
open_istream needs check_sha1_signature to be converted, causing a loop
of dependencies. The temporaries will be removed in a future patch.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert read_loose_object to use struct... brian m. carlson Mon, 12 Mar 2018 02:27:38 +0000 (02:27 +0000)

sha1_file: convert read_loose_object to use struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/index-pack: convert struct ref_delta_entry... brian m. carlson Mon, 12 Mar 2018 02:27:37 +0000 (02:27 +0000)

builtin/index-pack: convert struct ref_delta_entry to object_id

Convert this struct to use a member of type object_id. Convert various
static functions as well.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive: convert sha1_file_to_archive to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:36 +0000 (02:27 +0000)

archive: convert sha1_file_to_archive to struct object_id

Convert this function to take a pointer to struct object_id and rename
it object_file_to_archive.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive: convert write_archive_entry_fn_t to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:35 +0000 (02:27 +0000)

archive: convert write_archive_entry_fn_t to object_id

Convert the write_archive_entry_fn_t type to use a pointer to struct
object_id. Convert various static functions in the tar and zip
archivers also.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/mktag: convert to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:34 +0000 (02:27 +0000)

builtin/mktag: convert to struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

replace_object: convert struct replace_object to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:33 +0000 (02:27 +0000)

replace_object: convert struct replace_object to object_id

Convert the two members of this struct to be instances of struct
object_id. Adjust the various functions in this file accordingly.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

send-pack: convert remaining functions to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:32 +0000 (02:27 +0000)

send-pack: convert remaining functions to struct object_id

Convert the remaining function, feed_object, to use struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http-walker: convert struct object_request to use struc... brian m. carlson Mon, 12 Mar 2018 02:27:31 +0000 (02:27 +0000)

http-walker: convert struct object_request to use struct object_id

Convert struct object_request to use struct object_id by updating the
definition and applying the following semantic patch, plus the standard
object_id transforms:

@@
struct object_request E1;
@@
- E1.sha1
+ E1.oid.hash

@@
struct object_request *E1;
@@
- E1->sha1
+ E1->oid.hash

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Convert find_unique_abbrev* to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:30 +0000 (02:27 +0000)

Convert find_unique_abbrev* to struct object_id

Convert find_unique_abbrev and find_unique_abbrev_r to each take a
pointer to struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status: convert struct wt_status_state to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:29 +0000 (02:27 +0000)

wt-status: convert struct wt_status_state to object_id

Convert the various *_sha1 members to use struct object_id instead.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

strbuf: convert strbuf_add_unique_abbrev to use struct... brian m. carlson Mon, 12 Mar 2018 02:27:28 +0000 (02:27 +0000)

strbuf: convert strbuf_add_unique_abbrev to use struct object_id

Convert the declaration and definition of strbuf_add_unique_abbrev to
make it take a pointer to struct object_id. Predeclare the struct in
strbuf.h, as cache.h includes strbuf.h before it declares the struct,
and otherwise the struct declaration would have the wrong scope.

Apply the following semantic patch, along with the standard object_id
transforms, to adjust the callers:

@@
expression E1, E2, E3;
@@
- strbuf_add_unique_abbrev(E1, E2.hash, E3);
+ strbuf_add_unique_abbrev(E1, &E2, E3);

@@
expression E1, E2, E3;
@@
- strbuf_add_unique_abbrev(E1, E2->hash, E3);
+ strbuf_add_unique_abbrev(E1, E2, E3);

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref-filter: convert grab_objectname to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:27 +0000 (02:27 +0000)

ref-filter: convert grab_objectname to struct object_id

This is necessary in order to convert find_unique_abbrev.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree: convert read_tree_recursive to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:26 +0000 (02:27 +0000)

tree: convert read_tree_recursive to struct object_id

Convert the callback functions for read_tree_recursive to take a pointer
to struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve-undo: convert struct resolve_undo_info to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:25 +0000 (02:27 +0000)

resolve-undo: convert struct resolve_undo_info to object_id

Convert the sha1 member of this struct to be an array of struct
object_id instead. This change is needed to convert find_unique_abbrev.

Convert some instances of hard-coded constants to use the_hash_algo as
well.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cache-tree: convert remnants to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:24 +0000 (02:27 +0000)

cache-tree: convert remnants to struct object_id

Convert the remaining portions of cache-tree.c to use struct object_id.
Convert several instances of 20 to use the_hash_algo instead.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cache-tree: convert write_*_as_tree to object_idbrian m. carlson Mon, 12 Mar 2018 02:27:23 +0000 (02:27 +0000)

cache-tree: convert write_*_as_tree to object_id

Convert write_index_as_tree and write_cache_as_tree to use struct
object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/write-tree: convert to struct object_idbrian m. carlson Mon, 12 Mar 2018 02:27:22 +0000 (02:27 +0000)

builtin/write-tree: convert to struct object_id

This is needed to convert parts of the cache-tree code.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

bulk-checkin: convert index_bulk_checkin to struct... brian m. carlson Mon, 12 Mar 2018 02:27:21 +0000 (02:27 +0000)

bulk-checkin: convert index_bulk_checkin to struct object_id

Convert the index_bulk_checkin function, and the static functions it
calls, to use pointers to struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

shortlog: add usage-string for stdin-readingMartin Ågren Sat, 10 Mar 2018 11:52:11 +0000 (12:52 +0100)

shortlog: add usage-string for stdin-reading

This has been missing since we learned to print usage, way back in
4e27fb06f (add commit count options to git-shortlog, 2006-10-06).

While at it, drop the [] around "<path>...". This matches `git log -h`
and Documentation/git-{short}log.txt. It formally makes it look like we
do not allow `git shortlog --`, but we gain readability and consistency.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-shortlog.txt: reorder usagesMartin Ågren Sat, 10 Mar 2018 11:52:10 +0000 (12:52 +0100)

git-shortlog.txt: reorder usages

The first usage we give is the original one where, e.g., `git log` is
piped through `git shortlog`. The description that follows reads the
other way round, by first focusing on the general behavior, then ending
with the behavior when reading from stdin.

It is also a tiny bit odd that what is probably the most common usage
and the one a reader is probably looking for is not at the top of the
list. Of course, it is only a two-item list, so it is not _that_ hard to
find... The next commit will add the original usage to the usage string
in builtin/shortlog.c, and it feels more natural to do so below the
most common usage. To avoid being inconsistent, reorder these two
usages here first.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: restore OBJECT_INFO_QUICK functionalityJonathan Tan Tue, 13 Mar 2018 15:30:29 +0000 (08:30 -0700)

sha1_file: restore OBJECT_INFO_QUICK functionality

Support for the OBJECT_INFO_QUICK flag in sha1_object_info_extended()
was added in commit dfdd4afcf9 ("sha1_file: teach
sha1_object_info_extended more flags", 2017-06-26) in order to support
commit e83e71c5e1 ("sha1_file: refactor has_sha1_file_with_flags",
2017-06-26), but it was inadvertently removed in commit 8b4c0103a9
("sha1_file: support lazily fetching missing objects", 2017-12-08).

Restore this functionality.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9402-git-cvsserver-refs: don't check the stderr of... SZEDER Gábor Thu, 8 Mar 2018 12:38:44 +0000 (13:38 +0100)

t9402-git-cvsserver-refs: don't check the stderr of a subshell

Four 'cvs diff' related tests in 't9402-git-cvsserver-refs.sh' fail
when the test script is run with '-x' tracing (and using a shell other
than a Bash version supporting BASH_XTRACEFD). The reason for those
failures is that the tests check the emptiness of a subshell's stderr,
which includes the trace of commands executed in that subshell as
well, throwing off the emptiness check.

Save the stdout and stderr of the invoked 'cvs' command instead of the
whole subshell, so the latter remains free from tracing output. (Note
that changing how stdout is saved is only done for the sake of
consistency, it's not necessary for correctness.)

After this change t9402 passes with '-x', even when running with
/bin/sh.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t9400-git-cvsserver-server: don't rely on the output... SZEDER Gábor Thu, 8 Mar 2018 22:44:58 +0000 (23:44 +0100)

t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'

The test 'cvs update (-p)' redirects and checks 'test_cmp's stdout and
even its stderr. The commit introducing this test in 6e8937a084
(cvsserver: Add test for update -p, 2008-03-27) doesn't discuss why,
in fact its log message only consists of that subject line. Anyway,
weird as it is, it kind of made sense due to the way that test was
structured:

After a bit of preparation, this test updates four files via CVS and
checks their contents using 'test_cmp', but it does so in a for loop
iterating over the names of those four files. Now, the exit status of
a for loop is the exit status of the last command executed in the
loop, meaning that the test can't simply rely on the exit code of
'test_cmp' in the loop's body. Instead, the test works it around by
relying on the stdout of 'test_cmp' being silent on success and
showing the diff on failure, as it appends the stdout of all four
'test_cmp' invocations to a single file and checks that file's
emptiness after the loop (with 'test -z "$(cat ...)"', no less; there
was no 'test_must_be_empty' back then). Furthermore, the test
redirects the stderr of those 'test_cmp' invocations to this file,
too: while 'test_cmp' itself doesn't output anything to stderr, the
invoked 'diff' or 'cmp' commands do send their error messages there,
e.g. if they can't open a file because its name was misspelled.

This also makes this test fail when the test script is run with '-x'
tracing (and using a shell other than a Bash version supporting
BASH_XTRACEFD), because 'test_cmp's stderr contains the trace of the
'diff' command executed inside the helper function, throwing off the
subsequent emptiness check.

Stop relying on 'test_cmp's output and instead run 'test_cmp a b ||
return 1' in the for loop in order to make 'test_cmp's error code fail
the test. Furthermore, add the missing && after the cvs command to
create a && chain in the loop's body.

After this change t9400 passes with '-x', even when running with
/bin/sh.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Eighth batch for 2.17Junio C Hamano Thu, 8 Mar 2018 20:42:06 +0000 (12:42 -0800)

Eighth batch for 2.17

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

Merge branch 'ag/userdiff-go-funcname'Junio C Hamano Thu, 8 Mar 2018 20:36:30 +0000 (12:36 -0800)

Merge branch 'ag/userdiff-go-funcname'

"git diff" and friends learned funcname patterns for Go language
source files.

* ag/userdiff-go-funcname:
userdiff: add built-in pattern for golang

Merge branch 'ab/gc-auto-in-commit'Junio C Hamano Thu, 8 Mar 2018 20:36:30 +0000 (12:36 -0800)

Merge branch 'ab/gc-auto-in-commit'

"git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.

* ab/gc-auto-in-commit:
commit: run git gc --auto just before the post-commit hook

Merge branch 'bp/untracked-cache-noflush'Junio C Hamano Thu, 8 Mar 2018 20:36:30 +0000 (12:36 -0800)

Merge branch 'bp/untracked-cache-noflush'

Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.

* bp/untracked-cache-noflush:
untracked cache: use git_env_bool() not getenv() for customization
dir.c: don't flag the index as dirty for changes to the untracked cache

Merge branch 'rs/perf-repeat-thrice-by-default'Junio C Hamano Thu, 8 Mar 2018 20:36:29 +0000 (12:36 -0800)

Merge branch 'rs/perf-repeat-thrice-by-default'

Perf test regression fix.

* rs/perf-repeat-thrice-by-default:
perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file

Merge branch 'mk/doc-pretty-fill'Junio C Hamano Thu, 8 Mar 2018 20:36:29 +0000 (12:36 -0800)

Merge branch 'mk/doc-pretty-fill'

Docfix.

* mk/doc-pretty-fill:
docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'

Merge branch 'jc/test-must-be-empty'Junio C Hamano Thu, 8 Mar 2018 20:36:27 +0000 (12:36 -0800)

Merge branch 'jc/test-must-be-empty'

Test framework tweak to catch developer thinko.

* jc/test-must-be-empty:
test_must_be_empty: make sure the file exists, not just empty

Merge branch 'ds/mark-parents-uninteresting-optim'Junio C Hamano Thu, 8 Mar 2018 20:36:27 +0000 (12:36 -0800)

Merge branch 'ds/mark-parents-uninteresting-optim'

Micro optimization in revision traversal code.

* ds/mark-parents-uninteresting-optim:
revision.c: reduce object database queries

Merge branch 'ds/find-unique-abbrev-optim'Junio C Hamano Thu, 8 Mar 2018 20:36:26 +0000 (12:36 -0800)

Merge branch 'ds/find-unique-abbrev-optim'

While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.

* ds/find-unique-abbrev-optim:
sha1_name: fix uninitialized memory errors

Merge branch 'sg/subtree-signed-commits'Junio C Hamano Thu, 8 Mar 2018 20:36:25 +0000 (12:36 -0800)

Merge branch 'sg/subtree-signed-commits'

"git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature

* sg/subtree-signed-commits:
subtree: fix add and pull for GPG-signed commits

Merge branch 'rv/grep-cleanup'Junio C Hamano Thu, 8 Mar 2018 20:36:25 +0000 (12:36 -0800)

Merge branch 'rv/grep-cleanup'

Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.

* rv/grep-cleanup:
grep: simplify grep_oid and grep_file
grep: move grep_source_init outside critical section

Merge branch 'ot/ref-filter-cleanup'Junio C Hamano Thu, 8 Mar 2018 20:36:24 +0000 (12:36 -0800)

Merge branch 'ot/ref-filter-cleanup'

Code cleanup.

* ot/ref-filter-cleanup:
ref-filter: get rid of goto
ref-filter: get rid of duplicate code

Merge branch 'jh/status-no-ahead-behind'Junio C Hamano Thu, 8 Mar 2018 20:36:24 +0000 (12:36 -0800)

Merge branch 'jh/status-no-ahead-behind'

"git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.

* jh/status-no-ahead-behind:
status: support --no-ahead-behind in long format
status: update short status to respect --no-ahead-behind
status: add --[no-]ahead-behind to status and commit for V2 format.
stat_tracking_info: return +1 when branches not equal

Merge branch 'sg/travis-build-during-script-phase'Junio C Hamano Thu, 8 Mar 2018 20:36:23 +0000 (12:36 -0800)

Merge branch 'sg/travis-build-during-script-phase'

Build the executable in 'script' phase in Travis CI integration, to
follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).

* sg/travis-build-during-script-phase:
travis-ci: build Git during the 'script' phase

git manpage: note git-security@googlegroups.comÆvar Arnfjörð Bjarmason Thu, 8 Mar 2018 15:08:20 +0000 (15:08 +0000)

git manpage: note git-security@googlegroups.com

Add a mention of the security mailing list to the "Reporting Bugs"
section. There's a mention of this list at
https://git-scm.com/community but none in git.git itself.

The copy is pasted from the git-scm.com website. Let's use the same
wording in both places.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

userdiff.c: add C# async keyword in diff patternThomas Levesque Thu, 8 Mar 2018 11:05:32 +0000 (11:05 +0000)

userdiff.c: add C# async keyword in diff pattern

Currently C# async methods are not shown in diff hunk headers. I just
added the async keyword to the csharp method pattern so that they are
properly detected.

Signed-off-by: Thomas Levesque <thomas.levesque@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

completion: more subcommands in _git_notes()Nguyễn Thái Ngọc Duy Wed, 7 Mar 2018 01:05:04 +0000 (08:05 +0700)

completion: more subcommands in _git_notes()

Two subcommands are added for completion: merge and get-ref. get-ref
is more like plumbing. But since it does not share the prefix with any
other subcommands, it won't slow anybody down.

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

completion: complete --{reuse,reedit}-message= for... Nguyễn Thái Ngọc Duy Wed, 7 Mar 2018 01:05:03 +0000 (08:05 +0700)

completion: complete --{reuse,reedit}-message= for all notes subcmds

The new subcommand that takes these options is 'git notes edit'. Just
accept the options from subcommands since we handle them the same way
in builtin/notes.c anyway. If a user does

git prune --reuse-message=...

just let the command catches that error when it's executed.

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

completion: simplify _git_notesNguyễn Thái Ngọc Duy Wed, 7 Mar 2018 01:05:02 +0000 (08:05 +0700)

completion: simplify _git_notes

This also adds completion for 'git notes remove' and 'git notes edit'.

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

completion: don't set PARSE_OPT_NOCOMPLETE on --rerere... Nguyễn Thái Ngọc Duy Wed, 7 Mar 2018 01:05:01 +0000 (08:05 +0700)

completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate

There is not a strong reason to hide this option, and git-merge already
completes this one. Let's allow to complete this for all commands (and
let git-completion.bash do the suppressing if needed).

This makes --rerere-autoupdate completable for am, cherry-pick and
revert. rebase completion is fixed manually because it's a shell
script and does not benefit from --git-completion-helper.

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

Seventh batch for 2.17Junio C Hamano Tue, 6 Mar 2018 22:59:10 +0000 (14:59 -0800)

Seventh batch for 2.17

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

Merge branch 'bw/perl-timegm-timelocal-fix'Junio C Hamano Tue, 6 Mar 2018 22:54:08 +0000 (14:54 -0800)

Merge branch 'bw/perl-timegm-timelocal-fix'

Y2k20 fix ;-) for our perl scripts.

* bw/perl-timegm-timelocal-fix:
perl: call timegm and timelocal with 4-digit year

Merge branch 'jk/strbuf-read-file-close-error'Junio C Hamano Tue, 6 Mar 2018 22:54:08 +0000 (14:54 -0800)

Merge branch 'jk/strbuf-read-file-close-error'

Code clean-up.

* jk/strbuf-read-file-close-error:
strbuf_read_file(): preserve errno across close() call

Merge branch 'bw/c-plus-plus'Junio C Hamano Tue, 6 Mar 2018 22:54:07 +0000 (14:54 -0800)

Merge branch 'bw/c-plus-plus'

Avoid using identifiers that clash with C++ keywords. Even though
it is not a goal to compile Git with C++ compilers, changes like
this help use of code analysis tools that targets C++ on our
codebase.

* bw/c-plus-plus: (37 commits)
replace: rename 'new' variables
trailer: rename 'template' variables
tempfile: rename 'template' variables
wrapper: rename 'template' variables
environment: rename 'namespace' variables
diff: rename 'template' variables
environment: rename 'template' variables
init-db: rename 'template' variables
unpack-trees: rename 'new' variables
trailer: rename 'new' variables
submodule: rename 'new' variables
split-index: rename 'new' variables
remote: rename 'new' variables
ref-filter: rename 'new' variables
read-cache: rename 'new' variables
line-log: rename 'new' variables
imap-send: rename 'new' variables
http: rename 'new' variables
entry: rename 'new' variables
diffcore-delta: rename 'new' variables
...

Merge branch 'rs/strbuf-read-file-or-whine'Junio C Hamano Tue, 6 Mar 2018 22:54:07 +0000 (14:54 -0800)

Merge branch 'rs/strbuf-read-file-or-whine'

Code clean-up.

* rs/strbuf-read-file-or-whine:
sequencer: factor out strbuf_read_file_or_whine()

Merge branch 'ms/non-ascii-ticks'Junio C Hamano Tue, 6 Mar 2018 22:54:06 +0000 (14:54 -0800)

Merge branch 'ms/non-ascii-ticks'

Doc markup fix.

* ms/non-ascii-ticks:
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes

Merge branch 'jk/test-helper-v-output-fix'Junio C Hamano Tue, 6 Mar 2018 22:54:05 +0000 (14:54 -0800)

Merge branch 'jk/test-helper-v-output-fix'

Test framework update.

* jk/test-helper-v-output-fix:
t: send verbose test-helper output to fd 4

Merge branch 'jk/cached-commit-buffer'Junio C Hamano Tue, 6 Mar 2018 22:54:05 +0000 (14:54 -0800)

Merge branch 'jk/cached-commit-buffer'

Code clean-up.

* jk/cached-commit-buffer:
revision: drop --show-all option
commit: drop uses of get_cached_commit_buffer()

Merge branch 'bw/doc-submodule-recurse-config-with... Junio C Hamano Tue, 6 Mar 2018 22:54:05 +0000 (14:54 -0800)

Merge branch 'bw/doc-submodule-recurse-config-with-clone'

Doc update.

* bw/doc-submodule-recurse-config-with-clone:
submodule: indicate that 'submodule.recurse' doesn't apply to clone

Merge branch 'jc/allow-ff-merging-kept-tags'Junio C Hamano Tue, 6 Mar 2018 22:54:04 +0000 (14:54 -0800)

Merge branch 'jc/allow-ff-merging-kept-tags'

Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.

* jc/allow-ff-merging-kept-tags:
merge: allow fast-forward when merging a tracked tag

Merge branch 'ab/simplify-perl-makefile'Junio C Hamano Tue, 6 Mar 2018 22:54:04 +0000 (14:54 -0800)

Merge branch 'ab/simplify-perl-makefile'

Hotfix for a topic already in 'master'.

* ab/simplify-perl-makefile:
Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets

Merge branch 'pw/add-p-single'Junio C Hamano Tue, 6 Mar 2018 22:54:03 +0000 (14:54 -0800)

Merge branch 'pw/add-p-single'

"git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).

* pw/add-p-single:
add -p: improve error messages
add -p: only bind search key if there's more than one hunk
add -p: only display help for active keys

Merge branch 'sg/t6300-modernize'Junio C Hamano Tue, 6 Mar 2018 22:54:03 +0000 (14:54 -0800)

Merge branch 'sg/t6300-modernize'

Test update.

* sg/t6300-modernize:
t6300-for-each-ref: fix "more than one quoting style" tests

Merge branch 'sb/color-h-cleanup'Junio C Hamano Tue, 6 Mar 2018 22:54:02 +0000 (14:54 -0800)

Merge branch 'sb/color-h-cleanup'

Devdoc update.

* sb/color-h-cleanup:
color.h: document and modernize header

Merge branch 'nd/rebase-show-current-patch'Junio C Hamano Tue, 6 Mar 2018 22:54:02 +0000 (14:54 -0800)

Merge branch 'nd/rebase-show-current-patch'

The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.

* nd/rebase-show-current-patch:
rebase: introduce and use pseudo-ref REBASE_HEAD
rebase: add --show-current-patch
am: add --show-current-patch

Merge branch 'xz/send-email-batch-size'Junio C Hamano Tue, 6 Mar 2018 22:54:02 +0000 (14:54 -0800)

Merge branch 'xz/send-email-batch-size'

"git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.

* xz/send-email-batch-size:
send-email: error out when relogin delay is missing

Merge branch 'ab/fetch-prune'Junio C Hamano Tue, 6 Mar 2018 22:54:01 +0000 (14:54 -0800)

Merge branch 'ab/fetch-prune'

Clarify how configured fetch refspecs interact with the "--prune"
option of "git fetch", and also add a handy short-hand for getting
rid of stale tags that are locally held.

* ab/fetch-prune:
fetch: make the --prune-tags work with <url>
fetch: add a --prune-tags option and fetch.pruneTags config
fetch tests: add scaffolding for the new fetch.pruneTags
git-fetch & config doc: link to the new PRUNING section
git remote doc: correct dangerous lies about what prune does
git fetch doc: add a new section to explain the ins & outs of pruning
fetch tests: fetch <url> <spec> as well as fetch [<remote>]
fetch tests: expand case/esac for later change
fetch tests: double quote a variable for interpolation
fetch tests: test --prune and refspec interaction
fetch tests: add a tag to be deleted to the pruning tests
fetch tests: re-arrange arguments for future readability
fetch tests: refactor in preparation for testing tag pruning
remote: add a macro for "refs/tags/*:refs/tags/*"
fetch: stop accessing "remote" variable indirectly
fetch: trivially refactor assignment to ref_nr
fetch: don't redundantly NULL something calloc() gave us

Merge branch 'sm/mv-dry-run-update'Junio C Hamano Tue, 6 Mar 2018 22:54:00 +0000 (14:54 -0800)

Merge branch 'sm/mv-dry-run-update'

Code clean-up.

* sm/mv-dry-run-update:
mv: remove unneeded 'if (!show_only)'
t7001: add test case for --dry-run

Merge branch 'nm/tag-edit'Junio C Hamano Tue, 6 Mar 2018 22:53:59 +0000 (14:53 -0800)

Merge branch 'nm/tag-edit'

"git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.

* nm/tag-edit:
tag: add --edit option

t2028: fix minor error and issues in newly-added "workt... Eric Sunshine Sun, 4 Mar 2018 05:26:47 +0000 (00:26 -0500)

t2028: fix minor error and issues in newly-added "worktree move" tests

Recently-added "git worktree move" tests include a minor error and a few
small issues. Specifically:

* checking non-existence of wrong file ("source" instead of
"destination")

* unneeded redirect (">empty")

* unused variable ("toplevel")

* restoring a worktree location by means of a separate test somewhat
distant from the test which moved it rather than using
test_when_finished() to restore it in a self-contained fashion

* having git command on the left-hand-side of a pipe ("git foo | grep")

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Acked-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

object.h: realign object flag allocation commentNguyễn Thái Ngọc Duy Tue, 6 Mar 2018 10:16:15 +0000 (17:16 +0700)

object.h: realign object flag allocation comment

Some new path names are too long and eat into the graph part. Move the
graph 9 columns to the right to avoid this.

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

object.h: update flag allocation commentNguyễn Thái Ngọc Duy Tue, 6 Mar 2018 10:16:14 +0000 (17:16 +0700)

object.h: update flag allocation comment

Since the "flags" is shared, it's a good idea to keep track of who
uses what bit. When we need to use more flags in library code, we can
be sure it won't be re-used for another purpose by some caller.

While at there, fix the location of "5" (should be in a different
column than "4" two lines down)

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

send-email: support separate Reply-To addressChristian Ludwig Sat, 3 Mar 2018 23:58:14 +0000 (00:58 +0100)

send-email: support separate Reply-To address

In some projects contributions from groups are only accepted from a
common group email address. But every individual may want to receive
replies to her own personal address. That's what we have 'Reply-To'
headers for in SMTP. So introduce an optional '--reply-to' command
line option.

This patch re-uses the $reply_to variable. This could break
out-of-tree patches!

Signed-off-by: Christian Ludwig <chrissicool@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

send-email: rename variable for clarityChristian Ludwig Sat, 3 Mar 2018 23:58:13 +0000 (00:58 +0100)

send-email: rename variable for clarity

The SMTP protocol has both, the 'Reply-To' and the 'In-Reply-To' header
fields. We only use the latter. To avoid confusion, rename the variable
for it.

Signed-off-by: Christian Ludwig <chrissicool@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add--interactive: detect bogus diffFilter outputJeff King Sat, 3 Mar 2018 05:58:49 +0000 (00:58 -0500)

add--interactive: detect bogus diffFilter output

It's important that the diff-filter only filter the
individual lines, and that there remain a one-to-one mapping
between the input and output lines. Otherwise, things like
hunk-splitting will behave quite unexpectedly (e.g., you
think you are splitting at one point, but it has a different
effect in the text patch we apply).

We can't detect all problematic cases, but we can at least
catch the obvious case where we don't even have the correct
number of lines.

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

t3701: add a test for interactive.diffFilterJeff King Sat, 3 Mar 2018 05:58:10 +0000 (00:58 -0500)

t3701: add a test for interactive.diffFilter

This feature was added in 01143847db (add--interactive:
allow custom diff highlighting programs, 2016-02-27) but
never tested. Let's add a basic test.

Note that we only apply the filter when color is enabled,
so we have to use test_terminal. This is an open limitation
explicitly mentioned in the original commit. So take this
commit as testing the status quo, and not making a statement
on whether we'd want to enhance that in the future.

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

repository: delete ignore_env memberNguyễn Thái Ngọc Duy Sat, 3 Mar 2018 11:35:58 +0000 (18:35 +0700)

repository: delete ignore_env member

This variable was added because the repo_set_gitdir() was created to
cover both submodule and main repos, but these two are initialized a
bit differently so ignore_env == 0 means main repo, while ignore_env
!= 0 is submodules.

Since the difference part (env variables) has been moved out of
repo_set_gitdir(), this function works the same way for both repo
types and ignore_env is not needed anymore.

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

sha1_file.c: move delayed getenv(altdb) back to setup_g... Nguyễn Thái Ngọc Duy Sat, 3 Mar 2018 11:35:57 +0000 (18:35 +0700)

sha1_file.c: move delayed getenv(altdb) back to setup_git_env()

getenv() is supposed to work on the main repository only. This delayed
getenv() code in sha1_file.c makes it more difficult to convert
sha1_file.c to a generic object store that could be used by both
submodule and main repositories.

Move the getenv() back in setup_git_env() where other env vars are
also fetched.

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