summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-12-30Merge tag 'v2.25.0-rc0' into git-po-masterLibravatar Jiang Xin518-6607/+17382
Git 2.25-rc0 * tag 'v2.25.0-rc0': (531 commits) Git 2.25-rc0 sparse-checkout: improve OS ls compatibility dir.c: use st_add3() for allocation size dir: consolidate similar code in treat_directory() dir: synchronize treat_leading_path() and read_directory_recursive() dir: fix checks on common prefix directory t4015: improve coverage of function context test commit: forbid --pathspec-from-file --all t3434: mark successful test as such notes.h: fix typos in comment t6030: don't create unused file t5580: don't create unused file t3501: don't create unused file bisect--helper: convert `*_warning` char pointers to char arrays. The sixth batch fix-typo: consecutive-word duplications Makefile: drop GEN_HDRS built-in add -p: show helpful hint when nothing can be staged built-in add -p: only show the applicable parts of the help text built-in add -p: implement the 'q' ("quit") command ...
2019-12-27l10n: Update Catalan translationLibravatar Jordi Mas1-8/+8
Signed-off-by: Jordi Mas <jmas@softcatala.org>
2019-12-25Git 2.25-rc0Libravatar Junio C Hamano2-6/+27
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-25Merge branch 'en/fill-directory-fixes'Libravatar Junio C Hamano3-51/+354
Assorted fixes to the directory traversal API. * en/fill-directory-fixes: dir.c: use st_add3() for allocation size dir: consolidate similar code in treat_directory() dir: synchronize treat_leading_path() and read_directory_recursive() dir: fix checks on common prefix directory dir: break part of read_directory_recursive() out for reuse dir: exit before wildcard fall-through if there is no wildcard dir: remove stray quote character in comment Revert "dir.c: make 'git-status --ignored' work within leading directories" t3011: demonstrate directory traversal failures
2019-12-25Merge branch 'rs/test-cleanup'Libravatar Junio C Hamano5-5/+4
Test cleanup. * rs/test-cleanup: t6030: don't create unused file t5580: don't create unused file t3501: don't create unused file t7004: don't create unused file t4256: don't create unused file
2019-12-25Merge branch 'mr/bisect-save-pointer-to-const-string'Libravatar Junio C Hamano1-2/+2
Code cleanup. * mr/bisect-save-pointer-to-const-string: bisect--helper: convert `*_warning` char pointers to char arrays.
2019-12-25Merge branch 'rs/xdiff-ignore-ws-w-func-context'Libravatar Junio C Hamano1-0/+23
Extend test coverage for a recent fix. * rs/xdiff-ignore-ws-w-func-context: t4015: improve coverage of function context test
2019-12-25Merge branch 'js/add-p-in-c'Libravatar Junio C Hamano8-19/+1464
The effort to move "git-add--interactive" to C continues. * js/add-p-in-c: built-in add -p: show helpful hint when nothing can be staged built-in add -p: only show the applicable parts of the help text built-in add -p: implement the 'q' ("quit") command built-in add -p: implement the '/' ("search regex") command built-in add -p: implement the 'g' ("goto") command built-in add -p: implement hunk editing strbuf: add a helper function to call the editor "on an strbuf" built-in add -p: coalesce hunks after splitting them built-in add -p: implement the hunk splitting feature built-in add -p: show different prompts for mode changes and deletions built-in app -p: allow selecting a mode change as a "hunk" built-in add -p: handle deleted empty files built-in add -p: support multi-file diffs built-in add -p: offer a helpful error message when hunk navigation failed built-in add -p: color the prompt and the help text built-in add -p: adjust hunk headers as needed built-in add -p: show colored hunks by default built-in add -i: wire up the new C code for the `patch` command built-in add -i: start implementing the `patch` functionality in C
2019-12-25Merge branch 'jc/drop-gen-hdrs'Libravatar Junio C Hamano1-3/+2
Code cleanup. * jc/drop-gen-hdrs: Makefile: drop GEN_HDRS
2019-12-25Merge branch 'ja/doc-markup-cleanup'Libravatar Junio C Hamano3-127/+136
Doc cleanup. * ja/doc-markup-cleanup: doc: indent multi-line items in list doc: remove non pure ASCII characters
2019-12-25Merge branch 'rs/ref-read-cleanup'Libravatar Junio C Hamano2-4/+3
Code cleanup. * rs/ref-read-cleanup: remote: pass NULL to read_ref_full() because object ID is not needed refs: pass NULL to refs_read_ref_full() because object ID is not needed
2019-12-25Merge branch 'rb/p4-lfs'Libravatar Junio C Hamano1-2/+8
"git p4" used to ignore lfs.storage configuration variable, which has been corrected. * rb/p4-lfs: git-p4: honor lfs.storage configuration variable
2019-12-25Merge branch 'pb/submodule-doc-xref'Libravatar Junio C Hamano1-1/+1
Doc update. * pb/submodule-doc-xref: gitmodules: link to gitsubmodules guide
2019-12-25Merge branch 'mr/bisect-use-after-free'Libravatar Junio C Hamano1-3/+4
Use-after-free fix. * mr/bisect-use-after-free: bisect--helper: avoid use-after-free
2019-12-25Merge branch 'ln/userdiff-elixir'Libravatar Junio C Hamano1-1/+2
Hotfix. * ln/userdiff-elixir: userdiff: remove empty subexpression from elixir regex
2019-12-25Merge branch 'ds/sparse-cone'Libravatar Junio C Hamano20-48/+1376
Management of sparsely checked-out working tree has gained a dedicated "sparse-checkout" command. * ds/sparse-cone: (21 commits) sparse-checkout: improve OS ls compatibility sparse-checkout: respect core.ignoreCase in cone mode sparse-checkout: check for dirty status sparse-checkout: update working directory in-process for 'init' sparse-checkout: cone mode should not interact with .gitignore sparse-checkout: write using lockfile sparse-checkout: use in-process update for disable subcommand sparse-checkout: update working directory in-process sparse-checkout: sanitize for nested folders unpack-trees: add progress to clear_ce_flags() unpack-trees: hash less in cone mode sparse-checkout: init and set in cone mode sparse-checkout: use hashmaps for cone patterns sparse-checkout: add 'cone' mode trace2: add region in clear_ce_flags sparse-checkout: create 'disable' subcommand sparse-checkout: add '--stdin' option to set subcommand sparse-checkout: 'set' subcommand clone: add --sparse mode sparse-checkout: create 'init' subcommand ...
2019-12-25Merge branch 'sg/name-rev-wo-recursion'Libravatar Junio C Hamano2-66/+153
Redo "git name-rev" to avoid recursive calls. * sg/name-rev-wo-recursion: name-rev: cleanup name_ref() name-rev: eliminate recursion in name_rev() name-rev: use 'name->tip_name' instead of 'tip_name' name-rev: drop name_rev()'s 'generation' and 'distance' parameters name-rev: restructure creating/updating 'struct rev_name' instances name-rev: restructure parsing commits and applying date cutoff name-rev: pull out deref handling from the recursion name-rev: extract creating/updating a 'struct name_rev' into a helper t6120: add a test to cover inner conditions in 'git name-rev's name_rev() name-rev: use sizeof(*ptr) instead of sizeof(type) in allocation name-rev: avoid unnecessary cast in name_ref() name-rev: use strbuf_strip_suffix() in get_rev_name() t6120-describe: modernize the 'check_describe' helper t6120-describe: correct test repo history graph in comment
2019-12-25Merge branch 'ra/t5150-depends-on-perl'Libravatar Junio C Hamano1-0/+6
Some Porcelain commands are written in Perl, and tests on them are expected not to work when the platform lacks a working perl. * ra/t5150-depends-on-perl: t5150: skip request-pull test if Perl is disabled
2019-12-25Merge branch 'dl/format-patch-notes-config-fixup'Libravatar Junio C Hamano7-39/+125
"git format-patch" can take a set of configured format.notes values to specify which notes refs to use in the log message part of the output. The behaviour of this was not consistent with multiple --notes command line options, which has been corrected. * dl/format-patch-notes-config-fixup: notes.h: fix typos in comment notes: break set_display_notes() into smaller functions config/format.txt: clarify behavior of multiple format.notes format-patch: move git_config() before repo_init_revisions() format-patch: use --notes behavior for format.notes notes: extract logic into set_display_notes() notes: create init_display_notes() helper notes: rename to load_display_notes()
2019-12-25Merge branch 'am/pathspec-f-f-checkout'Libravatar Junio C Hamano9-42/+548
A few more commands learned the "--pathspec-from-file" command line option. * am/pathspec-f-f-checkout: checkout, restore: support the --pathspec-from-file option doc: restore: synchronize <pathspec> description doc: checkout: synchronize <pathspec> description doc: checkout: fix broken text reference doc: checkout: remove duplicate synopsis add: support the --pathspec-from-file option cmd_add: prepare for next patch
2019-12-25Merge branch 'am/pathspec-from-file'Libravatar Junio C Hamano2-0/+9
An earlier series to teach "--pathspec-from-file" to "git commit" forgot to make the option incompatible with "--all", which has been corrected. * am/pathspec-from-file: commit: forbid --pathspec-from-file --all
2019-12-20sparse-checkout: improve OS ls compatibilityLibravatar Ed Maste1-14/+22
On FreeBSD, when executed by root ls enables the '-A' option: -A Include directory entries whose names begin with a dot (`.') except for . and ... Automatically set for the super-user unless -I is specified. As a result the .git directory appeared in the output when run as root. Simulate no-dotfile ls behaviour using a shell glob. Helped-by: Eric Wong <e@80x24.org> Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Ed Maste <emaste@FreeBSD.org> Acked-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-20dir.c: use st_add3() for allocation sizeLibravatar Junio C Hamano1-1/+1
When preparing a manufactured dirent instance, we add a length of path to the size of struct to decide how many bytes to allocate. Make sure this addition does not wrap-around to cause us underallocate. Suggested-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-19dir: consolidate similar code in treat_directory()Libravatar Elijah Newren1-11/+7
Both the DIR_SKIP_NESTED_GIT and DIR_NO_GITLINKS cases were checking for whether a path was actually a nonbare repository. That code could be shared, with just the result of how to act differing between the two cases. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-19dir: synchronize treat_leading_path() and read_directory_recursive()Libravatar Elijah Newren3-2/+32
Our optimization to avoid calling into read_directory_recursive() when all pathspecs have a common leading directory mean that we need to match the logic that read_directory_recursive() would use if we had just called it from the root. Since it does more than call treat_path() we need to copy that same logic. Alternatively, we could try to change treat_path to return path_recurse for an untracked directory under the given special circumstances that this logic checks for, but a simple switch results in many test failures such as 'git clean -d' not wiping out untracked but empty directories. To work around that, we'd need the caller of treat_path to check for path_recurse and sometimes special case it into path_untracked. In other words, we'd still have extra logic in both places. Needing to duplicate logic like this means it is guaranteed someone will eventually need to make further changes and forget to update both locations. It is tempting to just nuke the leading_directory special casing to avoid such bugs and simplify the code, but unpack_trees' verify_clean_subdirectory() also calls read_directory() and does so with a non-empty leading path, so I'm hesitant to try to restructure further. Add obnoxious warnings to treat_leading_path() and read_directory_recursive() to try to warn people of such problems. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-19dir: fix checks on common prefix directoryLibravatar Elijah Newren2-14/+59
Many years ago, the directory traversing logic had an optimization that would always recurse into any directory that was a common prefix of all the pathspecs without walking the leading directories to get down to the desired directory. Thus, git ls-files -o .git/ # case A would notice that .git/ was a common prefix of all pathspecs (since it is the only pathspec listed), and then traverse into it and start showing unknown files under that directory. Unfortunately, .git/ is not a directory we should be traversing into, which made this optimization problematic. This also affected cases like git ls-files -o --exclude-standard t/ # case B where t/ was in the .gitignore file and thus isn't interesting and shouldn't be recursed into. It also affected cases like git ls-files -o --directory untracked_dir/ # case C where untracked_dir/ is indeed untracked and thus interesting, but the --directory flag means we only want to show the directory itself, not recurse into it and start listing untracked files below it. The case B class of bugs were noted and fixed in commits 16e2cfa90993 ("read_directory(): further split treat_path()", 2010-01-08) and 48ffef966c76 ("ls-files: fix overeager pathspec optimization", 2010-01-08), with the idea being that we first wanted to check whether the common prefix was interesting. The former patch noted that treat_path() couldn't be used when checking the common prefix because treat_path() requires a dir_entry() and we haven't read any directories at the point we are checking the common prefix. So, that patch split treat_one_path() out of treat_path(). The latter patch then created a new treat_leading_path() which duplicated by hand the bits of treat_path() that couldn't be broken out and then called treat_one_path() for the remainder. There were three problems with this approach: * The duplicated logic in treat_leading_path() accidentally missed the check for special paths (such as is_dot_or_dotdot and matching ".git"), causing case A types of bugs to continue to be an issue. * The treat_leading_path() logic assumed we should traverse into anything where path_treatment was not path_none, i.e. it perpetuated class C types of bugs. * It meant we had split logic that needed to kept in sync, running the risk that people introduced new inconsistencies (such as in commit be8a84c52669, which we reverted earlier in this series, or in commit df5bcdf83ae which we'll fix in a subsequent commit) Fix most these problems by making treat_leading_path() not only loop over each leading path component, but calling treat_path() directly on each. To do so, we have to create a synthetic dir_entry, but that only takes a few lines. Then, pay attention to the path_treatment result we get from treat_path() and don't treat path_excluded, path_untracked, and path_recurse all the same as path_recurse. This leaves one remaining problem, the new inconsistency from commit df5bcdf83ae. That will be addressed in a subsequent commit. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-19t4015: improve coverage of function context testLibravatar René Scharfe1-0/+23
Add a test that includes an actual function line in the test file to check if context is expanded to include the whole function, and add an ignored change before function context to check if that one stays hidden while the originally ignored change within function context is shown. This differs from the existing test, which is concerned with the case where there is no function line at all in the file (and we might look past the beginning of the file). Helped-by: Jeff King <peff@peff.net> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-18commit: forbid --pathspec-from-file --allLibravatar Alexandr Miloslavskiy2-0/+9
I forgot this in my previous patch `--pathspec-from-file` for `git commit` [1]. When both `--pathspec-from-file` and `--all` were specified, `--all` took precedence and `--pathspec-from-file` was ignored. Before `--pathspec-from-file` was implemented, this case was prevented by this check in `parse_and_validate_options()` : die(_("paths '%s ...' with -a does not make sense"), argv[0]); It is unfortunate that these two cases are disconnected. This came as result of how the code was laid out before my patches, where `pathspec` is parsed outside of `parse_and_validate_options()`. This branch is already full of refactoring patches and I did not dare to go for another one. Fix by mirroring `die()` for `--pathspec-from-file` as well. [1] Commit e440fc58 ("commit: support the --pathspec-from-file option" 2019-11-19) Reported-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-18t3434: mark successful test as suchLibravatar Elijah Newren1-1/+1
t3434.3 was fixed by commit 917d0d6234be ("Merge branch 'js/rebase-r-safer-label'", 2019-12-05). t3434 did not exist in js/rebase-r-safer-label, so could not have marked the test as fixed, and it was probably not noticed that the merge fixed this test. Mark it as fixed now. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-18notes.h: fix typos in commentLibravatar Denton Liu1-2/+2
In 1d7297513d (notes: break set_display_notes() into smaller functions, 2019-12-11), we introduced a comment which had a couple of typos. In the first typo, we referenced 'enable_default_display_notes' instead of 'enable_ref_display_notes'. In the second typo, we wrote "is a points to" instead of "is a pointer to". Correct both of these typos. Reported-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-18t6030: don't create unused fileLibravatar René Scharfe1-1/+1
my_bisect_log3.txt was added by c9c4e2d5a2 (bisect: only check merge bases when needed, 2008-08-22), but hasn't been used then and since. Get rid of it. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-18t5580: don't create unused fileLibravatar René Scharfe1-1/+1
The file "out" was introduced by 13b57da833 (mingw: verify that paths are not mistaken for remote nicknames, 2017-05-29), but has not actually been used then and since. Get rid of it. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-18t3501: don't create unused fileLibravatar René Scharfe1-1/+1
The file "out" became unused with fd53b7ffd1 (merge-recursive: improve add_cacheinfo error handling, 2018-04-19); get rid of it. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-17bisect--helper: convert `*_warning` char pointers to char arrays.Libravatar Tanushree Tumane1-2/+2
Instead of using a pointer that points at a constant string, just give name directly to the constant string; this way, we do not have to allocate a pointer variable in addition to the string we want to use. Let's convert `need_bad_and_good_revision_warning` and `need_bisect_start_warning` char pointers to char arrays. Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Tanushree Tumane <tanushreetumane@gmail.com> Signed-off-by: Miriam Rubio <mirucam@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-16The sixth batchLibravatar Junio C Hamano1-0/+29
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-12-16Merge branch 'rs/patch-id-use-oid-to-hex'Libravatar Junio C Hamano1-7/+2
Code cleanup. * rs/patch-id-use-oid-to-hex: patch-id: use oid_to_hex() to print multiple object IDs
2019-12-16Merge branch 'rs/commit-export-env-simplify'Libravatar Junio C Hamano1-1/+1
Code cleanup. * rs/commit-export-env-simplify: commit: use strbuf_add() to add a length-limited string
2019-12-16Merge branch 'rs/archive-zip-code-cleanup'Libravatar Junio C Hamano1-9/+14
Code cleanup. * rs/archive-zip-code-cleanup: archive-zip: use enum for compression method
2019-12-16Merge branch 'js/t3404-indent-fix'Libravatar Junio C Hamano1-5/+5
Test cleanup. * js/t3404-indent-fix: t3404: fix indentation
2019-12-16Merge branch 'dr/branch-usage-casefix'Libravatar Junio C Hamano1-1/+1
Message fix. * dr/branch-usage-casefix: l10n: minor case fix in 'git branch' '--unset-upstream' description
2019-12-16Merge branch 'sg/t9300-robustify'Libravatar Junio C Hamano1-4/+16
The test on "fast-import" used to get stuck when "fast-import" died in the middle. * sg/t9300-robustify: t9300-fast-import: don't hang if background fast-import exits too early t9300-fast-import: store the PID in a variable instead of pidfile
2019-12-16Merge branch 'js/add-i-a-bit-more-tests'Libravatar Junio C Hamano3-11/+97
Test coverage update in preparation for further work on "git add -i". * js/add-i-a-bit-more-tests: apply --allow-overlap: fix a corner case git add -p: use non-zero exit code when the diff generation failed t3701: verify that the diff.algorithm config setting is handled t3701: verify the shown messages when nothing can be added t3701: add a test for the different `add -p` prompts t3701: avoid depending on the TTY prerequisite t3701: add a test for advanced split-hunk editing
2019-12-16Merge branch 'dl/range-diff-with-notes'Libravatar Junio C Hamano4-6/+7
Code clean-up. * dl/range-diff-with-notes: range-diff: clear `other_arg` at end of function range-diff: mark pointers as const t3206: fix incorrect test name
2019-12-16Merge branch 'hw/doc-in-header'Libravatar Junio C Hamano48-2452/+1931
* hw/doc-in-header: trace2: move doc to trace2.h submodule-config: move doc to submodule-config.h tree-walk: move doc to tree-walk.h trace: move doc to trace.h run-command: move doc to run-command.h parse-options: add link to doc file in parse-options.h credential: move doc to credential.h argv-array: move doc to argv-array.h cache: move doc to cache.h sigchain: move doc to sigchain.h pathspec: move doc to pathspec.h revision: move doc to revision.h attr: move doc to attr.h refs: move doc to refs.h remote: move doc to remote.h and refspec.h sha1-array: move doc to sha1-array.h merge: move doc to ll-merge.h graph: move doc to graph.h and graph.c dir: move doc to dir.h diff: move doc to diff.h and diffcore.h
2019-12-16Merge branch 'rs/xdiff-ignore-ws-w-func-context'Libravatar Junio C Hamano2-5/+18
The "diff" machinery learned not to lose added/removed blank lines in the context when --ignore-blank-lines and --function-context are used at the same time. * rs/xdiff-ignore-ws-w-func-context: xdiff: unignore changes in function context
2019-12-16Merge branch 'dl/rebase-with-autobase'Libravatar Junio C Hamano5-11/+26
"git rebase" did not work well when format.useAutoBase configuration variable is set, which has been corrected. * dl/rebase-with-autobase: rebase: fix format.useAutoBase breakage format-patch: teach --no-base t4014: use test_config() format-patch: fix indentation t3400: demonstrate failure with format.useAutoBase
2019-12-16Merge branch 'dl/test-cleanup'Libravatar Junio C Hamano12-323/+425
Test cleanup. * dl/test-cleanup: (26 commits) t7700: stop losing return codes of git commands t7700: make references to SHA-1 generic t7700: replace egrep with grep t7700: consolidate code into test_has_duplicate_object() t7700: consolidate code into test_no_missing_in_packs() t7700: s/test -f/test_path_is_file/ t7700: move keywords onto their own line t7700: remove spaces after redirect operators t7700: drop redirections to /dev/null t7501: stop losing return codes of git commands t7501: remove spaces after redirect operators t5703: stop losing return codes of git commands t5703: simplify one-time-sed generation logic t5317: use ! grep to check for no matching lines t5317: stop losing return codes of git commands t4138: stop losing return codes of git commands t4015: use test_write_lines() t4015: stop losing return codes of git commands t3600: comment on inducing SIGPIPE in `git rm` t3600: stop losing return codes of git commands ...
2019-12-16Merge branch 'cs/store-packfiles-in-hashmap'Libravatar Junio C Hamano4-9/+52
In a repository with many packfiles, the cost of the procedure that avoids registering the same packfile twice was unnecessarily high by using an inefficient search algorithm, which has been corrected. * cs/store-packfiles-in-hashmap: packfile.c: speed up loading lots of packfiles
2019-12-16Merge branch 'js/builtin-add-i-cmds'Libravatar Junio C Hamano1-59/+560
"git add -i" that is getting rewritten in C has been extended to cover subcommands other than the "patch". * js/builtin-add-i-cmds: built-in add -i: offer the `quit` command built-in add -i: re-implement the `diff` command built-in add -i: implement the `patch` command built-in add -i: re-implement `add-untracked` in C built-in add -i: re-implement `revert` in C built-in add -i: implement the `update` command built-in add -i: prepare for multi-selection commands built-in add -i: allow filtering the modified files list add-interactive: make sure to release `rev.prune_data`
2019-12-16Merge branch 'dd/time-reentrancy'Libravatar Junio C Hamano3-19/+21
Avoid gmtime() and localtime() and prefer their reentrant counterparts. * dd/time-reentrancy: mingw: use {gm,local}time_s as backend for {gm,local}time_r archive-zip.c: switch to reentrant localtime_r date.c: switch to reentrant {gm,local}time_r