Sat, 11 Apr 2015 00:47:09 +0900 util: add removedirs as platform depending function
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24692
util: add removedirs as platform depending function According to fa901423ac23 introducing "windows._removedirs()": If a hg repository including working directory is a reparse point (directory symlinked or a junction point), then using os.removedirs will remove the reparse point erroneously. "windows._removedirs()" should be used instead of "os.removedirs()" on Windows. This patch adds "removedirs" as platform depending function to replace "os.removedirs()" invocations for portability and safety
Sat, 11 Apr 2015 00:47:09 +0900 subrepo: use vfs.unlink instead of os.remove
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24691
subrepo: use vfs.unlink instead of os.remove This patch also removes useless composing absolute path by "os.path.join()".
Sat, 11 Apr 2015 00:47:09 +0900 subrepo: use vfs.rmtree instead of shutil.rmtree
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24690
subrepo: use vfs.rmtree instead of shutil.rmtree This patch also removes useless "shutil" import.
Sat, 11 Apr 2015 00:47:09 +0900 vfs: add rmtree
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24689
vfs: add rmtree This duplicates "onerror()" function from "svnsubrepo.remove()" for equivalence of replacing in subsequent patch. This "onerror()" function for "shutil.rmtree()" was introduced by 92b0d669637f, which avoids failure of removing svn repository on Windows.
Sat, 11 Apr 2015 00:47:09 +0900 subrepo: use vfs.readdir instead of os.listdir to avoid expensive stat calls
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24688
subrepo: use vfs.readdir instead of os.listdir to avoid expensive stat calls "kind" information given from "vfs.readdir()" makes expensive stat calls "os.path.isdir()" and "os.path.islink()" useless.
Fri, 10 Apr 2015 08:05:50 +0300 editor: prefer 'intermediate-source' extra to use for HGREVISION environment variable
Alexander Drozdov <al.drozdov@gmail.com> [Fri, 10 Apr 2015 08:05:50 +0300] rev 24687
editor: prefer 'intermediate-source' extra to use for HGREVISION environment variable Revision 51930a7180bd ('graft: record intermediate grafts in extras') introduced 'intermediate-source' extra which refers to the closest graft source. As 'intermediate-source' extra provides more detailed information about the source changeset than 'source' one, it is better to prefer the first one to use as a value of HGREVISION environment variable for an editor.
Thu, 09 Apr 2015 16:25:48 -0400 bundle2: rename format, parts and config to final names
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 09 Apr 2015 16:25:48 -0400] rev 24686
bundle2: rename format, parts and config to final names It is finally time to freeze the bundle2 format! To do so we: - rename HG2Y to HG20, - drop "b2x:" prefix from all part names, - rename capability to "bundle2-exp" to "bundle2" - rename the hook flag from 'bundle2-exp' to 'bundle2'
Wed, 08 Apr 2015 09:38:09 -0700 manifestdict: extract condition for _intersectfiles() and use for walk()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 09:38:09 -0700] rev 24685
manifestdict: extract condition for _intersectfiles() and use for walk() The condition on which manifestdict.matches() and manifestdict.walk() take the fast path of iterating over files instead of the manifest, is slightly different. Specifically, walk() does not take the fast path for exact matchers and it does not avoid taking the fast path when there are more than 100 files. Let's extract the condition so we don't have to maintain it in two places and so walk() can gain these two missing pieces of the condition (although there seems to be no current caller of walk() with an exact matcher).
Tue, 07 Apr 2015 22:40:25 -0700 manifestdict.walk: remove now-redundant check for match.files()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 07 Apr 2015 22:40:25 -0700] rev 24684
manifestdict.walk: remove now-redundant check for match.files() When checking whether we can take the fast path of iterating over matcher files instead of manifest files, we check whether match.files() is non-empty. However, now that return early for match.always(), it can only be empty when there are only include/exclude patterns, but in that case anypats() will be True, so it's already covered. This makes manifestdict.walk() more similar to manifestdict.matches().
Tue, 07 Apr 2015 21:08:23 -0700 manifest.walk: special-case match.always() for speed
Martin von Zweigbergk <martinvonz@google.com> [Tue, 07 Apr 2015 21:08:23 -0700] rev 24683
manifest.walk: special-case match.always() for speed This cuts down the run time of hg files -r . > /dev/null from ~0.850s to ~0.780s on the Firefox repo. Note that manifest.matches() already has the corresponding optimization.
Tue, 07 Apr 2015 22:36:17 -0700 manifest.walk: use return instead of StopIteration in generator
Martin von Zweigbergk <martinvonz@google.com> [Tue, 07 Apr 2015 22:36:17 -0700] rev 24682
manifest.walk: use return instead of StopIteration in generator Using "return" within a generator is supposedly more Pythonic than raising StopIteration.
Wed, 08 Apr 2015 23:30:02 +0900 archive: look for first visible revision to build repo identity (issue4591)
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 23:30:02 +0900] rev 24681
archive: look for first visible revision to build repo identity (issue4591) No test for the case where all revisions are hidden because "archive" command aborts if the target revision is null.
Wed, 08 Apr 2015 22:42:37 +0900 largefiles: use common function to build content of .hg_archival.txt
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 22:42:37 +0900] rev 24680
largefiles: use common function to build content of .hg_archival.txt This fixes the missing "changessincelatesttag" field introduced by 242d11819c6c.
Wed, 08 Apr 2015 22:38:46 +0900 test-largefiles: verify content of .hg_archival.txt
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 22:38:46 +0900] rev 24679
test-largefiles: verify content of .hg_archival.txt
Wed, 08 Apr 2015 22:37:03 +0900 archive: extract metadata() closure to module-level function
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 22:37:03 +0900] rev 24678
archive: extract metadata() closure to module-level function This function will be reused in largefiles.
Wed, 08 Apr 2015 22:31:04 +0900 archive: use ctx object consistently to build meta data
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 22:31:04 +0900] rev 24677
archive: use ctx object consistently to build meta data
Wed, 08 Apr 2015 21:04:06 +0900 templatekw: have {manifest} use ctx.manifestnode() for consistency
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 21:04:06 +0900] rev 24676
templatekw: have {manifest} use ctx.manifestnode() for consistency changeset_printer was updated at f57640bf10d4 to not access changeset by index.
Fri, 10 Apr 2015 00:36:42 +0900 subrepo: use vfs.reljoin instead of os.path.join
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24675
subrepo: use vfs.reljoin instead of os.path.join
Fri, 10 Apr 2015 00:36:42 +0900 subrepo: inline reporelpath into abstractsubrepo._relpath to centralize logic
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24674
subrepo: inline reporelpath into abstractsubrepo._relpath to centralize logic "reporelpath()" is referred only from "abstractsubrepo._relpath()".
Fri, 10 Apr 2015 00:36:42 +0900 subrepo: add _relpath field to centralize subrelpath logic
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24673
subrepo: add _relpath field to centralize subrelpath logic This patch adds propertycache-ed "_relpath" field to "abstractsubrepo", to centralize "subrelpath" logic into it. Now, "subrelpath()" can always return "_relpath" field of the specified subrepo object, because it is ensured that subrepo object has it. To reduce changes in this patch, "subrelpath()" itself is still kept, even though it seems to be redundant. This is also a part of eliminating "os.path.*" API invocations for "Windows UTF-8 Plan".
Fri, 10 Apr 2015 00:36:42 +0900 subrepo: add wvfs field to access the working directory via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24672
subrepo: add wvfs field to access the working directory via vfs This patch doesn't create vfs object in "abstractsubrepo.__init__()" but adds propertycache-ed "wvfs" field, because the latter can: - delay vfs instantiation until it is actually needed - allow to use "hgsubrepo._repo.wvfs" as "wvfs" "hgsubrepo._repo" is initialized after "abstractsubrepo.__init__()" invocation, and passing "hgsubrepo._repo.wvfs" to "abstractsubrepo.__init__()" is difficult.
Fri, 10 Apr 2015 00:36:42 +0900 subrepo: change arguments of abstractsubrepo.__init__ (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24671
subrepo: change arguments of abstractsubrepo.__init__ (API) This patch passes "ctx" and "path" instead of "ui" to "abstractsubrepo.__init__()" and stores them as "_ctx" and "_path" to use them in subsequent patches. This also removes redundant field initializations in the constructor of classes derived from "abstractsubrepo".
Tue, 07 Apr 2015 15:18:52 -0700 treemanifest: optimize treemanifest._walk() to skip directories
Drew Gottlieb <drgott@google.com> [Tue, 07 Apr 2015 15:18:52 -0700] rev 24670
treemanifest: optimize treemanifest._walk() to skip directories This makes treemanifest.walk() not visit submanifests that are known not to have any matching files. It does this by calling match.visitdir() on submanifests as it walks. This change also updates largefiles to be able to work with this new behavior in treemanifests. It overrides match.visitdir(), the function that dictates how walk() and matches() skip over directories. The greatest speed improvements are seen with narrower scopes. For example, this commit speeds up the following command on the Mozilla repo from 1.14s to 1.02s: hg files -r . dom/apps/ Whereas with a wider scope, dom/, the speed only improves from 1.21s to 1.13s. As with similar a similar optimization to treemanifest.matches(), this change will bring out even bigger performance improvements once treemanifests are loaded lazily. Once that happens, we won't just skip over looking at submanifests, but we'll skip even loading them.
Wed, 08 Apr 2015 22:31:50 -0400 import-checker: force 'fcntl', 'grp', 'pwd', and 'termios' to stdlib modules
Matt Harbison <matt_harbison@yahoo.com> [Wed, 08 Apr 2015 22:31:50 -0400] rev 24669
import-checker: force 'fcntl', 'grp', 'pwd', and 'termios' to stdlib modules These are Unix only, and caused these additional warnings on Windows if they aren't hardcoded as stdlib: mercurial/posix.py mixed imports stdlib: errno, getpass, os, socket, stat, sys, tempfile relative: grp, pwd, unicodedata mercurial/posix.py mixed imports stdlib: re relative: fcntl mercurial/posix.py mixed imports stdlib: array relative: termios Additionally, this was missing on Windows: mercurial/crecord.py mixed imports stdlib: fcntl, termios relative: curses https://docs.python.org/2/library/fcntl.html https://docs.python.org/2/library/grp.html https://docs.python.org/2/library/pwd.html https://docs.python.org/2/library/termios.html
Wed, 08 Apr 2015 22:23:51 -0400 import-checker: allow *.pyd based stdlib modules
Matt Harbison <matt_harbison@yahoo.com> [Wed, 08 Apr 2015 22:23:51 -0400] rev 24668
import-checker: allow *.pyd based stdlib modules These are Windows dlls, and eliminate the following import check diffs that are not on Unix: mercurial/changegroup.py mixed imports stdlib: os, struct, tempfile, zlib relative: bz2 mercurial/encoding.py mixed imports stdlib: locale, os relative: unicodedata
Tue, 07 Apr 2015 22:35:44 -0700 manifest.walk: join nested if-conditions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 07 Apr 2015 22:35:44 -0700] rev 24667
manifest.walk: join nested if-conditions This makes it more closely match the similar condition in manifestdict.matches().
Wed, 08 Apr 2015 10:01:31 -0700 manifestdict: inline _intersectfiles()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 10:01:31 -0700] rev 24666
manifestdict: inline _intersectfiles() The _intersectfiles() method is only called from one place, it's pretty short, and its caller has to be aware when it's appropriate to call it (when the number of files in the matcher is not too large), so let's inline it.
Wed, 08 Apr 2015 10:03:59 -0700 manifestdict._intersectfiles: avoid one level of property indirection
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 10:03:59 -0700] rev 24665
manifestdict._intersectfiles: avoid one level of property indirection We have already bothered to extract "lm = self._lm", so let's use "lm" where possible.
Wed, 08 Apr 2015 10:06:05 -0700 manifestdict.matches: avoid name 'lm' for a not-lazymanifest
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 10:06:05 -0700] rev 24664
manifestdict.matches: avoid name 'lm' for a not-lazymanifest
Tue, 24 Mar 2015 21:25:57 +0100 commands: add ui.statuscopies config knob
Mathias De Maré <mathias.demare@gmail.com> [Tue, 24 Mar 2015 21:25:57 +0100] rev 24663
commands: add ui.statuscopies config knob statuscopies enables viewing of copies and moves in 'hg status' by default.
Sat, 04 Apr 2015 22:30:59 +0900 changelog: inline revlog.__contains__ in case it is used in hot loop
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Apr 2015 22:30:59 +0900] rev 24662
changelog: inline revlog.__contains__ in case it is used in hot loop Currently __contains__ is called only by "rev()" revset, but "x in cl" is a function that is likely to be used in hot loop. revlog.__contains__ is simple enough to duplicate to changelog, so just inline it.
Wed, 08 Apr 2015 02:56:19 +0900 bookmarks: show detailed status about outgoing bookmarks
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 08 Apr 2015 02:56:19 +0900] rev 24661
bookmarks: show detailed status about outgoing bookmarks Before this patch, "hg outgoing -B" shows only difference of bookmarks between two repositories, and it isn't user friendly. This patch shows detailed status about outgoing bookmarks at "hg outgoing -B". To avoid breaking backward compatibility with other tool chains, this patch shows status, only if --verbose is specified,
(0) -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip