Commit Graph

53000 Commits

Author SHA1 Message Date
Jeff King
e2c2a37545 add_to_index(): convert forgotten HASH_RENORMALIZE check
Commit 9e5da3d055 (add: use separate ADD_CACHE_RENORMALIZE flag,
2019-01-17) switched out using HASH_RENORMALIZE in our flags field for a
new ADD_CACHE_RENORMALIZE flag. However, it forgot to convert one of the
checks for HASH_RENORMALIZE into the new flag, which totally broke "git
add --renormalize".

To make matters even more confusing, the resulting code would racily
pass the tests!  The forgotten check was responsible for defeating the
up-to-date check of the index entry. That meant that "git add
--renormalize" would refuse to renormalize things that appeared
stat-clean. But most of the time the test commands run fast enough that
the file mtime is the same as the index mtime. And thus we err on the
conservative side and re-hash the file, which is what "--renormalize"
would have wanted.

But if you're unlucky and cross that one-second boundary between writing
the file and writing the index (which is more likely to happen on a slow
or heavily-loaded system), then the file appears stat-clean. And
"--renormalize" would effectively do nothing.

The fix is straightforward: convert this check to use the right flag.

Noticed-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-02-06 18:56:45 -08:00
Jeff King
9e5da3d055 add: use separate ADD_CACHE_RENORMALIZE flag
Commit 9472935d81 (add: introduce "--renormalize", 2017-11-16) taught
git-add to pass HASH_RENORMALIZE to add_to_index(), which then passes
the flag along to index_path(). However, the flags taken by
add_to_index() and the ones taken by index_path() are distinct
namespaces. We cannot take HASH_* flags in add_to_index(), because they
overlap with the ADD_CACHE_* flags we already take (in this case,
HASH_RENORMALIZE conflicts with ADD_CACHE_IGNORE_ERRORS).

We can solve this by adding a new ADD_CACHE_RENORMALIZE flag, and using
it to set HASH_RENORMALIZE within add_to_index(). In order to make it
clear that these two flags come from distinct sets, let's also change
the name "newflags" in the function to "hash_flags".

Reported-by: Dmitriy Smirnov <dmitriy.smirnov@jetbrains.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-01-17 13:40:21 -08:00
Junio C Hamano
98cdfbb84a Git 2.19.2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-11-21 23:22:12 +09:00
Junio C Hamano
a4830a7a45 Merge branch 'sg/test-rebase-editor-fix' into maint
* sg/test-rebase-editor-fix:
  t3404-rebase-interactive: test abbreviated commands
2018-11-21 22:58:10 +09:00
Junio C Hamano
85eb0f162c Merge branch 'tb/char-may-be-unsigned' into maint
Build portability fix.

* tb/char-may-be-unsigned:
  path.c: char is not (always) signed
2018-11-21 22:58:09 +09:00
Junio C Hamano
2b153408b4 Merge branch 'jk/uploadpack-packobjectshook-fix' into maint
Code clean-up that results in a small bugfix.

* jk/uploadpack-packobjectshook-fix:
  upload-pack: fix broken if/else chain in config callback
2018-11-21 22:58:09 +09:00
Junio C Hamano
227124b271 Merge branch 'uk/merge-subtree-doc-update' into maint
Belated documentation update to adjust to a new world order that
happened a yew years ago.

* uk/merge-subtree-doc-update:
  howto/using-merge-subtree: mention --allow-unrelated-histories
2018-11-21 22:58:08 +09:00
Junio C Hamano
196afc439c Merge branch 'jc/cocci-preincr' into maint
Code cleanup.

* jc/cocci-preincr:
  fsck: s/++i > 1/i++/
  cocci: simplify "if (++u > 1)" to "if (u++)"
2018-11-21 22:58:08 +09:00
Junio C Hamano
eba14167f1 Merge branch 'ah/doc-updates' into maint
Doc updates.

* ah/doc-updates:
  doc: fix formatting in git-update-ref
  doc: fix indentation of listing blocks in gitweb.conf.txt
  doc: fix descripion for 'git tag --format'
  doc: fix inappropriate monospace formatting
  doc: fix ASCII art tab spacing
  doc: clarify boundaries of 'git worktree list --porcelain'
2018-11-21 22:58:07 +09:00
Junio C Hamano
b53df43bf5 Merge branch 'sg/doc-show-branch-typofix' into maint
Docfix.

* sg/doc-show-branch-typofix:
  doc: fix small typo in git show-branch
2018-11-21 22:58:07 +09:00
Junio C Hamano
69ae6660fc Merge branch 'tq/branch-style-fix' into maint
Code clean-up.

* tq/branch-style-fix:
  branch: trivial style fix
2018-11-21 22:58:06 +09:00
Junio C Hamano
2b40fdd079 Merge branch 'tq/branch-create-wo-branch-get' into maint
Code clean-up.

* tq/branch-create-wo-branch-get:
  builtin/branch.c: remove useless branch_get
2018-11-21 22:58:06 +09:00
Junio C Hamano
c2d6378458 Merge branch 'sb/strbuf-h-update' into maint
Code clean-up to serve as a BCP example.
Further clean-up patches may want to follow soon.

* sb/strbuf-h-update:
  strbuf.h: format according to coding guidelines
2018-11-21 22:58:06 +09:00
Junio C Hamano
a6dc172d00 Merge branch 'du/cherry-is-plumbing' into maint
Doc update to mark "git cherry" as a plumbing command.

* du/cherry-is-plumbing:
  doc: move git-cherry to plumbing
2018-11-21 22:58:05 +09:00
Junio C Hamano
c3ba2ae0ba Merge branch 'du/get-tar-commit-id-is-plumbing' into maint
Doc update to mark "git get-tar-commit-id" as a plumbing command.

* du/get-tar-commit-id-is-plumbing:
  doc: move git-get-tar-commit-id to plumbing
2018-11-21 22:58:05 +09:00
Junio C Hamano
53016f4c13 Merge branch 'mm/doc-no-dashed-git' into maint
Doc update.

* mm/doc-no-dashed-git:
  doc: fix a typo and clarify a sentence
2018-11-21 22:58:05 +09:00
Junio C Hamano
95500c8a0d Merge branch 'du/rev-parse-is-plumbing' into maint
Doc update.

* du/rev-parse-is-plumbing:
  doc: move git-rev-parse from porcelain to plumbing
2018-11-21 22:58:04 +09:00
Junio C Hamano
6262f5c471 Merge branch 'ma/t7005-bash-workaround' into maint
Test fix.

* ma/t7005-bash-workaround:
  t7005-editor: quote filename to fix whitespace-issue
2018-11-21 22:58:04 +09:00
Junio C Hamano
6b57374d3e Merge branch 'jc/how-to-document-api' into maint
Doc update.

* jc/how-to-document-api:
  CodingGuidelines: document the API in *.h files
2018-11-21 22:58:03 +09:00
Junio C Hamano
368ba6b7ac Merge branch 'mw/doc-typofixes' into maint
Typofixes.

* mw/doc-typofixes:
  docs: typo: s/isimilar/similar/
  docs: graph: remove unnecessary `graph_update()' call
  docs: typo: s/go/to/
2018-11-21 22:58:03 +09:00
Junio C Hamano
587b3f5d72 Merge branch 'rs/sequencer-oidset-insert-avoids-dups' into maint
Code clean-up.

* rs/sequencer-oidset-insert-avoids-dups:
  sequencer: use return value of oidset_insert()
2018-11-21 22:58:02 +09:00
Junio C Hamano
171309399a Merge branch 'ma/mailing-list-address-in-git-help' into maint
Doc update.

* ma/mailing-list-address-in-git-help:
  git doc: direct bug reporters to mailing list archive
2018-11-21 22:58:02 +09:00
Junio C Hamano
060d0617ef Merge branch 'nd/packobjectshook-doc-fix' into maint
Doc update.

* nd/packobjectshook-doc-fix:
  config.txt: correct the note about uploadpack.packObjectsHook
2018-11-21 22:58:01 +09:00
Junio C Hamano
6f1c8154aa Merge branch 'ma/t1400-undebug-test' into maint
Test fix.

* ma/t1400-undebug-test:
  t1400: drop debug `echo` to actually execute `test`
2018-11-21 22:58:01 +09:00
Junio C Hamano
35e54ea2e0 Merge branch 'ma/commit-graph-docs' into maint
Doc update.

* ma/commit-graph-docs:
  Doc: refer to the "commit-graph file" with dash
  git-commit-graph.txt: refer to "*commit*-graph file"
  git-commit-graph.txt: typeset more in monospace
  git-commit-graph.txt: fix bullet lists
2018-11-21 22:58:00 +09:00
Junio C Hamano
871955c797 Merge branch 'dz/credential-doc-url-matching-rules' into maint
Doc update.

* dz/credential-doc-url-matching-rules:
  doc: clarify gitcredentials path component matching
2018-11-21 22:58:00 +09:00
Junio C Hamano
75266b4e8b Merge branch 'jk/check-everything-connected-is-long-gone' into maint
Comment fix.

* jk/check-everything-connected-is-long-gone:
  receive-pack: update comment with check_everything_connected
2018-11-21 22:58:00 +09:00
Junio C Hamano
0caea62a4b Merge branch 'fe/doc-updates' into maint
Doc updates.

* fe/doc-updates:
  git-describe.1: clarify that "human readable" is also git-readable
  git-column.1: clarify initial description, provide examples
  git-archimport.1: specify what kind of Arch we're talking about
2018-11-21 22:57:58 +09:00
Junio C Hamano
2a98f6c2b5 Merge branch 'tg/t5551-with-curl-7.61.1' into maint
Test update.
Supersedes tz/t5551-with-curl-7.61.1 topic

* tg/t5551-with-curl-7.61.1:
  t5551: compare sorted cookies files
  t5551: move setup code inside test_expect blocks
2018-11-21 22:57:58 +09:00
Junio C Hamano
a75337341f Merge branch 'tq/refs-internal-comment-fix' into maint
Fix for typo in a sample code in comment.

* tq/refs-internal-comment-fix:
  refs: docstring typo
2018-11-21 22:57:58 +09:00
Junio C Hamano
85f6afc28b Merge branch 'sg/split-index-test' into maint
Test updates.

* sg/split-index-test:
  t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
  t1700-split-index: drop unnecessary 'grep'
2018-11-21 22:57:57 +09:00
Junio C Hamano
3ae0ac65cf Merge branch 'bw/protocol-v2' into maint
Doc fix.

* bw/protocol-v2:
  config: document value 2 for protocol.version
2018-11-21 22:57:57 +09:00
Junio C Hamano
d5e4cbabcf Merge branch 'sb/string-list-remove-unused' into maint
Code clean-up.

* sb/string-list-remove-unused:
  string-list: remove unused function print_string_list
2018-11-21 22:57:56 +09:00
Junio C Hamano
d9e70a4e63 Merge branch 'jk/dev-build-format-security' into maint
Build tweak to help developers.

* jk/dev-build-format-security:
  config.mak.dev: add -Wformat-security
2018-11-21 22:57:56 +09:00
Junio C Hamano
9beaf81bce Merge branch 'sg/t3701-tighten-trace' into maint
Test update.

* sg/t3701-tighten-trace:
  t3701-add-interactive: tighten the check of trace output
2018-11-21 22:57:55 +09:00
Junio C Hamano
ab6409c66d Merge branch 'en/double-semicolon-fix' into maint
Code clean-up.

* en/double-semicolon-fix:
  Remove superfluous trailing semicolons
2018-11-21 22:57:55 +09:00
Junio C Hamano
761868b693 Merge branch 'tb/void-check-attr' into maint
Code clean-up.

* tb/void-check-attr:
  Make git_check_attr() a void function
2018-11-21 22:57:54 +09:00
Junio C Hamano
04b9bdbe16 Merge branch 'sg/doc-trace-appends' into maint
Docfix.

* sg/doc-trace-appends:
  Documentation/git.txt: clarify that GIT_TRACE=/path appends
2018-11-21 22:57:54 +09:00
Junio C Hamano
04d70dd648 Merge branch 'tg/conflict-marker-size' into maint
Developer aid.

* tg/conflict-marker-size:
  .gitattributes: add conflict-marker-size for relevant files
2018-11-21 22:57:53 +09:00
Junio C Hamano
7532a18189 Merge branch 'ts/doc-build-manpage-xsl-quietly' into maint
Build tweak.

* ts/doc-build-manpage-xsl-quietly:
  Documentation/Makefile: make manpage-base-url.xsl generation quieter
2018-11-21 22:57:53 +09:00
Junio C Hamano
d75c41b2ae Merge branch 'jk/detect-truncated-zlib-input' into maint
A regression in Git 2.12 era made "git fsck" fall into an infinite
loop while processing truncated loose objects.

* jk/detect-truncated-zlib-input:
  cat-file: handle streaming failures consistently
  check_stream_sha1(): handle input underflow
  t1450: check large blob in trailing-garbage test
2018-11-21 22:57:52 +09:00
Junio C Hamano
0e57d28a3a Merge branch 'sg/test-verbose-log' into maint
Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.

* sg/test-verbose-log:
  test-lib: introduce the '-V' short option for '--verbose-log'
2018-11-21 22:57:52 +09:00
Junio C Hamano
a1601a582a Merge branch 'ss/travis-ci-force-vm-mode' into maint
The "container" mode of TravisCI is going away.  Our .travis.yml
file is getting prepared for the transition.

* ss/travis-ci-force-vm-mode:
  travis-ci: no longer use containers
2018-11-21 22:57:52 +09:00
Junio C Hamano
b52ac60bc4 Merge branch 'md/exclude-promisor-objects-fix' into maint
Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense.  This has been corrected.

* md/exclude-promisor-objects-fix:
  exclude-promisor-objects: declare when option is allowed
  Documentation/git-log.txt: do not show --exclude-promisor-objects
2018-11-21 22:57:52 +09:00
Junio C Hamano
d0975a0724 Merge branch 'js/shallow-and-fetch-prune' into maint
"git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.

* js/shallow-and-fetch-prune:
  repack -ad: prune the list of shallow commits
  shallow: offer to prune only non-existing entries
  repack: point out a bug handling stale shallow info
2018-11-21 22:57:51 +09:00
Junio C Hamano
7d483e9c00 Merge branch 'jc/receive-deny-current-branch-fix' into maint
The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.

* jc/receive-deny-current-branch-fix:
  receive: denyCurrentBranch=updateinstead should not blindly update
2018-11-21 22:57:51 +09:00
Junio C Hamano
45dda3a2dc Merge branch 'js/diff-notice-has-drive-prefix' into maint
Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.

* js/diff-notice-has-drive-prefix:
  diff: don't attempt to strip prefix from absolute Windows paths
2018-11-21 22:57:51 +09:00
Junio C Hamano
e3c18aa35b Merge branch 'js/pack-objects-mutex-init-fix' into maint
A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.

* js/pack-objects-mutex-init-fix:
  pack-objects (mingw): initialize `packing_data` mutex in the correct spot
  pack-objects (mingw): demonstrate a segmentation fault with large deltas
  pack-objects: fix typo 'detla' -> 'delta'
2018-11-21 22:57:50 +09:00
Junio C Hamano
1bf5d99b12 Merge branch 'jk/run-command-notdot' into maint
The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.

* jk/run-command-notdot:
  run-command: mark path lookup errors with ENOENT
2018-11-21 22:57:50 +09:00
Junio C Hamano
a51c63809e Merge branch 'np/log-graph-octopus-fix' into maint
"git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.

* np/log-graph-octopus-fix:
  log: fix coloring of certain octopus merge shapes
2018-11-21 22:57:49 +09:00