Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Apr 2015 18:54:33 -0700] rev 24701
treemanifest: separate flags for trees in memory and trees on disk
When we start writing tree manifests with one manifest revlog per
directory, it will still be nice to be able to run tests using tree
manifests in memory but writing to a flat manifest to a single
revlog. Let's break the current '_usetreemanifest' flag on the revlog
into '_treeinmem' and '_treeondisk'. Both are populated from the same
config, but after this change, one can temporarily hard-code
_treeinmem=True to see that tests still pass.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Apr 2015 18:13:01 -0700] rev 24700
manifestdict: drop empty-string argument when creating empty manifest
manifestdict() creates an empty manifestdict, so let's consistently
use that instead of explicitly parsing an empty string (which does
result in an empty manifest).
Mike Hommey <mh@glandium.org> [Sun, 12 Apr 2015 06:51:13 -0700] rev 24699
lazymanifest: fix memory leak in lmiter_iterentriesnext() after 3d485727e45e
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 11 Apr 2015 12:26:54 -0400] rev 24698
revert: do not requires '--all' if '--interative' is present
The '--all' option have been introduced in 890e285c52a1 (August 2006), most
probably to prevent user shooting themselves in the foot. As the record process
will let you, view and select the set of files and change you want to revert, I
feel like the '--all' flag is superfluous in the '--interactive' case.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 09 Apr 2015 16:18:38 -0400] rev 24697
bundle2: drop the experimental hooks
The series at e9ede9b4c2f8::8e13cc0825f1 introduced generic transaction level
hooking. This makes the experimental bundle2 specific hooks redundant, we drop
them.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 10 Apr 2015 15:41:33 -0400] rev 24696
bundle2: advertise bundle2 by default
That way, any new server will be ready to accept bundle2 payload. The decision
for the client to use it is still off by default so this is not turning bundle2
everywhere.
We introduce a new kill switch for this in case stuff goes wrong.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Feb 2015 12:57:40 -0500] rev 24695
subrepo: convert the os.path references in git to vfs
There are a handful of os.path references in the free functions at the top of
the module that will be trickier to remove.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24694
subrepo: use vfs.removedirs instead of os.removedirs
This patch also removes useless composing absolute path by "repo.wjoin()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 11 Apr 2015 00:47:09 +0900] rev 24693
vfs: add removedirs
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
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()".
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.
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.
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.
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.
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'
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).
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().
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.
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.
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.
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.
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 22:38:46 +0900] rev 24679
test-largefiles: verify content of .hg_archival.txt
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.
Yuya Nishihara <yuya@tcha.org> [Wed, 08 Apr 2015 22:31:04 +0900] rev 24677
archive: use ctx object consistently to build meta data
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.
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
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()".
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".
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.