Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18960
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18959
check-code: catch trailing space in comments
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18958
spelling: fix typos and spelling errors
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:54:18 +0200] rev 18957
wireproto: clarify cryptic 'remote: unsynced changes' error message on push
The message was not very much to the point and did not in any way help an
ordinary user.
'repository changed while preparing/uploading bundle - please try again'
is more correct, gives the user some understanding of what is going on, and
tells how to 'recover' from the situation.
The 'bundle' aspect could be seen as an implementation detail that shouldn't be
mentioned, but I think it helps giving an exact error message.
The message could still leave the user wondering why Mercurial doesn't lock the
repo and how unsafe it thus is. Explaining that is however too much detail.
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Feb 2013 00:43:12 +0100] rev 18956
export: export working directory parent by default
A common usecase for export is to preview the patch that will be patchbombed or
to see what changed in a revision found by bisect. Showing the working
directory parent is thus a useful and obvious default.
Mads Kiilerich <madski@unity3d.com> [Wed, 10 Apr 2013 13:12:24 +0200] rev 18955
commit: allow closing "non-head" changesets
Backout
acd61dc44a39. The changeset prevented closing non-head changesets but
did not provide any rationale or test case and I don't see what value it adds.
Users might have their reasons to commit something anywhere - and close it
immediately.
And contrary to the comment that is removed: The topo heads set is _not_
included in the branch heads set of the current branch. It do not include
closed topological heads.
The change thus prevented closing commits on top of closing commits. A valid
usecase for that is to merge closed heads to reduce the number of topological
heads.
The only existing test coverage for this is the failing double close in
test-revset.t. It was added in
3cc2e34d7a7d and seems to not be intentional.
Mads Kiilerich <mads@kiilerich.com> [Wed, 13 Jun 2012 23:06:34 +0200] rev 18954
record: ignore trailing content when parsing patches - introduce 'other' lines
This makes record work more like import which ignores for instance mail footers
in a patch file.
This also makes it possible for TortoiseHg to preview unapplied patches
containing such footers.
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 19:03:33 +0200] rev 18953
record: abort on malformed patches instead of crashing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18952
localrepo: use "vfs.rename()" instead of "util.rename()"
This patch makes "_journalfiles()" return a list of pairs of journal
file and corresponded vfs instance instead of a list of journal files
in full path, to use "vfs.rename()" instead of "util.rename()" in
"aftertrans()".
"undofiles()" still returns a list of undo files in full path, because
"repair.strip()" expects such list. It'll be also made to return a
list of pairs of undo file and corresponded vfs at vfs migration for
"repair.strip()" in the near future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18951
localrepo: use "vfs.setflags()" instead of "util.setflags()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18950
localrepo: use "vfs.readlink()" instead of "os.readlink()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18949
localrepo: use "vfs.islink()" instead of "os.path.islink()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18948
localrepo: use "vfs.rename()" instead of "util.rename()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18947
localrepo: use "vfs.exists()" instead of "os.path.exists()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18946
localrepo: use vfs instead of "os.path.*" in sharedpath checking
In the point of view of efficiency, "vfs" instance created in this
patch should be passed to and reuse in "store.store()" invocation just
after patched code block, because "store" object is initialized by vfs
created with "self.sharedpath".
eBut to focus just on migration from direct file I/O API accessing to
vfs, this patch uses created vfs as temporary one. Refactoring around
"store.store()" invocation will be done in the future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18945
vfs: split "expand" into "realpath"/"expandpath" to apply each separately
Before this patch, vfs constructor applies both "util.expandpath()"
and "os.path.realpath()" on "base" path, if "expand" is True.
This patch splits it into "realpath" and "expandpath", to apply each
functions separately: this splitting can allow to use vfs also where
one of each is not needed.
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Jan 2013 15:54:09 +0100] rev 18944
unionrepo: read-only operations on a union of two localrepos
unionrepo is just like bundlerepo without bundles.
The implementation is very similar to bundlerepo, but I don't see any obvious
way to generalize it.
Some most obvious use cases for this would be log and diff across local repos,
as a kind of preview of pulls, for instance:
$ hg -R union:repo1+repo2 heads
$ hg -R union:repo1+repo2 log -r REPO1REV -r REPO2REV
$ hg -R union:repo1+repo2 log -r '::REPO1REV-::REPO2REV'
$ hg -R union:repo1+repo2 log -r 'ancestor(REPO1REV,REPO2REV)'
$ hg -R union:repo1+repo2 diff -r REPO1REV -r REPO2REV
This is going to be used in RhodeCode, and Bitbucket already uses something
similar. Having a core implementation would be beneficial.
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Apr 2013 23:52:57 +0900] rev 18943
subrepo: fix exception on revert when "all" option is omitted
Since
fafdff7e9c43, backout does not set opts['all'], which causes KeyError
at hgsubrepo.revert.
Matt Mackall <mpm@selenic.com> [Sun, 14 Apr 2013 19:05:19 -0500] rev 18942
histedit: update tests for new intervention framework
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 08 Mar 2013 21:50:27 +0100] rev 18941
test-subrepo: add tests for subrepo "storeclean" checks
These tests verify that subrepos are not pushed when their store is clean versus
a given target repository.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:21:40 +0100] rev 18940
subrepo: do not push mercurial subrepos whose store is clean
This patch stops mercurial from pushing unmodified subrepos. An unmodified
subrepo is one whose store is "clean" versus a given target subrepo.
Note that subrepos may have a clean store versus a target repo but not versus another. This patch handles this scenario by individually keeping track of the state of the store versus all push targets.
Tests will be added on the following revision.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:18:53 +0100] rev 18939
subrepo: implement "storeclean" method for mercurial subrepos
The mercurial subrepo "storeclean" method works by calculating a "store hash" of
the repository state and comparing it to a cached store hash. The store hash is
always cached when the repository is cloned from or pushed to a remote
repository, but also on pull as long as the repository already had a clean
store. If the hashes match the store is "clean" versus the selected repository.
Note that this method is currenty unused, but it will be used by a later patch.
The store hash is calculated by hashing several key repository files, such as
the bookmarks file the phaseroots file and the changelog. Note that the hash
comparison is done file by file so that we can exit early if a pair of hashes
do not match. Also the hashes are calculated starting with the file that is
most likely to be smaller upto the file that is more likely to be larger.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 11:44:13 +0100] rev 18938
util: add notindexed optional parameter to makedirs function
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:11:20 +0100] rev 18937
subrepo: introduce storeclean method
Currently this method is unused and it is not implemented for any specific
subrepo type (it always returns False). It receives a remote repository path
because a repository may have a clean store versus a given repository but not
versus another.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 00:07:00 +0100] rev 18936
subrepo: introduce storeclean helper functions
These helper functions are currently unused but will be used to implement the
cleanstore method that will be introduced later.
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:17:46 -0600] rev 18935
dispatch: exit with status 1 for an InterventionRequired exception (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:27:49 -0600] rev 18934
histedit: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:27:59 -0600] rev 18933
rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:28:24 -0600] rev 18932
dispatch: catch InterventionRequired and print the message with no prefix
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 14:26:03 -0600] rev 18931
error: introduce new InterventionRequired exception
Future changes will use this type instead of util.Abort for signalling
the user that intervention is required, as in some rebase and histedit
aborts.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 19:48:07 -0700] rev 18930
util: remove unreachable code
Found by Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 19:33:48 -0700] rev 18929
util: remove no-op assignment
Found by Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:49:14 -0700] rev 18928
merge more evolve stuff away (what?)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:48:02 -0700] rev 18927
synthrepo: add missing import of sys
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:44:22 -0700] rev 18926
transplant: pass source through to recover
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:25:27 -0700] rev 18925
repoview: remove more unreachable code
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:35:26 -0700] rev 18924
merge away some failed evolve fat-fingering
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:35:56 -0700] rev 18923
pager: add missing imports of errno and shlex
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:33:24 -0700] rev 18922
largefiles: quiet (and document) undefined name errors (
issue3886)
These names were found using Cython; I was completely puzzled until
I searched the rest of the tree. It's icky to mess with another
module's namespace, but ickier yet to do so without a comment :-)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:27:09 -0700] rev 18921
color: add missing import of error
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:20:09 -0700] rev 18920
pvec: use the correct name for an identifier
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:18:52 -0700] rev 18919
repoview: remove unreachable code
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:20:09 -0700] rev 18918
pvec: use the correct name for an identifier
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:18:52 -0700] rev 18917
repoview: remove unreachable code
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:17:35 -0700] rev 18916
mail: add missing import of sys
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:17:05 -0700] rev 18915
statichttprepo: add missing import of os
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:16:37 -0700] rev 18914
worker: add missing import of errno
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 16:01:18 -0700] rev 18913
histedit: support editing of the first commit (
issue3767)
Augie Fackler <raf@durin42.com> [Fri, 12 Apr 2013 17:00:42 -0400] rev 18912
test-commit-amend.t: fix check-code violation from
3a72c89a83ec
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Feb 2013 00:43:12 +0100] rev 18911
util: improve doc for checkcase
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:41:22 +0200] rev 18910
scheme: don't crash on invalid URLs
Brodie Rao <brodie@sf.io> [Fri, 08 Feb 2013 21:08:34 +0000] rev 18909
amend: support amending merge changesets (
issue3778)
Bryan O'Sullivan <bryano@fb.com> [Thu, 11 Apr 2013 13:30:31 -0700] rev 18908
worker: catch all exceptions, try to exit usefully/safely
Bryan O'Sullivan <bryano@fb.com> [Thu, 11 Apr 2013 13:30:27 -0700] rev 18907
lock: if we fork, ensure that only the parent releases
This prevents us from having a bunch of errant worker processes all try
to release a lock if a problem occurs. (Releasing the lock more than once
is harmless; it's invoking the associated callbacks we want to avoid.)
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:44:22 +0200] rev 18906
tag: clarify cryptic error message when tagging null revision
Mads Kiilerich <mads@kiilerich.com> [Fri, 12 Apr 2013 16:55:34 -0400] rev 18905
setup: make error message for missing Python headers more helpful
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 11 Feb 2013 11:20:12 +0100] rev 18904
obsolete: ensure all markers have a date
Obsolescence creates a sparse DAG mostly composed of a lot of small independent
chain of markers. Date is the only simple and "reliable" way to sort them. The
existence of a date is now enforced at creation time as I'm more and more
convinced that date will have a key role in obsolescence markers exchange.
Nikolaj Sjujskij <sterkrig@myopera.com> [Mon, 08 Apr 2013 16:51:38 +0400] rev 18903
zsh_completion: make use of `debuglabelcomplete` command
Use `debuglabelcomplete` command when populating labels list, instead of
calling `hg` three times: for branches, bookmarks and tags. Do not pass string
being completed to `hg debuglabelcomplete` (as `$words[$CURRENT]`), since it
breaks `_hg_revrange` completion (`--rev 2.5:2.5.<Tab>`) for no apparent
benefit.
Also complete `hg view` with labels, not just tags, and drop unused `_hg_tags`.
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:28 -0700] rev 18902
dirs: use mutable strings internally
perfdirs results for a working dir with 170,000 files:
Python 638 msec
C 244
C+int 192
C+int+str 168
In the large repo above, the nearly 0.5 second time improvement is
visible in commands like "hg add" and "hg update".
hg add
Python 1100 msec
C+int+str 600
hg update (with nothing to do)
Python 2800 msec
C+int+str 2240
Bryan O'Sullivan <bryano@fb.com> [Wed, 10 Apr 2013 15:08:27 -0700] rev 18901
dirs: use mutable integers internally
These integers are not visible to Python code, so this is safe.
perfdirs results for a working dir with 170,000 files:
Python 638 msec
C 244
C+int 192