Mon, 27 Mar 2017 09:44:35 +0900 largefiles: avoid redundant loop to eliminate None from list
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:35 +0900] rev 31661
largefiles: avoid redundant loop to eliminate None from list Before this patch, this code path contains two loops for m._files: one for replacement with standin, and another for elimination of None, which comes from previous replacement ("standin in wctx or lfdirstate[f] == 'r'" case in tostandin()). These two loops can be unified into simple one "for" loop.
Mon, 27 Mar 2017 09:44:35 +0900 largefiles: avoid meaningless changectx looking up
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:35 +0900] rev 31660
largefiles: avoid meaningless changectx looking up Logically, "repo[ctx.node()]" should be equal to "ctx". In addition to it, this redundant code path is repeated "len(match.m_files)" times.
Mon, 27 Mar 2017 09:44:35 +0900 largefiles: avoid redundant changectx looking up at each repetitions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:35 +0900] rev 31659
largefiles: avoid redundant changectx looking up at each repetitions These code paths look up changectx at each repetitions, even though the changectx key isn't changed while loop.
Mon, 27 Mar 2017 09:44:34 +0900 largefiles: omit updating newly added standin at linear merging
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:34 +0900] rev 31658
largefiles: omit updating newly added standin at linear merging Updating standin for newly added largefile is needed, only if same name largefile exists in destination context at linear merging. In such case, updated standin is used to detect divergence of largefile at overridefilemerge(). Otherwise, standin doesn't have any responsibility for its content (usually, it is empty).
Mon, 27 Mar 2017 09:44:34 +0900 largefiles: reuse hexsha1() to centralize hash calculation logic into it
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:34 +0900] rev 31657
largefiles: reuse hexsha1() to centralize hash calculation logic into it This patch also renames argument of hexsha1(), not only for readability ("data" isn't good name for file-like object), but also for reviewability (including hexsha1() code helps reviewers to confirm how these functions are similar). BTW, copyandhash() has also similar logic, but it can't reuse hexsha1(), because it writes read-in data into specified fileobj simultaneously.
Sun, 26 Mar 2017 19:11:41 +0900 py3: prove second commit works
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 19:11:41 +0900] rev 31656
py3: prove second commit works Finally it works.
Sun, 26 Mar 2017 19:06:48 +0900 py3: fix manifestdict.fastdelta() to be compatible with memoryview
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 19:06:48 +0900] rev 31655
py3: fix manifestdict.fastdelta() to be compatible with memoryview This doesn't look nice, but a straightforward way to support Python 3. bytes(m[start:end]) is needed because a memoryview doesn't support ordering operations. On Python 2, m[start:end] returns a bytes object even if m is a buffer, so calling bytes() should involve no additional copy. I'm tired of trying cleaner alternatives, including: a. extend memoryview to be compatible with buffer type => memoryview is not an acceptable base type b. wrap memoryview by buffer-like class => zlib complains it isn't bytes-like
Sun, 26 Mar 2017 17:00:23 -0700 crecord: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 17:00:23 -0700] rev 31654
crecord: use ProgrammingError
Sun, 26 Mar 2017 16:59:30 -0700 transaction: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:59:30 -0700] rev 31653
transaction: use ProgrammingError
Sun, 26 Mar 2017 16:57:25 -0700 bundle2: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:57:25 -0700] rev 31652
bundle2: use ProgrammingError
Sun, 26 Mar 2017 16:55:56 -0700 merge: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:55:56 -0700] rev 31651
merge: use ProgrammingError
Sun, 26 Mar 2017 16:53:28 -0700 repair: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:53:28 -0700] rev 31650
repair: use ProgrammingError
Sun, 26 Mar 2017 16:33:12 +0900 py3: abuse r'' to preserve str-ness of literals passed to __setattr__()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:33:12 +0900] rev 31649
py3: abuse r'' to preserve str-ness of literals passed to __setattr__()
Sun, 26 Mar 2017 17:12:06 +0900 py3: fix slicing of byte string in revlog.compress()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 17:12:06 +0900] rev 31648
py3: fix slicing of byte string in revlog.compress() I tried .startswith('\0'), but data wasn't always a bytes nor a bytearray.
Sun, 26 Mar 2017 16:31:01 +0900 py3: use bytes() to cast to immutable bytes in changelog.appender.write()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:31:01 +0900] rev 31647
py3: use bytes() to cast to immutable bytes in changelog.appender.write()
Sun, 26 Mar 2017 16:16:45 +0900 py3: use bytes() to cast to immutable bytes in pure.bdiff.bdiff()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:16:45 +0900] rev 31646
py3: use bytes() to cast to immutable bytes in pure.bdiff.bdiff()
Sun, 26 Mar 2017 16:14:04 +0900 bdiff: drop support for array.array argument from pure.bdiff.bdiff()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:14:04 +0900] rev 31645
bdiff: drop support for array.array argument from pure.bdiff.bdiff() Thanks to 2a18e9e6ca43, we no longer pass array.array('c') object to bdiff().
Sun, 26 Mar 2017 15:55:34 +0200 histedit: test that an aborted histedit can be rerun (with obsolete)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 26 Mar 2017 15:55:34 +0200] rev 31644
histedit: test that an aborted histedit can be rerun (with obsolete) In the future, this should help catching issue as the one introduced in 6f0b7475cf9a.
Sun, 26 Mar 2017 15:46:09 +0200 histedit: backout changeset 6f0b7475cf9a
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 26 Mar 2017 15:46:09 +0200] rev 31643
histedit: backout changeset 6f0b7475cf9a Before 6f0b7475cf9a, histedit (like rebase) was only creating markers on final success from the old-rewritten node to the newly created nodes (as of before 6f0b7475cf9a). In case of abort the aborted attempt were stripped to restore the repository in its state prior to the attempt. This use of strip was on purpose. Using markers in this case introduces various issues. The main one is that keeping the partial result of histedit as obsolete prevents us to recreates the same nodes in a second attempt. The same operation will lead to an identical results, using an identical node that already exists in the repository as obsolete. To conclude, we cannot and should not switch to obsolescence markers creation on histedit --abort and we backout 6f0b7475cf9a. A test to catch this class of issue will be introduced in the next changeset.
Sun, 26 Mar 2017 15:34:39 +0200 histedit: backout changeset 2b599f5468a4
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 26 Mar 2017 15:34:39 +0200] rev 31642
histedit: backout changeset 2b599f5468a4 Its parent is about to be backedout so this one needs to be removed too.
Sun, 26 Mar 2017 16:48:29 -0400 revsetlang: fix _quote on int on python3
Augie Fackler <raf@durin42.com> [Sun, 26 Mar 2017 16:48:29 -0400] rev 31641
revsetlang: fix _quote on int on python3 Thanks to Yuya for spotting the need.
Sun, 26 Mar 2017 20:58:54 -0700 runtests: unset editor and pager related environment variables
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 20:58:54 -0700] rev 31640
runtests: unset editor and pager related environment variables Those environment variables could affect some configuration and future tests. Drop them to avoid issues.
Sun, 26 Mar 2017 17:59:33 -0700 debugfsinfo: improve case-sensitive testing
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 17:59:33 -0700] rev 31639
debugfsinfo: improve case-sensitive testing Previously the case-sensitive test was for the current directory, and is fragile with errors, and could remove a real file called ".debugfsinfo". This patch improves the case-sensitive testing so it test the given path using a unique temporary file, and does not crash on errors.
Sun, 26 Mar 2017 17:29:37 -0700 debugfsinfo: show fstype for given path
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 17:29:37 -0700] rev 31638
debugfsinfo: show fstype for given path
Sun, 26 Mar 2017 21:10:25 +0530 test-check-py3-commands: cleanup tests related to `hg status`
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 21:10:25 +0530] rev 31637
test-check-py3-commands: cleanup tests related to `hg status` We were testing hg status on Python 3 at two places in the test. Cleaned up one of them.
Sun, 26 Mar 2017 20:58:21 +0530 diff: use pycompat.{byteskwargs, strkwargs} to switch opts b/w bytes and str
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 20:58:21 +0530] rev 31636
diff: use pycompat.{byteskwargs, strkwargs} to switch opts b/w bytes and str
Sun, 26 Mar 2017 20:54:50 +0530 patch: make regular expressions bytes by adding b''
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 20:54:50 +0530] rev 31635
patch: make regular expressions bytes by adding b''
Sun, 26 Mar 2017 20:49:18 +0530 dispatch: use pycompat.maplist() instead of map() to get a list
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 20:49:18 +0530] rev 31634
dispatch: use pycompat.maplist() instead of map() to get a list
Sat, 25 Mar 2017 13:29:23 -0400 color: fix grammar in help text
Matt Harbison <matt_harbison@yahoo.com> [Sat, 25 Mar 2017 13:29:23 -0400] rev 31633
color: fix grammar in help text
Sat, 25 Mar 2017 12:58:55 -0700 statfs: detect more filesystems on Linux
Jun Wu <quark@fb.com> [Sat, 25 Mar 2017 12:58:55 -0700] rev 31632
statfs: detect more filesystems on Linux Previously, the code only has what manpager says. In <linux/magic.h>, there are more defined. This patch adds filesystems that appear in the current Arch Linux's /proc/filesystems (autofs, overlay, securityfs) and f2fs, which was seen in news.
Thu, 23 Mar 2017 23:47:23 -0400 repair: use context manager for lock management
Matt Harbison <matt_harbison@yahoo.com> [Thu, 23 Mar 2017 23:47:23 -0400] rev 31631
repair: use context manager for lock management If repo.lock() raised inside of the try block, 'tr' would have been None in the finally block where it tries to release(). Modernize the syntax instead of just winching the lock out of the try block. I found several other instances of acquiring the lock inside of the 'try', but those finally blocks handle None references. I also started switching some trivial try/finally blocks to context managers, but didn't get them all because indenting over 3x for lock, wlock and transaction would have spilled over 80 characters. That got me wondering if there should be a repo.rwlock(), to handle locking and unlocking in the proper order. It also looks like py27 supports supports multiple context managers for a single 'with' statement. Should I hold off on the rest until py26 is dropped?
Fri, 24 Mar 2017 19:52:43 -0700 gitweb: use monospace font for commit messages
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 24 Mar 2017 19:52:43 -0700] rev 31630
gitweb: use monospace font for commit messages Commit messages often contain vertically aligned text. The default paper style already uses monospace fonts for rendering commit messages. And, AFAICT, a number of Git servers also render commit messages with monospace. It seems like the reasonable thing to do. This commit converts all instances of the full commit message in the gitweb style to render with monospace.
Fri, 24 Mar 2017 22:40:08 -0400 pager: improve support for various flavors of `more` on Windows
Matt Harbison <matt_harbison@yahoo.com> [Fri, 24 Mar 2017 22:40:08 -0400] rev 31629
pager: improve support for various flavors of `more` on Windows Hardcoding 'more' -> 'more.com' means that 'more.exe' from MSYS would need to be configured with its *.exe extension. This will resolve to either one, as cmd.exe would have done if the command ran through the shell. Something that's maybe problematic with this is it comes after 'pageractive' and various ui configs have been set by the calling method. But the other early exits in this method don't undo those changes either.
Fri, 24 Mar 2017 15:05:42 -0700 statfs: avoid static allocation
Jun Wu <quark@fb.com> [Fri, 24 Mar 2017 15:05:42 -0700] rev 31628
statfs: avoid static allocation Previously we have "static struct statfs" to return a string. That is not multiple-thread safe. This patch moves the allocation to the caller to address the problem.
Fri, 24 Mar 2017 14:59:19 -0700 statfs: change Linux feature detection
Jun Wu <quark@fb.com> [Fri, 24 Mar 2017 14:59:19 -0700] rev 31627
statfs: change Linux feature detection Previously we check three things: "statfs" function, "linux/magic.h" and "sys/vfs.h" headers. But we didn't check "struct statfs" or the "f_type" field. That means if a system has "statfs" but "struct statfs" is not defined in the two header files we check, or defined without the "f_type" field, the compilation will fail. This patch combines the checks (2 headers + 1 function + 1 field) together and sets "HAVE_LINUX_STATFS". It makes setup.py faster (less checks), and more reliable (immutable to the issue above).
Fri, 24 Mar 2017 16:20:10 -0700 rebase: don't require destination if commands.rebase.requiredest=False
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Mar 2017 16:20:10 -0700] rev 31626
rebase: don't require destination if commands.rebase.requiredest=False
Fri, 24 Mar 2017 16:20:04 -0700 tests: add tests with commands.{update,rebase}.requiredest=False
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Mar 2017 16:20:04 -0700] rev 31625
tests: add tests with commands.{update,rebase}.requiredest=False This shows how rebase is currently broken with commands.rebase.requiredest=False.
Sun, 12 Mar 2017 12:33:35 -0700 rebase: move state serialization to use unfiltered repo
Durham Goode <durham@fb.com> [Sun, 12 Mar 2017 12:33:35 -0700] rev 31624
rebase: move state serialization to use unfiltered repo Now that rebasestate is serialized as part of the transaction, the repo state it sees is the version at the end of the transaction, which may have hidden nodes. Therefore, it's possible parts of the rebase commit set are no longer visible by the time the transaction is closing, which causes a filtered revision error in this code. I don't think state serialization should be blocked from accessing commits it knows exist, especially if all it's trying to do is get the hex of them, so let's use an unfiltered repo here. Unfortunately, the only known repro is with the fbamend Facebook extension, so I'm not sure how to repro it in core Mercurial for a test.
Fri, 24 Mar 2017 22:29:22 +0900 largefiles: avoid redundant standin() invocations
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:29:22 +0900] rev 31623
largefiles: avoid redundant standin() invocations There are some code paths, which apply standin() on same value multilpe times instead of using already standin()-ed value. "fstandin" is common name for "path to standin file" in lfutil.py, to avoid shadowing "standin()".
Fri, 24 Mar 2017 22:29:22 +0900 largefiles: replace hashrepofile by hashfile (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:29:22 +0900] rev 31622
largefiles: replace hashrepofile by hashfile (API) There is only one user for the former, and repo.wjoin()-ed value is alread known by that user.
Fri, 24 Mar 2017 22:26:34 +0900 largefiles: call readstandin() with changectx itself instead of rev or node
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:26:34 +0900] rev 31621
largefiles: call readstandin() with changectx itself instead of rev or node readstandin() takes "node" argument to get changectx by "repo[node]". There are some readstandin() invocations, which use ctx.node(), ctx.rev(), or '.' as "node" argument above, even though corresponded changectx object is already looked up on caller side. This patch calls readstandin() with already known changectx itself, to avoid meaningless re-construction of changectx (indirect case via copytostore() is also included). BTW, copytostore() uses "rev" argument only for readstandin() invocation. Therefore, this patch also renames it to "revorctx" to indicate that it can take not only revision ID or so but also changectx, for readability.
Fri, 24 Mar 2017 22:24:59 +0900 largefiles: omit redundant splitstandin() invocations
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:24:59 +0900] rev 31620
largefiles: omit redundant splitstandin() invocations There are 3 splitstandin() invocations in updatestandin() for same "standin" value.
Fri, 24 Mar 2017 22:24:59 +0900 largefiles: replace splitstandin() by isstandin() to omit str creation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:24:59 +0900] rev 31619
largefiles: replace splitstandin() by isstandin() to omit str creation If splitstandin()-ed str itself isn't used, isstandin() should be used instead of it, to omit meaningless str creation.
Fri, 24 Mar 2017 22:24:58 +0900 largefiles: omit redundant isstandin() before splitstandin()
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:24:58 +0900] rev 31618
largefiles: omit redundant isstandin() before splitstandin() There are many isstandin() invocations before splitstandin(). The former examines whether specified path starts with ".hglf/". The latter returns after ".hglf/" of specified path if it starts with that prefix, or returns None otherwise. Therefore, value returned by splitstandin() can be used for replacement of preceding isstandin(), and this replacement can omit redundant string comparison after isstandin().
Fri, 24 Mar 2017 22:13:23 +0900 misc: update descriptions about removed file for filectxfn
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Mar 2017 22:13:23 +0900] rev 31617
misc: update descriptions about removed file for filectxfn Since 650b5b6e75ed, filectxfn for memctx should return None for removed file instead of raising IOError.
Mon, 20 Mar 2017 17:58:44 -0400 osx: always purge build/mercurial before starting build
Augie Fackler <augie@google.com> [Mon, 20 Mar 2017 17:58:44 -0400] rev 31616
osx: always purge build/mercurial before starting build This prevents stray files from previous builds from polluting newer builds.
Mon, 20 Mar 2017 17:49:47 -0400 osx: use more paranoid quoting in test
Augie Fackler <augie@google.com> [Mon, 20 Mar 2017 17:49:47 -0400] rev 31615
osx: use more paranoid quoting in test
Mon, 20 Mar 2017 17:50:05 -0400 osx: install completion scripts using install(1) to avoid umask badness
Augie Fackler <augie@google.com> [Mon, 20 Mar 2017 17:50:05 -0400] rev 31614
osx: install completion scripts using install(1) to avoid umask badness This actually fixes some tests that were showing us umask badness that had been overlooked.
Fri, 24 Mar 2017 08:37:26 -0700 merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Mar 2017 08:37:26 -0700] rev 31613
merge with stable
Sun, 19 Mar 2017 01:47:56 -0400 py3: prove `hg {add,addremove,commit} all work
Augie Fackler <augie@google.com> [Sun, 19 Mar 2017 01:47:56 -0400] rev 31612
py3: prove `hg {add,addremove,commit} all work We can't do a second commit in a repo yet, because pure-Python bdiff is broken on Python 3. That is probably a good next step.
Thu, 23 Mar 2017 10:46:50 -0400 revsetlang: perform quoting using ui.escapestr instead of repr()
Augie Fackler <augie@google.com> [Thu, 23 Mar 2017 10:46:50 -0400] rev 31611
revsetlang: perform quoting using ui.escapestr instead of repr() This changes one of the doctest results, but I'm pretty sure on inspection that it's an equivalent result.
Thu, 23 Mar 2017 10:41:34 -0400 revsetlang: add docstring with some tests to _quote
Augie Fackler <augie@google.com> [Thu, 23 Mar 2017 10:41:34 -0400] rev 31610
revsetlang: add docstring with some tests to _quote
Sun, 19 Mar 2017 01:14:19 -0400 revsetlang: move quoting function to not be a closure
Augie Fackler <augie@google.com> [Sun, 19 Mar 2017 01:14:19 -0400] rev 31609
revsetlang: move quoting function to not be a closure I'm about to change the implementation here and I'd like to add some doctests, which means this needs to not be hidden inside another function.
Thu, 23 Mar 2017 10:33:20 -0400 revsetlang: portably bytestring-ify another pair of int() calls
Augie Fackler <augie@google.com> [Thu, 23 Mar 2017 10:33:20 -0400] rev 31608
revsetlang: portably bytestring-ify another pair of int() calls
Thu, 23 Mar 2017 21:23:21 -0700 checkcode: enforce lowercase for extension docstring title
Jun Wu <quark@fb.com> [Thu, 23 Mar 2017 21:23:21 -0700] rev 31607
checkcode: enforce lowercase for extension docstring title This will ensure new extensions are consistent and `hg help -e` has a consistent output. I have to add a new group since the normal "pypats" will be filtered by "pyfilters", which will remove comments and docstrings.
Thu, 23 Mar 2017 21:16:55 -0700 logtoprocess: use lowercase for docstring title
Jun Wu <quark@fb.com> [Thu, 23 Mar 2017 21:16:55 -0700] rev 31606
logtoprocess: use lowercase for docstring title
Thu, 23 Mar 2017 21:16:29 -0700 journal: use lowercase for docstring title
Jun Wu <quark@fb.com> [Thu, 23 Mar 2017 21:16:29 -0700] rev 31605
journal: use lowercase for docstring title See the previous patch for why.
Thu, 23 Mar 2017 21:15:39 -0700 automv: use lowercase for docstring title
Jun Wu <quark@fb.com> [Thu, 23 Mar 2017 21:15:39 -0700] rev 31604
automv: use lowercase for docstring title The first line of docstring is used in `hg help -e`. Use lowercase to be consistent with most extensions.
Thu, 23 Mar 2017 22:31:50 -0700 util: enable hardlink for some BSD-family filesystems
Jun Wu <quark@fb.com> [Thu, 23 Mar 2017 22:31:50 -0700] rev 31603
util: enable hardlink for some BSD-family filesystems Since we can now detect filesystems on FreeBSD and OSX. Add their major filesystems (ufs, zfs for FreeBSD; hfs for OSX) to the hardlink whitelist.
Thu, 23 Mar 2017 22:13:02 -0700 osutil: report fstype for BSD and OSX
Jun Wu <quark@fb.com> [Thu, 23 Mar 2017 22:13:02 -0700] rev 31602
osutil: report fstype for BSD and OSX
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip