Mercurial > hg
comparison hgext/largefiles/overrides.py @ 31740:a40e979b9d97
largefiles: use readasstandin() to read hex hash directly from filectx
BTW, C implementation of hexdigest() for SHA-1/256/512 returns hex
hash in lower case, and doctest in Python standard hashlib assumes
that, too. But it isn't explicitly described in API document or so.
Therefore, we can't assume that hexdigest() always returns hex hash in
lower case, for any hash algorithms, on any Python runtimes and
versions.
From point of view of that, it is reasonable for portability that
40800668e019 applies lower() on hex hash in overridefilemerge().
But on the other hand, in largefiles extension, there are still many
code paths comparing between hex hashes or storing hex hash into
standin file, without lower().
Switching to hash algorithm other than SHA-1 may be good chance to
clarify our policy about hexdigest()-ed hash value string.
- assume that hexdigest() always returns hex hash in lower case, or
- apply lower() on hex hash in appropriate layers to ensure
lower-case-ness of it for portability
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Sat, 01 Apr 2017 02:32:49 +0900 |
parents | 3e37b479ce2f |
children | 9e67ce5c4fd0 |
comparison
equal
deleted
inserted
replaced
31739:4e446d31a744 | 31740:a40e979b9d97 |
---|---|
551 labels=None): | 551 labels=None): |
552 if not lfutil.isstandin(orig) or fcd.isabsent() or fco.isabsent(): | 552 if not lfutil.isstandin(orig) or fcd.isabsent() or fco.isabsent(): |
553 return origfn(premerge, repo, mynode, orig, fcd, fco, fca, | 553 return origfn(premerge, repo, mynode, orig, fcd, fco, fca, |
554 labels=labels) | 554 labels=labels) |
555 | 555 |
556 ahash = fca.data().strip().lower() | 556 ahash = lfutil.readasstandin(fca).lower() |
557 dhash = fcd.data().strip().lower() | 557 dhash = lfutil.readasstandin(fcd).lower() |
558 ohash = fco.data().strip().lower() | 558 ohash = lfutil.readasstandin(fco).lower() |
559 if (ohash != ahash and | 559 if (ohash != ahash and |
560 ohash != dhash and | 560 ohash != dhash and |
561 (dhash == ahash or | 561 (dhash == ahash or |
562 repo.ui.promptchoice( | 562 repo.ui.promptchoice( |
563 _('largefile %s has a merge conflict\nancestor was %s\n' | 563 _('largefile %s has a merge conflict\nancestor was %s\n' |