gitweb.git
merge: save merge state earlierMichael J Gruber Wed, 23 Aug 2017 12:10:45 +0000 (14:10 +0200)

merge: save merge state earlier

If the `git merge` process is killed while waiting for the editor to
finish, the merge state is lost but the prepared merge msg and tree is kept.
So, a subsequent `git commit` creates a squashed merge even when the
user asked for proper merge commit originally.

Demonstrate the problem with a test crafted after the in t7502. The test
requires EXECKEEPSPID (thus does not run under MINGW).

Save the merge state earlier (in the non-squash case) so that it does
not get lost. This makes the test pass.

Reported-by: hIpPy <hippy2981@gmail.com>
Signed-off-by: Michael J Gruber <git@grubix.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge: split write_merge_state in twoMichael J Gruber Wed, 23 Aug 2017 12:10:44 +0000 (14:10 +0200)

merge: split write_merge_state in two

write_merge_state() writes out the merge heads, mode, and msg. But we
may want to write out heads, mode without the msg. So, split out heads
(+mode) into a separate function write_merge_heads() that is called by
write_merge_state().

No funtional change so far, except when these non-atomic writes are
interrupted: we write heads-mode-msg now when we used to write
heads-msg-mode.

Signed-off-by: Michael J Gruber <git@grubix.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

merge: clarify call chainMichael J Gruber Wed, 23 Aug 2017 12:10:43 +0000 (14:10 +0200)

merge: clarify call chain

prepare_to_commit() cannot be reached in the non-squash case:
It is called by merge_trivial() and finish_automerge() only, but the
calls to the latter are somewhat hard to track:

If option_commit is not set, the code in cmd_merge() uses a fake
conflict return code (ret=1) to avoid writing the tree, which also
avoids setting automerge_was_ok (just as in the proper ret==1 case), so
that finish_automerge() is not called.

To ensure that no code change breaks that assumption, safe-guard
prepare_to_commit() by a BUG() statement.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael J Gruber <git@grubix.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-objects: take lock before accessing `remaining`Martin Ågren Mon, 21 Aug 2017 17:43:46 +0000 (19:43 +0200)

pack-objects: take lock before accessing `remaining`

When checking the conditional of "while (me->remaining)", we did not
hold the lock. Calling find_deltas would still be safe, since it checks
"remaining" (after taking the lock) and is able to handle all values. In
fact, this could (currently) not trigger any bug: a bug could happen if
`remaining` transitioning from zero to non-zero races with the evaluation
of the while-condition, but these are always separated by the
data_ready-mechanism.

Make sure we have the lock when we read `remaining`. This does mean we
release it just so that find_deltas can take it immediately again. We
could tweak the contract so that the lock should be taken before calling
find_deltas, but let's defer that until someone can actually show that
"unlock+lock" has a measurable negative impact.

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

convert: always initialize attr_action in convert_attrsMartin Ågren Mon, 21 Aug 2017 17:43:45 +0000 (19:43 +0200)

convert: always initialize attr_action in convert_attrs

convert_attrs contains an "if-else". In the "if", we set attr_action
twice, and the first assignment has no effect. In the "else", we do not
set it at all. Since git_check_attr always returns the same value, we'll
always end up in the "if", so there is no problem right now. But
convert_attrs is obviously trying not to rely on such an
implementation-detail of another component.

Make the initialization of attr_action after the if-else. Remove the
earlier assignments.

Suggested-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/doc-the-this' into nextJunio C Hamano Tue, 22 Aug 2017 22:09:39 +0000 (15:09 -0700)

Merge branch 'jk/doc-the-this' into next

Doc clean-up.

* jk/doc-the-this:
doc: fix typo in sendemail.identity

Merge branch 'bc/vcs-svn-cleanup' into nextJunio C Hamano Tue, 22 Aug 2017 22:09:38 +0000 (15:09 -0700)

Merge branch 'bc/vcs-svn-cleanup' into next

Code clean-up.

* bc/vcs-svn-cleanup:
vcs-svn: rename repo functions to "svn_repo"
vcs-svn: remove unused prototypes

Merge branch 'rs/archive-excluded-directory' into nextJunio C Hamano Tue, 22 Aug 2017 22:09:37 +0000 (15:09 -0700)

Merge branch 'rs/archive-excluded-directory' into next

"git archive" did not work well with pathspecs and the
export-ignore attribute.

* rs/archive-excluded-directory:
archive: don't queue excluded directories
archive: factor out helper functions for handling attributes
t5001: add tests for export-ignore attributes and exclude pathspecs

Merge branch 'jc/simplify-progress' into nextJunio C Hamano Tue, 22 Aug 2017 22:09:37 +0000 (15:09 -0700)

Merge branch 'jc/simplify-progress' into next

The API to start showing progress meter after a short delay has
been simplified.

* jc/simplify-progress:
progress: simplify "delayed" progress API

Merge branch 'ks/branch-set-upstream' into nextJunio C Hamano Tue, 22 Aug 2017 22:09:37 +0000 (15:09 -0700)

Merge branch 'ks/branch-set-upstream' into next

"branch --set-upstream" that has been deprecated in Git 1.8 has
finally been retired.

* ks/branch-set-upstream:
branch: quote branch/ref names to improve readability
builtin/branch: stop supporting the "--set-upstream" option
t3200: cleanup cruft of a test

Merge branch 'tc/curl-with-backports' into nextJunio C Hamano Tue, 22 Aug 2017 22:09:37 +0000 (15:09 -0700)

Merge branch 'tc/curl-with-backports' into next

Updates to the HTTP layer we made recently unconditionally used
features of libCurl without checking the existence of them, causing
compilation errors, which has been fixed. Also migrate the code to
check feature macros, not version numbers, to cope better with
libCurl that vendor ships with backported features.

* tc/curl-with-backports:
http: use a feature check to enable GSSAPI delegation control
http: fix handling of missing CURLPROTO_*

rerere: allow approxidate in gc.rerereResolved/gc.rerer... Junio C Hamano Sat, 19 Aug 2017 18:43:39 +0000 (11:43 -0700)

rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved

These two configuration variables are described in the documentation
to take an expiry period expressed in the number of days:

gc.rerereResolved::
Records of conflicted merge you resolved earlier are
kept for this many days when 'git rerere gc' is run.
The default is 60 days.

gc.rerereUnresolved::
Records of conflicted merge you have not resolved are
kept for this many days when 'git rerere gc' is run.
The default is 15 days.

There is no strong reason not to allow a more general "approxidate"
expiry specification, e.g. "5.days.ago", or "never".

Rename the config_get_expiry() helper introduced in the previous
step to git_config_get_expiry_in_days() and move it to a more
generic place, config.c, and use date.c::parse_expiry_date() to do
so. Give it an ability to allow the caller to tell among three
cases (i.e. there is no "gc.rerereResolved" config, there is and it
is correctly parsed into the *expiry variable, and there was an
error in parsing the given value). The current caller can work
correctly without using the return value, though.

In the future, we may find other variables that only allow an
integer that specifies "this many days" or other unit of time, and
when it happens we may need to drop "_days" suffix from the name of
the function and instead pass the "scale" value as another parameter.

But this will do for now.

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

rerere: represent time duration in timestamp_t internallyJunio C Hamano Sat, 19 Aug 2017 18:16:01 +0000 (11:16 -0700)

rerere: represent time duration in timestamp_t internally

The two configuration variables, gc.rerereResolved and
gc.rerereUnresolved, are measured in days and are passed as such
into the prune_one() helper function, which worked in time_t to see
if an entry in the rerere database is past its expiry.

Instead, have the caller turn the number of days into the expiry
timestamp. Further, use timestamp_t instead of time_t. This will
make it possible to extend the way the configuration variable is
spelled by using date.c::parse_expiry_date() that gives the expiry
timestamp in timestamp_t.

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

t4200: parameterize "rerere gc" custom expiry testJunio C Hamano Tue, 22 Aug 2017 21:25:09 +0000 (14:25 -0700)

t4200: parameterize "rerere gc" custom expiry test

The test creates a rerere database entry that is two days old, and
tries to expire with three different custom expiry configuration
(keep ones less than 5 days old, keep ones used less than 5 days
ago, and expire everything right now).

We'll be introducing a different way to spell the same "5 days" and
"right now" parameter in a later step; parameterize the test to make
it easier to test the new spelling when it happens.

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

t4200: gather "rerere gc" togetherJunio C Hamano Tue, 22 Aug 2017 21:20:24 +0000 (14:20 -0700)

t4200: gather "rerere gc" together

Move the "rerere gc with custom expiry" test up, so that it is close
to the existing basic "rerere gc" tests.

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

t4200: make "rerere gc" test more robustJunio C Hamano Tue, 22 Aug 2017 21:14:03 +0000 (14:14 -0700)

t4200: make "rerere gc" test more robust

The test blindly trusted that there may be _some_ entries left in
the rerere database, and used them by updating their timestamps to
see if the gc threshold variables are honoured correctly. This
won't work if there is no entry in the database when the test
begins.

Instead, clear the rerere database, and populate it with a few known
entries (which are bogus, but for the purpose of testing "garbage
collection", it does not matter---we want to make sure we collect
old cruft, even if the files are corrupt rerere database entries),
and use them for the expiry test.

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

t4200: give us a clean slate after "rerere gc" testsJunio C Hamano Tue, 22 Aug 2017 20:49:02 +0000 (13:49 -0700)

t4200: give us a clean slate after "rerere gc" tests

The "multiple identical conflicts" test counts the number of entries
in the rerere database after trying a handful of mergy operations
and recording their resolutions, but without initializing the rerere
database to a known state, allowing the state left by previous tests
to trigger a false failure. Make it robust by cleaning the database
before it starts.

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

gitweb: add 'raw' blob_plain link in history overviewJob Snijders Tue, 22 Aug 2017 20:07:29 +0000 (22:07 +0200)

gitweb: add 'raw' blob_plain link in history overview

For people that work with very large plain text files it may be easier
if one can bypass viewing the htmlized blob and instead click directly
to the raw file (rather then click through 'blob' and then to 'raw').

Signed-off-by: Job Snijders <job@instituut.net>
Reviewed-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with masterJunio C Hamano Tue, 22 Aug 2017 17:37:19 +0000 (10:37 -0700)

Sync with master

* master:
The second batch post 2.14

Merge branch 'rs/commit-h-single-parent-cleanup' into... Junio C Hamano Tue, 22 Aug 2017 17:37:00 +0000 (10:37 -0700)

Merge branch 'rs/commit-h-single-parent-cleanup' into next

Code clean-up.

* rs/commit-h-single-parent-cleanup:
commit: remove unused inline function single_parent()

Merge branch 'jt/stash-tests' into nextJunio C Hamano Tue, 22 Aug 2017 17:37:00 +0000 (10:37 -0700)

Merge branch 'jt/stash-tests' into next

Test update to improve coverage for "git stash" operations.

* jt/stash-tests:
stash: add a test for stashing in a detached state
stash: add a test for when apply fails during stash branch
stash: add a test for stash create with no files

Merge branch 'po/read-graft-line' into nextJunio C Hamano Tue, 22 Aug 2017 17:36:59 +0000 (10:36 -0700)

Merge branch 'po/read-graft-line' into next

Conversion from uchar[20] to struct object_id continues; this is to
ensure that we do not assume sizeof(struct object_id) is the same
as the length of SHA-1 hash (or length of longest hash we support).

* po/read-graft-line:
commit: rewrite read_graft_line
commit: allocate array using object_id size
commit: replace the raw buffer with strbuf in read_graft_line
sha1_file: fix definition of null_sha1

Merge branch 'tb/apply-with-crlf' into nextJunio C Hamano Tue, 22 Aug 2017 17:36:59 +0000 (10:36 -0700)

Merge branch 'tb/apply-with-crlf' into next

"git apply" that is used as a better "patch -p1" failed to apply a
taken from a file with CRLF line endings to a file with CRLF line
endings. The root cause was because it misused convert_to_git()
that tried to do "safe-crlf" processing by looking at the index
entry at the same path, which is a nonsense---in that mode, "apply"
is not working on the data in (or derived from) the index at all.
This has been fixed.

* tb/apply-with-crlf:
apply: file commited with CRLF should roundtrip diff and apply
convert: add SAFE_CRLF_KEEP_CRLF

Merge branch 'jk/trailers-parse' into nextJunio C Hamano Tue, 22 Aug 2017 17:36:57 +0000 (10:36 -0700)

Merge branch 'jk/trailers-parse' into next

"git interpret-trailers" has been taught a "--parse" and a few
other options to make it easier for scripts to grab existing
trailer lines from a commit log message.

* jk/trailers-parse:
doc/interpret-trailers: fix "the this" typo

The second batch post 2.14Junio C Hamano Tue, 22 Aug 2017 17:33:58 +0000 (10:33 -0700)

The second batch post 2.14

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

Merge branch 'mh/packed-ref-store'Junio C Hamano Tue, 22 Aug 2017 17:29:16 +0000 (10:29 -0700)

Merge branch 'mh/packed-ref-store'

The "ref-store" code reorganization continues.

* mh/packed-ref-store: (32 commits)
files-backend: cheapen refname_available check when locking refs
packed_ref_store: handle a packed-refs file that is a symlink
read_packed_refs(): die if `packed-refs` contains bogus data
t3210: add some tests of bogus packed-refs file contents
repack_without_refs(): don't lock or unlock the packed refs
commit_packed_refs(): remove call to `packed_refs_unlock()`
clear_packed_ref_cache(): don't protest if the lock is held
packed_refs_unlock(), packed_refs_is_locked(): new functions
packed_refs_lock(): report errors via a `struct strbuf *err`
packed_refs_lock(): function renamed from lock_packed_refs()
commit_packed_refs(): use a staging file separate from the lockfile
commit_packed_refs(): report errors rather than dying
packed_ref_store: make class into a subclass of `ref_store`
packed-backend: new module for handling packed references
packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
packed_ref_store: support iteration
packed_peel_ref(): new function, extracted from `files_peel_ref()`
repack_without_refs(): take a `packed_ref_store *` parameter
get_packed_ref(): take a `packed_ref_store *` parameter
rollback_packed_refs(): take a `packed_ref_store *` parameter
...

Merge branch 'sb/retire-t1200'Junio C Hamano Tue, 22 Aug 2017 17:29:16 +0000 (10:29 -0700)

Merge branch 'sb/retire-t1200'

A test script that outlived its usefulness has been removed.

* sb/retire-t1200:
t1200: remove t1200-tutorial.sh

Merge branch 'rs/win32-syslog-leakfix'Junio C Hamano Tue, 22 Aug 2017 17:29:16 +0000 (10:29 -0700)

Merge branch 'rs/win32-syslog-leakfix'

Memory leak in an error codepath has been plugged.

* rs/win32-syslog-leakfix:
win32: plug memory leak on realloc() failure in syslog()

Merge branch 'rs/unpack-entry-leakfix'Junio C Hamano Tue, 22 Aug 2017 17:29:15 +0000 (10:29 -0700)

Merge branch 'rs/unpack-entry-leakfix'

Memory leak in an error codepath has been plugged.

* rs/unpack-entry-leakfix:
sha1_file: release delta_stack on error in unpack_entry()

Merge branch 'rs/strbuf-getwholeline-fix'Junio C Hamano Tue, 22 Aug 2017 17:29:15 +0000 (10:29 -0700)

Merge branch 'rs/strbuf-getwholeline-fix'

A helper function to read a single whole line into strbuf
mistakenly triggered OOM error at EOF under certain conditions,
which has been fixed.

* rs/strbuf-getwholeline-fix:
strbuf: clear errno before calling getdelim(3)

Merge branch 'rs/merge-microcleanup'Junio C Hamano Tue, 22 Aug 2017 17:29:14 +0000 (10:29 -0700)

Merge branch 'rs/merge-microcleanup'

Code clean-up.

* rs/merge-microcleanup:
merge: use skip_prefix()

Merge branch 'rs/fsck-obj-leakfix'Junio C Hamano Tue, 22 Aug 2017 17:29:13 +0000 (10:29 -0700)

Merge branch 'rs/fsck-obj-leakfix'

Memory leak in an error codepath has been plugged.

* rs/fsck-obj-leakfix:
fsck: free buffers on error in fsck_obj()

Merge branch 'rs/t4062-obsd'Junio C Hamano Tue, 22 Aug 2017 17:29:13 +0000 (10:29 -0700)

Merge branch 'rs/t4062-obsd'

Test portability fix.

* rs/t4062-obsd:
t4062: use less than 256 repetitions in regex

Merge branch 'rs/find-pack-entry-bisection'Junio C Hamano Tue, 22 Aug 2017 17:29:11 +0000 (10:29 -0700)

Merge branch 'rs/find-pack-entry-bisection'

Code clean-up.

* rs/find-pack-entry-bisection:
sha1_file: avoid comparison if no packed hash matches the first byte

Merge branch 'rs/apply-lose-prefix-length'Junio C Hamano Tue, 22 Aug 2017 17:29:10 +0000 (10:29 -0700)

Merge branch 'rs/apply-lose-prefix-length'

Code clean-up.

* rs/apply-lose-prefix-length:
apply: remove prefix_length member from apply_state

Merge branch 'rj/add-chmod-error-message'Junio C Hamano Tue, 22 Aug 2017 17:29:10 +0000 (10:29 -0700)

Merge branch 'rj/add-chmod-error-message'

Message fix.

* rj/add-chmod-error-message:
builtin/add: add detail to a 'cannot chmod' error message

Merge branch 'jk/hashcmp-memcmp'Junio C Hamano Tue, 22 Aug 2017 17:29:09 +0000 (10:29 -0700)

Merge branch 'jk/hashcmp-memcmp'

Code clean-up.

* jk/hashcmp-memcmp:
hashcmp: use memcmp instead of open-coded loop

Merge branch 'jk/drop-sha1-entry-pos'Junio C Hamano Tue, 22 Aug 2017 17:29:08 +0000 (10:29 -0700)

Merge branch 'jk/drop-sha1-entry-pos'

Code clean-up.

* jk/drop-sha1-entry-pos:
sha1_file: drop experimental GIT_USE_LOOKUP search

Merge branch 'ur/svn-local-zone'Junio C Hamano Tue, 22 Aug 2017 17:29:07 +0000 (10:29 -0700)

Merge branch 'ur/svn-local-zone'

"git svn" used with "--localtime" option did not compute the tz
offset for the timestamp in question and instead always used the
current time, which has been corrected.

* ur/svn-local-zone:
git svn fetch: Create correct commit timestamp when using --localtime

Merge branch 'pw/am-signoff'Junio C Hamano Tue, 22 Aug 2017 17:29:07 +0000 (10:29 -0700)

Merge branch 'pw/am-signoff'

"git am -s" has been taught that some input may end with a trailer
block that is not Signed-off-by: and it should refrain from adding
an extra blank line before adding a new sign-off in such a case.

* pw/am-signoff:
am: fix signoff when other trailers are present

Merge branch 'rs/t3700-clean-leftover'Junio C Hamano Tue, 22 Aug 2017 17:29:07 +0000 (10:29 -0700)

Merge branch 'rs/t3700-clean-leftover'

A test fix.

* rs/t3700-clean-leftover:
t3700: fix broken test under !POSIXPERM

Merge branch 'jc/perl-git-comment-typofix'Junio C Hamano Tue, 22 Aug 2017 17:29:06 +0000 (10:29 -0700)

Merge branch 'jc/perl-git-comment-typofix'

A comment fix.

* jc/perl-git-comment-typofix:
perl/Git.pm: typofix in a comment

Merge branch 'rs/in-obsd-basename-dirname-take-const'Junio C Hamano Tue, 22 Aug 2017 17:29:05 +0000 (10:29 -0700)

Merge branch 'rs/in-obsd-basename-dirname-take-const'

Portability fix.

* rs/in-obsd-basename-dirname-take-const:
test-path-utils: handle const parameter of basename and dirname

Merge branch 'rs/obsd-getcwd-workaround'Junio C Hamano Tue, 22 Aug 2017 17:29:04 +0000 (10:29 -0700)

Merge branch 'rs/obsd-getcwd-workaround'

Test portability fix for BSDs.

* rs/obsd-getcwd-workaround:
t0001: skip test with restrictive permissions if getpwd(3) respects them

Merge branch 'mf/no-dashed-subcommands'Junio C Hamano Tue, 22 Aug 2017 17:29:03 +0000 (10:29 -0700)

Merge branch 'mf/no-dashed-subcommands'

Code clean-up.

* mf/no-dashed-subcommands:
scripts: use "git foo" not "git-foo"

Merge branch 'ma/parse-maybe-bool'Junio C Hamano Tue, 22 Aug 2017 17:29:03 +0000 (10:29 -0700)

Merge branch 'ma/parse-maybe-bool'

Code clean-up.

* ma/parse-maybe-bool:
parse_decoration_style: drop unused argument `var`
treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
config: make git_{config,parse}_maybe_bool equivalent
config: introduce git_parse_maybe_bool_text
t5334: document that git push --signed=1 does not work
Doc/git-{push,send-pack}: correct --sign= to --signed=

Merge branch 'ab/ref-filter-no-contains'Junio C Hamano Tue, 22 Aug 2017 17:29:02 +0000 (10:29 -0700)

Merge branch 'ab/ref-filter-no-contains'

A test fix.

* ab/ref-filter-no-contains:
tests: don't give unportable ">" to "test" built-in, use -gt

Merge branch 'bw/clone-recursive-quiet'Junio C Hamano Tue, 22 Aug 2017 17:29:01 +0000 (10:29 -0700)

Merge branch 'bw/clone-recursive-quiet'

"git clone --recurse-submodules --quiet" did not pass the quiet
option down to submodules.

* bw/clone-recursive-quiet:
clone: teach recursive clones to respect -q

Merge branch 'bw/grep-recurse-submodules'Junio C Hamano Tue, 22 Aug 2017 17:29:01 +0000 (10:29 -0700)

Merge branch 'bw/grep-recurse-submodules'

"git grep --recurse-submodules" has been reworked to give a more
consistent output across submodule boundary (and do its thing
without having to fork a separate process).

* bw/grep-recurse-submodules:
grep: recurse in-process using 'struct repository'
submodule: merge repo_read_gitmodules and gitmodules_config
submodule: check for unmerged .gitmodules outside of config parsing
submodule: check for unstaged .gitmodules outside of config parsing
submodule: remove fetch.recursesubmodules from submodule-config parsing
submodule: remove submodule.fetchjobs from submodule-config parsing
config: add config_from_gitmodules
cache.h: add GITMODULES_FILE macro
repository: have the_repository use the_index
repo_read_index: don't discard the index

Merge branch 'pw/sequence-rerere-autoupdate'Junio C Hamano Tue, 22 Aug 2017 17:29:00 +0000 (10:29 -0700)

Merge branch 'pw/sequence-rerere-autoupdate'

Commands like "git rebase" accepted the --rerere-autoupdate option
from the command line, but did not always use it. This has been
fixed.

* pw/sequence-rerere-autoupdate:
cherry-pick/revert: reject --rerere-autoupdate when continuing
cherry-pick/revert: remember --rerere-autoupdate
t3504: use test_commit
rebase -i: honor --rerere-autoupdate
rebase: honor --rerere-autoupdate
am: remember --rerere-autoupdate setting

Merge branch 'bw/push-options-recursively-to-submodules'Junio C Hamano Tue, 22 Aug 2017 17:29:00 +0000 (10:29 -0700)

Merge branch 'bw/push-options-recursively-to-submodules'

"git push --recurse-submodules $there HEAD:$target" was not
propagated down to the submodules, but now it is.

* bw/push-options-recursively-to-submodules:
submodule--helper: teach push-check to handle HEAD

Documentation/git-merge: explain --continueMichael J Gruber Mon, 21 Aug 2017 12:53:14 +0000 (14:53 +0200)

Documentation/git-merge: explain --continue

Currently, 'git merge --continue' is mentioned but not explained.

Explain it.

Signed-off-by: Michael J Gruber <git@grubix.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read-cache: avoid allocating every ondisk entry when... Kevin Willford Mon, 21 Aug 2017 21:24:32 +0000 (15:24 -0600)

read-cache: avoid allocating every ondisk entry when writing

When writing the index for each entry an ondisk struct will be
allocated and freed in ce_write_entry. We can do better by
using a ondisk struct on the stack for each entry.

This is accomplished by using a stack ondisk_cache_entry_extended
outside looping through the entries in do_write_index. Only the
fixed fields of this struct are used when writing and depending on
whether it is extended or not the flags2 field will be written.
The name field is not used and instead the cache_entry name field
is used directly when writing out the name. Because ce_write is
using a buffer and memcpy to fill the buffer before flushing to disk,
we don't have to worry about doing multiple ce_write calls.

Running the p0007-write-cache.sh tests would save anywhere
between 3-7% when the index had over a million entries with no
performance degradation on small repos.

Signed-off-by: Kevin Willford <kewillf@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read-cache: fix memory leak in do_write_indexKevin Willford Mon, 21 Aug 2017 21:24:31 +0000 (15:24 -0600)

read-cache: fix memory leak in do_write_index

The previous_name_buf was never getting released when there
was an error in ce_write_entry or allow was false and execution
was returned to the caller.

Signed-off-by: Kevin Willford <kewillf@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

perf: add test for writing the indexKevin Willford Mon, 21 Aug 2017 21:24:30 +0000 (15:24 -0600)

perf: add test for writing the index

A performance test for writing the index to be able to
determine if changes to allocating ondisk structure help.

Signed-off-by: Kevin Willford <kewillf@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert index_stream to struct object_idPatryk Obara Sun, 20 Aug 2017 20:09:31 +0000 (22:09 +0200)

sha1_file: convert index_stream to struct object_id

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert hash_sha1_file_literally to struct... Patryk Obara Sun, 20 Aug 2017 20:09:30 +0000 (22:09 +0200)

sha1_file: convert hash_sha1_file_literally to struct object_id

Convert all remaining callers as well.

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert index_fd to struct object_idPatryk Obara Sun, 20 Aug 2017 20:09:29 +0000 (22:09 +0200)

sha1_file: convert index_fd to struct object_id

Convert all remaining callers as well.

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert index_path to struct object_idPatryk Obara Sun, 20 Aug 2017 20:09:28 +0000 (22:09 +0200)

sha1_file: convert index_path to struct object_id

Convert all remaining callers as well.

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read-cache: convert to struct object_idPatryk Obara Sun, 20 Aug 2017 20:09:27 +0000 (22:09 +0200)

read-cache: convert to struct object_id

Replace hashcmp with oidcmp.

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/hash-object: convert to struct object_idPatryk Obara Sun, 20 Aug 2017 20:09:26 +0000 (22:09 +0200)

builtin/hash-object: convert to struct object_id

Signed-off-by: Patryk Obara <patryk.obara@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

vcs-svn: rename repo functions to "svn_repo"brian m. carlson Mon, 21 Aug 2017 00:00:18 +0000 (00:00 +0000)

vcs-svn: rename repo functions to "svn_repo"

There were several functions in the Subversion code that started with
"repo_". This namespace is also used by the Git struct repository code.
Rename these functions to start with "svn_repo" to avoid any future
conflicts.

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

vcs-svn: remove unused prototypesbrian m. carlson Mon, 21 Aug 2017 00:00:17 +0000 (00:00 +0000)

vcs-svn: remove unused prototypes

The Subversion code had prototypes for several functions which were not
ever defined or used. These functions all had names starting with
"repo_", some of which conflict with those in repository.h. To avoid
the conflict, remove those unused prototypes.

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

doc: fix typo in sendemail.identityJeff King Sun, 20 Aug 2017 09:46:57 +0000 (05:46 -0400)

doc: fix typo in sendemail.identity

Saying "the this" is an obvious typo. But while we're here,
let's polish the English on the second half of the sentence,
too.

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

doc/interpret-trailers: fix "the this" typoMartin Ågren Sun, 20 Aug 2017 09:40:09 +0000 (05:40 -0400)

doc/interpret-trailers: fix "the this" typo

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

Merge branch 'mg/format-ref-doc-fix' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:23 +0000 (23:07 -0700)

Merge branch 'mg/format-ref-doc-fix' into next

Doc fix.

* mg/format-ref-doc-fix:
Documentation/git-for-each-ref: clarify peeling of tags for --format
Documentation: use proper wording for ref format strings

Merge branch 'sb/submodule-parallel-update' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:23 +0000 (23:07 -0700)

Merge branch 'sb/submodule-parallel-update' into next

Code clean-up.

* sb/submodule-parallel-update:
submodule.sh: remove unused variable

Merge branch 'jc/diff-sane-truncate-no-more' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:21 +0000 (23:07 -0700)

Merge branch 'jc/diff-sane-truncate-no-more' into next

Code clean-up.

* jc/diff-sane-truncate-no-more:
diff: retire sane_truncate_fn

Merge branch 'hv/t5526-andand-chain-fix' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:21 +0000 (23:07 -0700)

Merge branch 'hv/t5526-andand-chain-fix' into next

Test fix.

* hv/t5526-andand-chain-fix:
t5526: fix some broken && chains

Merge branch 'as/grep-quiet-no-match-exit-code-fix... Junio C Hamano Sun, 20 Aug 2017 06:07:20 +0000 (23:07 -0700)

Merge branch 'as/grep-quiet-no-match-exit-code-fix' into next

"git grep -L" and "git grep --quiet -L" reported different exit
codes; this has been corrected.

* as/grep-quiet-no-match-exit-code-fix:
git-grep: correct exit code with --quiet and -L

Merge branch 'kw/commit-keep-index-when-pre-commit... Junio C Hamano Sun, 20 Aug 2017 06:07:19 +0000 (23:07 -0700)

Merge branch 'kw/commit-keep-index-when-pre-commit-is-not-run' into next

"git commit" used to discard the index and re-read from the filesystem
just in case the pre-commit hook has updated it in the middle; this
has been optimized out when we know we do not run the pre-commit hook.

* kw/commit-keep-index-when-pre-commit-is-not-run:
commit: skip discarding the index if there is no pre-commit hook

Merge branch 'jt/diff-color-move-fix' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:18 +0000 (23:07 -0700)

Merge branch 'jt/diff-color-move-fix' into next

A handful of bugfixes and an improvement to "diff --color-moved".

* jt/diff-color-move-fix:
diff: define block by number of alphanumeric chars
diff: respect MIN_BLOCK_LENGTH for last block
diff: avoid redundantly clearing a flag

Merge branch 'cc/subprocess-handshake-missing-capabilit... Junio C Hamano Sun, 20 Aug 2017 06:07:18 +0000 (23:07 -0700)

Merge branch 'cc/subprocess-handshake-missing-capabilities' into next

When handshake with a subprocess filter notices that the process
asked for an unknown capability, Git did not report what program
the offending subprocess was running. This has been corrected.

* cc/subprocess-handshake-missing-capabilities:
sub-process: print the cmd when a capability is unsupported

Merge branch 'jk/trailers-parse' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:18 +0000 (23:07 -0700)

Merge branch 'jk/trailers-parse' into next

"git interpret-trailers" has been taught a "--parse" and a few
other options to make it easier for scripts to grab existing
trailer lines from a commit log message.

* jk/trailers-parse:
pretty: support normalization options for %(trailers)
t4205: refactor %(trailers) tests
pretty: move trailer formatting to trailer.c
interpret-trailers: add --parse convenience option
interpret-trailers: add an option to unfold values
interpret-trailers: add an option to show only existing trailers
interpret-trailers: add an option to show only the trailers
trailer: put process_trailers() options into a struct

Merge branch 'sb/sha1-file-cleanup' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:18 +0000 (23:07 -0700)

Merge branch 'sb/sha1-file-cleanup' into next

Code clean-up.

* sb/sha1-file-cleanup:
sha1_file: make read_info_alternates static

Merge branch 'rs/t1002-do-not-use-sum' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:17 +0000 (23:07 -0700)

Merge branch 'rs/t1002-do-not-use-sum' into next

Test simplification.

* rs/t1002-do-not-use-sum:
t1002: stop using sum(1)

Merge branch 'pb/trailers-from-command-line' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:16 +0000 (23:07 -0700)

Merge branch 'pb/trailers-from-command-line' into next

"git interpret-trailers" learned to take the trailer specifications
from the command line that overrides the configured values.

* pb/trailers-from-command-line:
interpret-trailers: fix documentation typo
interpret-trailers: add options for actions
trailers: introduce struct new_trailer_item
trailers: export action enums and corresponding lookup functions

Merge branch 'kd/stash-with-bash-4.4' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:16 +0000 (23:07 -0700)

Merge branch 'kd/stash-with-bash-4.4' into next

bash 4.4 or newer gave a warning on NUL byte in command
substitution done in "git stash"; this has been squelched.

* kd/stash-with-bash-4.4:
stash: prevent warning about null bytes in input

Merge branch 'ah/doc-empty-string-is-false' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:15 +0000 (23:07 -0700)

Merge branch 'ah/doc-empty-string-is-false' into next

Doc update.

* ah/doc-empty-string-is-false:
doc: clarify "config --bool" behaviour with empty string

Merge branch 'rs/object-id' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:14 +0000 (23:07 -0700)

Merge branch 'rs/object-id' into next

Conversion from uchar[20] to struct object_id continues.

* rs/object-id:
tree-walk: convert fill_tree_descriptor() to object_id

Merge branch 'kw/rebase-progress' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:14 +0000 (23:07 -0700)

Merge branch 'kw/rebase-progress' into next

"git rebase", especially when it is run by mistake and ends up
trying to replay many changes, spent long time in silence. The
command has been taught to show progress report when it spends
long time preparing these many changes to replay (which would give
the user a chance to abort with ^C).

* kw/rebase-progress:
rebase: turn on progress option by default for format-patch
format-patch: have progress option while generating patches

Merge branch 'ks/prepare-commit-msg-sample-fix' into... Junio C Hamano Sun, 20 Aug 2017 06:07:14 +0000 (23:07 -0700)

Merge branch 'ks/prepare-commit-msg-sample-fix' into next

An "oops" fix to a topic that is already in 'master'.

* ks/prepare-commit-msg-sample-fix:
hook: use correct logical variable

Merge branch 'nm/stash-untracked' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:14 +0000 (23:07 -0700)

Merge branch 'nm/stash-untracked' into next

"git stash -u" used the contents of the committed version of the
".gitignore" file to decide which paths are ignored, even when the
file has local changes. The command has been taught to instead use
the locally modified contents.

* nm/stash-untracked:
stash: clean untracked files before reset

Merge branch 'jt/sha1-file-cleanup' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:14 +0000 (23:07 -0700)

Merge branch 'jt/sha1-file-cleanup' into next

Preparatory code clean-up.

* jt/sha1-file-cleanup:
sha1_file: remove read_packed_sha1()
sha1_file: set whence in storage-specific info fn

Merge branch 'lg/merge-signoff' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:13 +0000 (23:07 -0700)

Merge branch 'lg/merge-signoff' into next

"git merge" learned a "--signoff" option to add the Signed-off-by:
trailer with the committer's name.

* lg/merge-signoff:
merge: add a --signoff flag

Merge branch 'sb/diff-color-move' into nextJunio C Hamano Sun, 20 Aug 2017 06:07:13 +0000 (23:07 -0700)

Merge branch 'sb/diff-color-move' into next

"git diff" has been taught to optionally paint new lines that are
the same as deleted lines elsewhere differently from genuinely new
lines.

* sb/diff-color-move: (25 commits)
diff: document the new --color-moved setting
diff.c: add dimming to moved line detection
diff.c: color moved lines differently, plain mode
diff.c: color moved lines differently
diff.c: buffer all output if asked to
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
diff.c: convert word diffing to use emit_diff_symbol
diff.c: convert show_stats to use emit_diff_symbol
diff.c: convert emit_binary_diff_body to use emit_diff_symbol
submodule.c: migrate diff output to use emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
diff.c: migrate emit_line_checked to use emit_diff_symbol
diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
...

stash: add a test for stashing in a detached stateJoel Teichroeb Sat, 19 Aug 2017 20:13:26 +0000 (13:13 -0700)

stash: add a test for stashing in a detached state

All that we are really testing here is that the message is
correct when we are not on any branch. All other functionality is
already tested elsewhere.

Signed-off-by: Joel Teichroeb <joel@teichroeb.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

stash: add a test for when apply fails during stash... Joel Teichroeb Sat, 19 Aug 2017 20:13:25 +0000 (13:13 -0700)

stash: add a test for when apply fails during stash branch

If the return value of merge recursive is not checked, the stash could end
up being dropped even though it was not applied properly

Signed-off-by: Joel Teichroeb <joel@teichroeb.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

stash: add a test for stash create with no filesJoel Teichroeb Sat, 19 Aug 2017 20:13:24 +0000 (13:13 -0700)

stash: add a test for stash create with no files

Ensure the command suceeds and outputs nothing

Signed-off-by: Joel Teichroeb <joel@teichroeb.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

progress: simplify "delayed" progress APIJunio C Hamano Sat, 19 Aug 2017 17:39:41 +0000 (10:39 -0700)

progress: simplify "delayed" progress API

We used to expose the full power of the delayed progress API to the
callers, so that they can specify, not just the message to show and
expected total amount of work that is used to compute the percentage
of work performed so far, the percent-threshold parameter P and the
delay-seconds parameter N. The progress meter starts to show at N
seconds into the operation only if we have not yet completed P per-cent
of the total work.

Most callers used either (0%, 2s) or (50%, 1s) as (P, N), but there
are oddballs that chose more random-looking values like 95%.

For a smoother workload, (50%, 1s) would allow us to start showing
the progress meter earlier than (0%, 2s), while keeping the chance
of not showing progress meter for long running operation the same as
the latter. For a task that would take 2s or more to complete, it
is likely that less than half of it would complete within the first
second, if the workload is smooth. But for a spiky workload whose
earlier part is easier, such a setting is likely to fail to show the
progress meter entirely and (0%, 2s) is more appropriate.

But that is merely a theory. Realistically, it is of dubious value
to ask each codepath to carefully consider smoothness of their
workload and specify their own setting by passing two extra
parameters. Let's simplify the API by dropping both parameters and
have everybody use (0%, 2s).

Oh, by the way, the percent-threshold parameter and the structure
member were consistently misspelled, which also is now fixed ;-)

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

apply: file commited with CRLF should roundtrip diff... Torsten Bögershausen Sat, 19 Aug 2017 11:28:01 +0000 (13:28 +0200)

apply: file commited with CRLF should roundtrip diff and apply

When a file had been commited with CRLF but now .gitattributes say
"* text=auto" (or core.autocrlf is true), the following does not
roundtrip, `git apply` fails:

printf "Added line\r\n" >>file &&
git diff >patch &&
git checkout -- . &&
git apply patch

Before applying the patch, the file from working tree is converted
into the index format (clean filter, CRLF conversion, ...). Here,
when commited with CRLF, the line endings should not be converted.

Note that `git apply --index` or `git apply --cache` doesn't call
convert_to_git() because the source material is already in index
format.

Analyze the patch if there is a) any context line with CRLF, or b)
if any line with CRLF is to be removed. In this case the patch file
`patch` has mixed line endings, for a) it looks like this:

diff --git a/one b/one
index 533790e..c30dea8 100644
--- a/one
+++ b/one
@@ -1 +1,2 @@
a\r
+b\r

And for b) it looks like this:

diff --git a/one b/one
index 533790e..485540d 100644
--- a/one
+++ b/one
@@ -1 +1 @@
-a\r
+b\r

If `git apply` detects that the patch itself has CRLF, (look at the
line " a\r" or "-a\r" above), the new flag crlf_in_old is set in
"struct patch" and two things will happen:

- read_old_data() will not convert CRLF into LF by calling
convert_to_git(..., SAFE_CRLF_KEEP_CRLF);
- The WS_CR_AT_EOL bit is set in the "white space rule",
CRLF are no longer treated as white space.

While at there, make it clear that read_old_data() in apply.c knows
what it wants convert_to_git() to do with respect to CRLF. In fact,
this codepath is about applying a patch to a file in the filesystem,
which may not exist in the index, or may exist but may not match
what is recorded in the index, or in the extreme case, we may not
even be in a Git repository. If convert_to_git() peeked at the
index while doing its work, it *would* be a bug.

Pass NULL instead of &the_index to convert_to_git() to make sure we
catch future bugs to clarify this.

Update the test in t4124: split one test case into 3:

- Detect the " a\r" line in the patch
- Detect the "-a\r" line in the patch
- Use LF in repo and CLRF in the worktree.

Reported-by: Anthony Sottile <asottile@umich.edu>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: remove unused inline function single_parent()René Scharfe Sat, 19 Aug 2017 08:12:45 +0000 (10:12 +0200)

commit: remove unused inline function single_parent()

53b2c823f6 (revision walker: mini clean-up) added the function in 2007,
but it was never used, so we should be able to get rid of it now.

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

archive: don't queue excluded directoriesRené Scharfe Sat, 19 Aug 2017 05:32:37 +0000 (07:32 +0200)

archive: don't queue excluded directories

Reject directories with the attribute export-ignore already while
queuing them. This prevents read_tree_recursive() from descending into
them and this avoids write_archive_entry() rejecting them later on,
which queue_or_write_archive_entry() is not prepared for.

Borrow the existing strbuf to build the full path to avoid string
copies and extra allocations; just make sure we restore the original
value before moving on.

Keep checking any other attributes in write_archive_entry() as before,
but avoid checking them twice.

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

archive: factor out helper functions for handling attri... René Scharfe Sat, 19 Aug 2017 05:29:43 +0000 (07:29 +0200)

archive: factor out helper functions for handling attributes

Add helpers for accessing attributes that encapsulate the details of how
to retrieve their values.

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

t5001: add tests for export-ignore attributes and exclu... René Scharfe Sat, 19 Aug 2017 05:28:54 +0000 (07:28 +0200)

t5001: add tests for export-ignore attributes and exclude pathspecs

Demonstrate mishandling of the attribute export-ignore by git archive
when used together with pathspecs. Wildcard pathspecs can even cause it
to abort. And a directory excluded without a wildcard is still included
as an empty folder in the archive.

Test-case-by: David Adam <zanchey@ucc.gu.uwa.edu.au>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sb/retire-t1200' into nextJunio C Hamano Fri, 18 Aug 2017 20:53:02 +0000 (13:53 -0700)

Merge branch 'sb/retire-t1200' into next

A test script that outlived its usefulness has been removed.

* sb/retire-t1200:
t1200: remove t1200-tutorial.sh

Merge branch 'rs/win32-syslog-leakfix' into nextJunio C Hamano Fri, 18 Aug 2017 20:53:02 +0000 (13:53 -0700)

Merge branch 'rs/win32-syslog-leakfix' into next

Memory leak in an error codepath has been plugged.

* rs/win32-syslog-leakfix:
win32: plug memory leak on realloc() failure in syslog()

Merge branch 'rs/unpack-entry-leakfix' into nextJunio C Hamano Fri, 18 Aug 2017 20:53:02 +0000 (13:53 -0700)

Merge branch 'rs/unpack-entry-leakfix' into next

Memory leak in an error codepath has been plugged.

* rs/unpack-entry-leakfix:
sha1_file: release delta_stack on error in unpack_entry()

Merge branch 'rs/strbuf-getwholeline-fix' into nextJunio C Hamano Fri, 18 Aug 2017 20:53:01 +0000 (13:53 -0700)

Merge branch 'rs/strbuf-getwholeline-fix' into next

A helper function to read a single whole line into strbuf
mistakenly triggered OOM error at EOF under certain conditions,
which has been fixed.

* rs/strbuf-getwholeline-fix:
strbuf: clear errno before calling getdelim(3)

Merge branch 'rs/merge-microcleanup' into nextJunio C Hamano Fri, 18 Aug 2017 20:53:00 +0000 (13:53 -0700)

Merge branch 'rs/merge-microcleanup' into next

Code clean-up.

* rs/merge-microcleanup:
merge: use skip_prefix()