Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Apr 2015 10:34:28 -0700] rev 24976
changegroup: extract condition for linkrev fastpath
The condition for taking the fastpath (or not) is used in two
places. By extracting it, we also provide a place to document what
it's about.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 07:14:53 -0700] rev 24975
lazymanifest: drop SP before some labels
These seem to be the only occurrences in our code base, so let's make
it consistent.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 07:12:39 -0700] rev 24974
lazymanifest: avoid 'bail' label when used on success path
3d485727e45e (lazymanifest: extract function for iterating to next
line, 2015-03-11) introduced a large memory leak because I stopped
running the 'bail' block in the successful case. Let's rename 'bail'
to 'done', since it has to run not only in the error case.
Augie Fackler <augie@google.com> [Wed, 06 May 2015 13:15:39 -0400] rev 24973
dockerdeb: rules to build a debian package using docker
Currently only supports jessie (current stable), but other version
should be trivial.
Augie Fackler <augie@google.com> [Thu, 07 May 2015 10:28:58 -0400] rev 24972
packaging: extract packagelib for common code from builddeb and buildrpm
Augie Fackler <augie@google.com> [Wed, 06 May 2015 13:13:54 -0400] rev 24971
builddeb: new script for building a deb package
Future work will allow us to use docker to build debs.
Right now this doesn't install any config files. I plan to do that as
a followup, but getting something basic and working checked in seems
like more of a priority than getting everything done in one big step.
This also does not create a source deb yet. I haven't looked into that
process.
Note that this declares incompatibility with the `mercurial-common`
package. It's typical for debian packages to be split between
architecture-independent bits and native bits, meaning the python bits
downstream live in mercurial-common and the c extension bits live in
mercurial. We don't do that because we want to (ideally) give users a
single deb file to install.
Augie Fackler <augie@google.com> [Wed, 06 May 2015 14:36:17 -0400] rev 24970
dockerlib: fix initcontainer for boot2docker users
This allows me to build rpm packages using boot2docker on my Mac. It's
probably a very fragile hack, but it seems to work well enough for now
that I felt it was worth sharing.
Augie Fackler <augie@google.com> [Wed, 06 May 2015 10:45:51 -0400] rev 24969
dockerlib: extract initcontainer() method
This helps contain all the logic around creating containers.
Augie Fackler <augie@google.com> [Wed, 06 May 2015 10:45:07 -0400] rev 24968
dockerlib: start extracting common functions for setting up docker
I'm about to start interacting with docker for Debian packaging too,
so it's time to centralize this so that any bugfixes I figure out
apply to both codepaths.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 17:14:00 -0700] rev 24967
run-test: ensure the test ports are available before launching test
I'm running into a systematic issue because there is always some port taken in the
1500-wide range of ports used by the test (3 for each test file).
Yuya Nishihara <yuya@tcha.org> [Fri, 08 May 2015 18:11:26 +0900] rev 24966
templater: strip single backslash before quotation mark in quoted template
db7463aa080f fixed the issue of double escapes, but it made the following
template fail with syntax error because of <\">. Strictly speaking, <\">
appears to be invalid in non-string part, but we are likely to escape <">
if surrounded by quotes, and we are used to write such templates by trial
and error.
[templates]
sl = "{tags % \"{ifeq(tag,'tip','',label('log.tag', ' {tag}'))}\"}"
So, for backward compatibility between 2.8.1 and 3.4, a single backslash
before quotation mark is stripped only in quoted template. We don't care
for <\"> in string literal in quoted template, which never worked as expected
before.
template result
--------- ------------------------
{\"\"} parse error
"{""}" {""} -> <>
"{\"\"}" {""} -> <>
{"\""} {"\""} -> <">
'{"\""}' {"\""} -> <">
"{"\""}" parse error (don't care)
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 23:18:48 -0700] rev 24965
run-tests: implement Test._testMethodName
This methods is needed internally by utilities like __repr__. I do not see any
harm in having it declared. Any actual attempt to use it to call a test would
crash, but at least random debug print in the test runner will no longer crash.
Another approach would have been to redefine the __repr__ function, but I think
it a good thing to have some respect for the base class API.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 16:43:58 -0700] rev 24964
test-subrepo-git: ignore pax_global_header when listing archive
5115d03440f4 is adding a new tar call but forgot to filter out the
pax_global_header file that some tar versions write. This is similar to what
happened in
5dda6c708138.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 14:57:02 -0700] rev 24963
test-subrepo-recursion: glob out all the date listed by unzip -l
This date output is unstable (01-01-1980 vs 1980-01-01). As the test is not
about the modification date, we glob the data out.
Caught by buildbot.
Ryan McElroy <rmcelroy@fb.com> [Tue, 14 Apr 2015 13:31:50 -0700] rev 24962
bookmarks: remove unused updatecurrentbookmark function (API)
This function was not used anywhere in core and there is no indication that
it is used elsewhere either.
Yuya Nishihara <yuya@tcha.org> [Sun, 10 May 2015 11:39:01 -0500] rev 24961
changelog: drop unnecessary override of "hasnode"
revlog.hasnode() calls self.rev(node) that takes filtering into account.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 08 May 2015 11:32:24 -0700] rev 24960
test-run-test: unset run-test specific environment variables
Otherwise variable set for the real test run interfere with the test runner
tests.
Durham Goode <durham@fb.com> [Fri, 01 May 2015 15:45:07 -0700] rev 24959
histedit: fix --continue when rules are finished
If histedit failed after all the rules were complete (for instance, if there was
an exception in the cleanup phase), you couldn't --continue because it was
unable to pop a rule. Let's just skip the rule execution phase of --continue if
there are no more rules.
Durham Goode <durham@fb.com> [Fri, 01 May 2015 15:28:47 -0700] rev 24958
histedit: fix serializing of None backupfile
If the histedit backupfile was None (like if evolve is enabled) it would get
serialized as 'None' into the state file. Later if the histedit was aborted and
the top most commit was unreachable (ex: if it was obsolete or stripped),
histedit would try to unbundle the backupfile and try to read .hg/None.
This fixes it to not serialize None. Since it only happens with evolve, I'm not
sure how to add test coverage here.
Matt Mackall <mpm@selenic.com> [Thu, 07 May 2015 14:19:20 -0500] rev 24957
merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 May 2015 08:40:59 -0700] rev 24956
treemanifest: set requires at repo creation time, ignore config after
The very next changeset will start writing one revlog per directory
when tree manifests are enabled. That is backwards incompatible, so it
requires .hg/requires to be updated. Just like with generaldelta, we
want to update .hg/requires only when the repo is created. Updating
..hg/requires is bad for repos on shared disk. Instead, those who do
want to upgrade a repo to using treemanifest (or manifestv2, etc) can
run
hg clone --config experimental.treemanifest repo clone
which will create a new repo with the requirement set. Unlike the case
of e.g. generaldelta, it will not rewrite the changesets, since tree
manifests hash differently.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 21 Apr 2015 09:29:59 -0700] rev 24955
remove: use ctx.hasdir(f) instead of 'f in ctx.dirs()'
This speeds up 'hg remove python/README' on the Firefox repo from
2.479s to 0.664s with lazily loaded treemanifests (which is not yet in
core) and has no measurable effect on flat manifests.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 04 May 2015 23:04:12 -0400] rev 24954
largefiles: drop os.path.join() in subrepo archive override
This is related to
41cd8171e58f, but not required for that to function correctly
because 'prefix' always ends with '/', so os.path.join(prefix, _path) simply
concatenates the strings. Take the opportunity to drop the os.path usage, and
avoid confusion by using the same pattern as the overridden subrepo method.
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 May 2015 20:52:38 -0400] rev 24953
archive: drop the leading '.' path component from the prefix (
issue4634)
Unix utilities like tar will happily prefix the files it packs with './', but
annoyingly, Windows Explorer will not show these packed files when it opens the
archive. Since there doesn't seem to be a point in including './' in the path
names, just drop it. The default 'hg archive' prefix is the basename of the
archive, so specifying '.' allows for that default to be disabled completely.