Wed, 27 Mar 2013 08:57:45 -0700 check-code: fix a check-code failure in check-code
Bryan O'Sullivan <bryano@fb.com> [Wed, 27 Mar 2013 08:57:45 -0700] rev 18835
check-code: fix a check-code failure in check-code The irony is delicious.
Fri, 01 Mar 2013 00:59:22 +0100 check-code: re-add check for missing glob
Simon Heimberg <simohe@besonet.ch> [Fri, 01 Mar 2013 00:59:22 +0100] rev 18834
check-code: re-add check for missing glob As suggested by mpm reintroducing this test failure on windows is prevented by a code-check. One line in a unix test is ignored. This pattern matches 20 windows glob lines.
Fri, 01 Mar 2013 00:03:51 +0100 tests: append missing glob to filename output and check-code it
Simon Heimberg <simohe@besonet.ch> [Fri, 01 Mar 2013 00:03:51 +0100] rev 18833
tests: append missing glob to filename output and check-code it
Thu, 28 Feb 2013 23:45:51 +0100 check-code: extract windows glob warning message
Simon Heimberg <simohe@besonet.ch> [Thu, 28 Feb 2013 23:45:51 +0100] rev 18832
check-code: extract windows glob warning message it will be used often
Tue, 26 Mar 2013 16:27:51 -0700 blackbox: defer opening a log file until needed (issue3869)
Bryan O'Sullivan <bryano@fb.com> [Tue, 26 Mar 2013 16:27:51 -0700] rev 18831
blackbox: defer opening a log file until needed (issue3869) Previously, we opened the log file when creating a repo object. This was inefficient (not all repo creation is going to result in a need to log something), but more importantly it broke subrepo updates when used on NFS. * perform an update in the master repo that triggers a subrepo clone * empty subrepo already exists, and has an open, empty blackbox.log file due to it being opened eagerly/prematurely * hg decides to blow away the skeletal subrepo (see use of shutil.rmtree in subrepo._get) * we crash, due to NFS treating a delete of an open file as really a rename to a hidden ".nfs" file Now that we open the blackbox log file on demand, no file exists at the time the empty subrepo is deleted, so the above problem does not occur.
Fri, 22 Mar 2013 17:27:06 -0500 patch: match 'diff --git a/' instead of 'diff --git'
Sean Farley <sean.michael.farley@gmail.com> [Fri, 22 Mar 2013 17:27:06 -0500] rev 18830
patch: match 'diff --git a/' instead of 'diff --git' This reduces the likelihood of a traceback when trying to email a patch that happens to have 'diff --git' at the beginning of a line in the description, as this patch did: http://markmail.org/message/wxpgowxd7ucxygwe
Thu, 21 Mar 2013 18:16:49 +0100 color: drop unnecessary global statement
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:49 +0100] rev 18829
color: drop unnecessary global statement
Thu, 21 Mar 2013 18:16:49 +0100 serve: pass on the repo instad of recreating it in hgweb
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:49 +0100] rev 18828
serve: pass on the repo instad of recreating it in hgweb When we pass on the path to the repo, the repo is created in hgweb. But the repo is already here, so pass it on.
Thu, 21 Mar 2013 18:16:48 +0100 serve: pass the prepared baseui to hgweb
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:48 +0100] rev 18827
serve: pass the prepared baseui to hgweb The baseui was carefully prepared but not used. ui can contain repo specific settings which can have unwanted effects.
Thu, 21 Mar 2013 18:16:48 +0100 hgweb: do not pass on repo.ui when recreating a repo
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 18:16:48 +0100] rev 18826
hgweb: do not pass on repo.ui when recreating a repo Recreate the repo with the global configuration in repo.baseui. The repo configuration is reread anyway. And now deleted repo configuration is reset to the default value.
Wed, 10 Oct 2012 21:55:49 +0200 repo: repo isolation, do not pass on repo.ui for creating new repos
Simon Heimberg <simohe@besonet.ch> [Wed, 10 Oct 2012 21:55:49 +0200] rev 18825
repo: repo isolation, do not pass on repo.ui for creating new repos A repo should not get the configuration from an other repo, so create it with the global configuration in repo.baseui. This is done too when recreating a repo. The repo configuration is reread anyway. And now deleted repo configuration does not persist.
Mon, 04 Mar 2013 22:34:11 +0000 diff: fix binary file removals in git mode.
Johan Bjork <jbjoerk@gmail.com> [Mon, 04 Mar 2013 22:34:11 +0000] rev 18824
diff: fix binary file removals in git mode. With the previous version, a binary file removal diff generated with
Sun, 24 Mar 2013 16:56:25 -0700 manifestmerge: drop redundant flags calls
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 16:56:25 -0700] rev 18823
manifestmerge: drop redundant flags calls
Mon, 25 Mar 2013 17:41:06 -0700 manifestmerge: use dicthelpers.diff and join
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 17:41:06 -0700] rev 18822
manifestmerge: use dicthelpers.diff and join This patch improves manifestmerge performance significantly. In a repository with 170,000 files, the following results were observed on a clean working directory. Revision '.' adds one file. hg perfmergecalculate -r . - before: 0.41 seconds - after: 0.13 seconds hg perfmergecalculate -r .^ - before: 0.53 seconds - after: 0.24 seconds Comparing against '.' is much faster than comparing against '.^' because with '.', the wctx and p2 manifest strings have the same identity, so comparisons are simply pointer equality. With '.^', the strings have different identities so we need to perform memcmps. Any operation that uses manifestmerge benefits. - hg update . goes from 2.04 seconds to 1.75 - hg update .^ goes from 2.52 seconds to 2.25 - hg rebase -r . -d .~6 (involves 4 merges) goes from 11.8 seconds to 10.8
Sun, 24 Mar 2013 17:17:38 -0700 manifestdict: add a method to diff _flags
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 17:17:38 -0700] rev 18821
manifestdict: add a method to diff _flags This will be used in an upcoming patch.
Mon, 25 Mar 2013 17:40:39 -0700 mercurial: implement diff and join for dicts
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 17:40:39 -0700] rev 18820
mercurial: implement diff and join for dicts Given two dicts, diff returns a dict containing all the keys that are present in one dict but not the other, or whose values are different between the dicts. The values are pairs of the values from the dicts, with missing values being represented as an optional argument, defaulting to None. Given two dicts, join performs what is known as an outer join in relational database land: it returns a dict containing all the keys across both dicts. The values are pairs as above, except they aren't compared to see if they're the same.
Sun, 24 Mar 2013 00:06:52 +0700 convert: add closesort algorithm to mercurial sources
Constantine Linnick <theaspect@gmail.com> [Sun, 24 Mar 2013 00:06:52 +0700] rev 18819
convert: add closesort algorithm to mercurial sources If you actively work with branches, sometimes you need to close old branches which last commited hundreds revisions ago. After close you will see long lines in graph visually spoiling history. This sort only moves closed revisions as close as possible to parents and does not increase storage size as datesort do.
Sun, 24 Mar 2013 16:43:25 -0700 manifestmerge: rename n to n1 and n2
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 16:43:25 -0700] rev 18818
manifestmerge: rename n to n1 and n2 An upcoming patch will combine the two loops into one, so it's important to distinguish between nodes in m1 and nodes in m2.
Sun, 24 Mar 2013 17:06:10 -0700 perf: add a command to measure merge.calculateupdates perf
Siddharth Agarwal <sid0@fb.com> [Sun, 24 Mar 2013 17:06:10 -0700] rev 18817
perf: add a command to measure merge.calculateupdates perf The performance of merge.manifestmerge will be improved in upcoming patches. This command will be used to demonstrate the improvement.
Mon, 25 Mar 2013 16:57:36 -0700 hgk: fix a pyflakes error
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Mar 2013 16:57:36 -0700] rev 18816
hgk: fix a pyflakes error
Fri, 22 Mar 2013 17:03:49 -0700 dirstate.walk: fast path none-seen + match-always case for step 3
Siddharth Agarwal <sid0@fb.com> [Fri, 22 Mar 2013 17:03:49 -0700] rev 18815
dirstate.walk: fast path none-seen + match-always case for step 3 This case is a common one -- e.g. `hg diff`. For a repository with 170,000 files, this speeds up perfstatus from 0.95 seconds to 0.88.
Fri, 22 Mar 2013 17:03:00 -0700 dirstate.walk: fast path match-always case during traversal
Siddharth Agarwal <sid0@fb.com> [Fri, 22 Mar 2013 17:03:00 -0700] rev 18814
dirstate.walk: fast path match-always case during traversal This case is a common one -- e.g. `hg status`. For a repository with 170,000 files, this speeds up perfstatus --unknown from 2.15 seconds to 2.09.
Mon, 25 Mar 2013 14:22:34 -0700 largefiles: fix _always for match overrides
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 14:22:34 -0700] rev 18813
largefiles: fix _always for match overrides Upcoming patches will speed dirstate.walk up by not filtering based on the match function when match.always() is True. For that to work, match.always() needs to be accurate. Previously it wasn't so for largefiles.
Mon, 25 Mar 2013 14:12:39 -0700 dirstate.walk: remove subrepo and .hg from results before step 3
Siddharth Agarwal <sid0@fb.com> [Mon, 25 Mar 2013 14:12:39 -0700] rev 18812
dirstate.walk: remove subrepo and .hg from results before step 3 An upcoming patch will speed dirstate.walk up by not querying the results dict when it is empty. This ensures it is in some common cases. This should be safe because subrepos and .hg aren't part of the dirstate.
Mon, 25 Mar 2013 12:12:41 -0500 merge with stable
Kevin Bullock <kbullock@ringworld.org> [Mon, 25 Mar 2013 12:12:41 -0500] rev 18811
merge with stable
Fri, 22 Mar 2013 10:56:55 -0700 blackbox: account for another source of errors
Bryan O'Sullivan <bryano@fb.com> [Fri, 22 Mar 2013 10:56:55 -0700] rev 18810
blackbox: account for another source of errors
Tue, 16 Oct 2012 22:44:14 +0200 hgk: remove regsub, split on \r instead
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 22:44:14 +0200] rev 18809
hgk: remove regsub, split on \r instead No need to regsub all \r\n's to \n's, we can just split on \r as well; this may produce extra empty elements in the list, but they won't match anyway.
Tue, 16 Oct 2012 22:41:44 +0200 hgk: simplify tags parser
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 22:41:44 +0200] rev 18808
hgk: simplify tags parser As when hg tags is being called without -v option, it returns lines with two elements in each, we can just interate them as if it were a usual Tcl list using foreach and two variables. Line endings and whitespace don't matter when doing so, so we may keep them as is. When we're processing the lines, tag variable is assigned a tag name, and rev is a string in form of revision:hash which we can split on colon. As Tcl8.4 lacks lassign command, and using lindex makes code a bit less readable, we use foreach to iterate over two-element list.
Fri, 22 Mar 2013 09:19:41 -0700 hgk: add support for phases
Andrew Shadura <bugzilla@tut.by> [Fri, 22 Mar 2013 09:19:41 -0700] rev 18807
hgk: add support for phases Add support for phases. Update tests.
Sun, 10 Mar 2013 16:42:23 +0100 hgk: in popups, replace labels with window titles
Andrew Shadura <bugzilla@tut.by> [Sun, 10 Mar 2013 16:42:23 +0100] rev 18806
hgk: in popups, replace labels with window titles Replace labels with window titles. That also requires to change grid placement manager settings to compensate padding which used to be applied to now non-existent labels.
Sun, 10 Mar 2013 16:42:16 +0100 hgk: update backgroud colour when Ttk is available
Andrew Shadura <bugzilla@tut.by> [Sun, 10 Mar 2013 16:42:16 +0100] rev 18805
hgk: update backgroud colour when Ttk is available Ttk doesn't automatically set up Tk colour palette. Because of that, Ttk controls look differently when used together with old Tk controls. When we use Ttk controls, we first query if we have any setting for the client background, and if we do, we update Tk palette as well.
Tue, 16 Oct 2012 15:31:56 +0200 hgk: fix pop-up windows
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 15:31:56 +0200] rev 18804
hgk: fix pop-up windows Create pop-up windows properly so they go to the floating layer in tiling window managers.
Sun, 10 Mar 2013 16:12:26 +0100 hgk: don't use fixed format for dates
Andrew Shadura <bugzilla@tut.by> [Sun, 10 Mar 2013 16:12:26 +0100] rev 18803
hgk: don't use fixed format for dates Don't pass -format with a date format string, use default instead so users can use their own preferences.
Sun, 10 Mar 2013 16:07:57 +0100 hgk: reformat changsets fields
Andrew Shadura <bugzilla@tut.by> [Sun, 10 Mar 2013 16:07:57 +0100] rev 18802
hgk: reformat changsets fields Rename Author to User. Rename Revision to Changeset. Put Date on its own line.
Tue, 16 Oct 2012 15:07:41 +0200 hgk: drop committer field from the UI
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 15:07:41 +0200] rev 18801
hgk: drop committer field from the UI Remove Committer field, it doesn't make sense in Hg.
Thu, 21 Mar 2013 22:42:51 -0700 test-completion: test completion of tags
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 22:42:51 -0700] rev 18800
test-completion: test completion of tags
Thu, 21 Mar 2013 22:29:31 -0700 debugpathcomplete: satisfy the code checker
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 22:29:31 -0700] rev 18799
debugpathcomplete: satisfy the code checker
Thu, 21 Mar 2013 22:26:01 -0700 tests: test debugpathcomplete and debuglabelcomplete
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 22:26:01 -0700] rev 18798
tests: test debugpathcomplete and debuglabelcomplete
Thu, 21 Mar 2013 22:22:21 -0700 tests: rename test-debugcomplete.t to test-completion.t
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 22:22:21 -0700] rev 18797
tests: rename test-debugcomplete.t to test-completion.t
Thu, 21 Mar 2013 22:10:54 -0700 pathcomplete: complete directories more conservatively
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 22:10:54 -0700] rev 18796
pathcomplete: complete directories more conservatively Suppose we want to perform a single-level completion (i.e. without --full) of "fi" in a repo containing "fee", "fie/dead", "fie/live", and "foe". If we give back "fie/" as the only answer, the shell will consider the completion to be unambiguous, and will append a space after the completion. We can't complete "fie/live" or "fie/dead" without first backspacing over that space. We used to thus create two fake names, "fie/a" and "fie/b", to force the shell to consider the completion to be ambiguous. It would then stop at "fie/" without appending a space, allowing us to hit tab again to complete "fie/live" or "fie/dead". The change here arises from realising that we only need to force the shell to consider a completion as ambiguous if we have exactly one directory and zero files as possible completions. This prevents spurious names from showing up as possible completions when they don't need to be invented in the first place.
Thu, 21 Mar 2013 21:20:40 -0700 sadclown: another test failure eluded me
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 21:20:40 -0700] rev 18795
sadclown: another test failure eluded me
Thu, 21 Mar 2013 21:07:22 -0700 bash_completion: recognize normal command abbreviations
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 21:07:22 -0700] rev 18794
bash_completion: recognize normal command abbreviations In many common cases, this eliminates a call to "hg help" to get a complete command name, thus improving responsiveness.
Thu, 21 Mar 2013 16:31:29 -0700 completion: selectively use debugpathcomplete in bash_completion
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 16:31:29 -0700] rev 18793
completion: selectively use debugpathcomplete in bash_completion The current bash_completion code can be very slow in a large working directory. It always uses "hg status" to generate possibly matching files, which checks the status of every file. We often don't care about status when completing, so that cost is very high. As the new debugpathcomplete command does not check the status of files, it offers much better performance for commands that only care about completing names.
Thu, 21 Mar 2013 16:31:28 -0700 completion: add a debugpathcomplete command
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 16:31:28 -0700] rev 18792
completion: add a debugpathcomplete command The bash_completion code uses "hg status" to generate a list of possible completions for commands that operate on files in the working directory. In a large working directory, this can result in a single tab-completion being very slow (several seconds) as a result of checking the status of every file, even when there is no need to check status or no possible matches. The new debugpathcomplete command gains performance in a few simple ways: * Allow completion to operate on just a single directory. When used to complete the right commands, this considerably reduces the number of completions returned, at no loss in functionality. * Never check the status of files. For completions that really must know if a file is modified, it is faster to use status: hg status -nm 'glob:myprefix**' Performance: Here are the commands used by bash_completion to complete, run in the root of the mozilla-central working dir (~77,000 files) and another repo (~165,000 files): All "normal state" files (used by e.g. remove, revert): mozilla other status -nmcd 'glob:**' 1.77 4.10 sec debugpathcomplete -f -n 0.53 1.26 debugpathcomplete -n 0.17 0.41 ("-f" means "complete full paths", rather than the current directory) Tracked files matching "a": mozilla other status -nmcd 'glob:a**' 0.26 0.47 debugpathcomplete -f -n a 0.10 0.24 debugpathcomplete -n a 0.10 0.22 We should be able to further improve completion performance once the critbit work lands. Right now, our performance is limited by the need to iterate over all keys in the dirstate.
Thu, 21 Mar 2013 11:35:34 -0700 tests: add new command to test-debugcomplete
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 11:35:34 -0700] rev 18791
tests: add new command to test-debugcomplete
Thu, 21 Mar 2013 10:51:18 -0700 completion: add a debuglabelcomplete command
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 10:51:18 -0700] rev 18790
completion: add a debuglabelcomplete command When completing a "label" (a symbolic name for a commit), the bash_completion script currently has to invoke hg three times. For a large repository, the cost of starting up and loading all the necessary context over and over is very high. For instance, in mozilla-central: time (export HGPLAIN=1; hg tags -q; hg bookmarks -q; hg branches) >/dev/null 0.446 sec Compare with the debuglabelcomplete command that this commit adds: time hg debuglabelcomplete >/dev/null 0.148 sec This greatly helps responsiveness.
Thu, 21 Mar 2013 09:13:16 -0700 bash_completion: nuke a duplicated function
Bryan O'Sullivan <bryano@fb.com> [Thu, 21 Mar 2013 09:13:16 -0700] rev 18789
bash_completion: nuke a duplicated function
Thu, 21 Mar 2013 08:56:21 +0100 run-tests: only sort files when not given as argument
Simon Heimberg <simohe@besonet.ch> [Thu, 21 Mar 2013 08:56:21 +0100] rev 18788
run-tests: only sort files when not given as argument os.listdir returns the files in any order. This has to be sorted. But when given as argument, the user should be allowed to set any order. This restores the behaviour before 9848a94e2a.
Wed, 20 Mar 2013 13:40:06 -0700 blackbox: use util.getuser for portability
Bryan O'Sullivan <bryano@fb.com> [Wed, 20 Mar 2013 13:40:06 -0700] rev 18787
blackbox: use util.getuser for portability On Windows, our implementation is more robust than Python's version.
Wed, 20 Mar 2013 13:40:05 -0700 blackbox: prevent failed I/O from causing hg to abort
Bryan O'Sullivan <bryano@fb.com> [Wed, 20 Mar 2013 13:40:05 -0700] rev 18786
blackbox: prevent failed I/O from causing hg to abort Instead, we simply print a warning message if opening the blackbox log file fails, or if writing to it fails.
Tue, 19 Mar 2013 16:19:45 -0700 merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 19 Mar 2013 16:19:45 -0700] rev 18785
merge with crew-stable
Tue, 19 Mar 2013 13:49:34 -0700 largefiles: don't query the dirstate for key None
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Mar 2013 13:49:34 -0700] rev 18784
largefiles: don't query the dirstate for key None lfutil.splitstandin(f) can be None, and we query the dirstate for that without checking if it is. This will cause problems with the upcoming move to critbit- based dicts, since they only support strings as keys.
Mon, 18 Mar 2013 19:59:05 -0500 merge
Kevin Bullock <kbullock@ringworld.org> [Mon, 18 Mar 2013 19:59:05 -0500] rev 18783
merge
Sat, 16 Mar 2013 22:48:22 -0500 bookmarks: moving the active bookmark deactivates it
Kevin Bullock <kbullock@ringworld.org> [Sat, 16 Mar 2013 22:48:22 -0500] rev 18782
bookmarks: moving the active bookmark deactivates it After this change, moving the active bookmark somewhere other than the current changeset (i.e., with --rev) deactivates it. Previously it would remain in .hg/bookmarks.current, which seems like a bug.
Sat, 16 Mar 2013 21:36:44 -0500 bookmarks: allow (re-)activating a bookmark on the current changeset
Kevin Bullock <kbullock@ringworld.org> [Sat, 16 Mar 2013 21:36:44 -0500] rev 18781
bookmarks: allow (re-)activating a bookmark on the current changeset Allow a bookmark that points to the current changeset to be made the active bookmark without requiring --force. Previously, this would've aborted with: abort: bookmark 'Z' already exists (use -f to force)
Mon, 18 Mar 2013 16:37:20 -0500 applyupdates: assign variable before we try to use it (issue3855)
Kevin Bullock <kbullock@ringworld.org> [Mon, 18 Mar 2013 16:37:20 -0500] rev 18780
applyupdates: assign variable before we try to use it (issue3855) The variable 'fd' was getting used with a value left over from a prior iteration, causing a KeyError: '.hgsubstate'.
Mon, 18 Mar 2013 16:04:10 -0500 revset: don't abort when regex to tag() matches nothing (issue3850)
Kevin Bullock <kbullock@ringworld.org> [Mon, 18 Mar 2013 16:04:10 -0500] rev 18779
revset: don't abort when regex to tag() matches nothing (issue3850) This makes the tag("re:...") revset consistent with branch("re:...").
Fri, 15 Mar 2013 11:23:29 -0700 rebase: fix --collapse when a file was added then removed
Durham Goode <durham@fb.com> [Fri, 15 Mar 2013 11:23:29 -0700] rev 18778
rebase: fix --collapse when a file was added then removed When a series of commits first adds a file and then removes it, hg rebase --collapse prompts whether to keep the file or delete it. This is due to it reusing the branch merge code. In a noninteractive terminal it defaults to keeping the file, which results in a collapsed commit that is has a file that should be deleted. This bug resulted in developers accidentally commiting unintentional changes to our repo twice today, so it's fairly important to get fixed. This change allows rebase --collapse to tell the merge code to accept the latest version every time without prompting. Adds a test as well.
Sun, 17 Mar 2013 23:27:14 -0500 Merge
Augie Fackler <raf@durin42.com> [Sun, 17 Mar 2013 23:27:14 -0500] rev 18777
Merge
Mon, 11 Mar 2013 12:07:33 -0700 grep: use re2 if possible
Bryan O'Sullivan <bryano@fb.com> [Mon, 11 Mar 2013 12:07:33 -0700] rev 18776
grep: use re2 if possible Since re2 is enormously faster than Python's re module, this should help performance, ceteris paribus. grep currently has other huge performance problems that mask any gain :-(
Mon, 11 Mar 2013 12:06:13 -0700 util: add flag support to compilere
Bryan O'Sullivan <bryano@fb.com> [Mon, 11 Mar 2013 12:06:13 -0700] rev 18775
util: add flag support to compilere
Sat, 16 Mar 2013 21:21:54 -0500 bookmarks: fix test broken by 0bba1ff2ac7b
Kevin Bullock <kbullock@ringworld.org> [Sat, 16 Mar 2013 21:21:54 -0500] rev 18774
bookmarks: fix test broken by 0bba1ff2ac7b The added test reflects an error in printing the origin node of the bookmark that I fixed before committing, but I forgot to update the test (whoops).
Fri, 15 Mar 2013 23:39:07 -0500 bookmarks: allow moving a bookmark forward to a descendant
Kevin Bullock <kbullock@ringworld.org> [Fri, 15 Mar 2013 23:39:07 -0500] rev 18773
bookmarks: allow moving a bookmark forward to a descendant Allow 'hg bookmark MARK', with an existing bookmark MARK, to move the bookmark forward to the current or specified revision, if the target revision is a descendant of the revision the bookmark currently points to. Prints a status message including the revision the bookmark was formerly at: $ hg bookmark Z moving bookmark 'Z' forward from 663762316562 Test coverage is added.
Tue, 26 Feb 2013 21:20:35 +0100 hgweb: change manifest archive links to only archive the current directory
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 26 Feb 2013 21:20:35 +0100] rev 18772
hgweb: change manifest archive links to only archive the current directory When the web server shows the manifest for a single, non top directory, append the path to the directory to the archive links. This makes the web server generate archive files that only include the current directory (and its subdirectories). Note that archive links in other pages (e.g. changeset) or at the top of the manifest are unchanged. Directory archive links have an extra "/" at the end which does not impact the result of the archive operation. Keeping it there made the implementation of this feature simpler.
Sun, 10 Feb 2013 11:52:05 +0100 hgweb: teach archive how to download a specific directory or file
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 10 Feb 2013 11:52:05 +0100] rev 18771
hgweb: teach archive how to download a specific directory or file The archive web command now takes into account the "file" request entry, if one is provided. The provided "file" is processed as a "path" corresponding to a directory or file that will be downloaded. With this change hgweb can to process requests such as: http://mercurial.selenic.com/hg/archive/tip.zip/mercurial/templates This will download all files on the mercurial/templates directory as a zip file. It is not possible to specify file patterns ('glob', 'relglob', 'path', 'relpath', 're', 'relre' nor 'set'). The server will reject those with a 403 HTTP error response. Note that this is a first step to add support for downloading directories from the web interface. A following patch will modify the archiveentry map entry on the different templates so that it adds the current folder path to the archive links.
Wed, 06 Feb 2013 10:06:45 +0100 test-archive: gracefully handle HTTPErrors on get-with-headers
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 06 Feb 2013 10:06:45 +0100] rev 18770
test-archive: gracefully handle HTTPErrors on get-with-headers This avoids pritting out a traceback when a get-with-headers call causes hgweb to respond with an HTTPError code.
Thu, 14 Mar 2013 16:56:10 -0700 bash_completion: tell an editor what type of file this is
Bryan O'Sullivan <bryano@fb.com> [Thu, 14 Mar 2013 16:56:10 -0700] rev 18769
bash_completion: tell an editor what type of file this is
Thu, 14 Mar 2013 16:50:53 -0700 bash_completion: allow remove to complete normal files
Bryan O'Sullivan <bryano@fb.com> [Thu, 14 Mar 2013 16:50:53 -0700] rev 18768
bash_completion: allow remove to complete normal files Previously, we only completed files that had already been manually deleted. That behaviour made no sense. We now complete unmodified, modified, and deleted files.
Thu, 14 Mar 2013 16:49:02 -0700 bash_completion: match more narrowly
Bryan O'Sullivan <bryano@fb.com> [Thu, 14 Mar 2013 16:49:02 -0700] rev 18767
bash_completion: match more narrowly This greatly helps completion performance for most commands that deal with files. In a working dir with 150,000 files, where we want to complete the name of a modified file under a path beginning with "a", from the root of the working dir: (old) hg status -nm . 1.7 sec (new) hg status -nm "glob:a**" 0.3 Even "hg add" becomes a little faster, in spite of being the worst case (matching untracked files).
Wed, 13 Mar 2013 10:43:51 -0700 blackbox: add backup bundle paths to blackbox logs
Durham Goode <durham@fb.com> [Wed, 13 Mar 2013 10:43:51 -0700] rev 18766
blackbox: add backup bundle paths to blackbox logs Writes the backup bundle paths to the blackbox so it's easy to see which backup bundle is associated with which command when you are debugging an issue. Example output: 2013/03/13 10:39:56 durham> strip tip 2013/03/13 10:39:59 durham> saved backup bundle to /data/users/durham/www-hg/.hg/strip-backup/e5fac262363a-backup.hg 2013/03/13 10:40:03 durham> strip tip exited 0 after 7.97 seconds
Tue, 12 Mar 2013 10:37:48 -0700 tests: fix test-profile to not depend on HGPROF environment variable
Durham Goode <durham@fb.com> [Tue, 12 Mar 2013 10:37:48 -0700] rev 18765
tests: fix test-profile to not depend on HGPROF environment variable The test-profile test would fail if the user had HGPROF set to another profiler in their environment. This fix makes the test independent of that environment variable. Reverts the previous attempt to fix this, which was not cross platoform.
Tue, 12 Mar 2013 10:43:59 -0700 merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Mar 2013 10:43:59 -0700] rev 18764
merge with crew-stable
Tue, 12 Mar 2013 10:37:48 -0700 tests: fix test-profile to not depend on HGPROF environment variable
Durham Goode <durham@fb.com> [Tue, 12 Mar 2013 10:37:48 -0700] rev 18763
tests: fix test-profile to not depend on HGPROF environment variable The test-profile test would fail if the user had HGPROF set to another profiler in their environment. This fix makes the test independent of that environment variable.
Sat, 09 Mar 2013 22:14:46 +0100 check-code: do not prepend "warning" to a failure message
Simon Heimberg <simohe@besonet.ch> [Sat, 09 Mar 2013 22:14:46 +0100] rev 18762
check-code: do not prepend "warning" to a failure message The prefix has not been removed when this check changed from a warning to a failure.
Sat, 09 Mar 2013 16:09:27 -0800 merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Mar 2013 16:09:27 -0800] rev 18761
merge with crew-stable
Wed, 06 Mar 2013 20:13:09 -0800 strip: make --keep option not set all dirstate times to 0
Durham Goode <durham@fb.com> [Wed, 06 Mar 2013 20:13:09 -0800] rev 18760
strip: make --keep option not set all dirstate times to 0 hg strip -k was using dirstate.rebuild() which reset all the dirstate entries timestamps to 0. This meant that the next time hg status was run every file was considered to be 'unsure', which caused it to do expensive read operations on every filelog. On a repo with >150,000 files it took 70 seconds when everything was in memory. From a cold cache it took several minutes. The fix is to only reset files that have changed between the working context and the destination context. For reference, --keep means the working directory is left alone during the strip. We have users wanting to use this operation to store their work-in-progress as a commit on a branch while they go work on another branch, then come back later and be able to uncommit that work and continue working. They currently use 'git reset HARD^' to accomplish this in git.
Fri, 08 Mar 2013 16:59:36 -0800 sshpeer: store subprocess so it cleans up correctly
Durham Goode <durham@fb.com> [Fri, 08 Mar 2013 16:59:36 -0800] rev 18759
sshpeer: store subprocess so it cleans up correctly When running 'hg pull --rebase', I was seeing this exception 100% of the time as the python process was closing down: Exception TypeError: TypeError("'NoneType' object is not callable",) in <bound method Popen.__del__ of <subprocess.Popen object at 0x937c10>> ignored By storing the subprocess on the sshpeer, the subprocess seems to clean up correctly, and I no longer see the exception. I have no idea why this actually works, but I get a 0% repro if I store the subprocess in self.subprocess, and a 100% repro if I store None in self.subprocess. Possibly related to issue 2240.
Thu, 28 Feb 2013 10:12:26 -0800 blackbox: fix exception when logging commands with format characters
Durham Goode <durham@fb.com> [Thu, 28 Feb 2013 10:12:26 -0800] rev 18758
blackbox: fix exception when logging commands with format characters When running commands like 'hg export -o mypatch-%N.patch', the blackbox would throw an exception because it tried to format %N. This change prevents it from trying to format the command string.
Sat, 23 Mar 2013 13:34:50 +0200 localrepo: always write the filtered phasecache when nodes are destroyed (issue3827) stable
Idan Kamara <idankk86@gmail.com> [Sat, 23 Mar 2013 13:34:50 +0200] rev 18757
localrepo: always write the filtered phasecache when nodes are destroyed (issue3827) When the strip command is run, it calls repo.destroyed, which in turn checks if we read _phasecache, and if we did calls filterunknown on it and flushes the changes immediately. But in some cases, nothing causes _phasecache to be read, so we miss out on this and the file remains the same on-disk. Then a call to invalidate comes, which should refresh _phasecache if it changed, but it didn't, so it keeps using the old one with the stripped revision which causes an IndexError. Test written by Yuya Nishihara.
Tue, 19 Mar 2013 16:19:20 -0700 merge with stable stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 19 Mar 2013 16:19:20 -0700] rev 18756
merge with stable
Mon, 11 Mar 2013 15:37:28 -0700 rebase: restore active bookmark after rebase --continue stable
Durham Goode <durham@fb.com> [Mon, 11 Mar 2013 15:37:28 -0700] rev 18755
rebase: restore active bookmark after rebase --continue When a rebase has conflicts and the user uses rebase --continue, the previously active bookmark was not being made active once again. With this change that bookmark is made active again, just as if the rebase had never been interrupted. This changes the rebasestate file format, but should handle old formats correctly. Since the file is transient, this is even less of a problem. Adds a test to verify the new behavior. I manually tested continuing rebases with and without an active bookmark, and with and without being on the bookmark being rebased.
Mon, 04 Mar 2013 10:05:52 +0100 setup.py: ignore warnings from obsolete stable
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Mon, 04 Mar 2013 10:05:52 +0100] rev 18754
setup.py: ignore warnings from obsolete Fix version detection with recent hg versions.
Mon, 04 Mar 2013 10:13:28 +0100 setup.py: add metadata to register package to PyPI stable
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Mon, 04 Mar 2013 10:13:28 +0100] rev 18753
setup.py: add metadata to register package to PyPI This allows updating PyPI with just 'setup.py register' (assuming the user is an owner or maintainer of the PyPI package).
Sat, 09 Feb 2013 21:51:21 +0000 minirst: optimize HTML table generation a bit
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 21:51:21 +0000] rev 18752
minirst: optimize HTML table generation a bit avoid a couple of array copies and string interpolations
Sat, 09 Feb 2013 21:51:21 +0000 minirst: HTML formatter tweaks
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 21:51:21 +0000] rev 18751
minirst: HTML formatter tweaks output table rows on distinct lines don't make the first row a table header
Sat, 09 Feb 2013 17:44:25 -0500 minirst: CGI escape strings prior to embedding it in the HTML
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 17:44:25 -0500] rev 18750
minirst: CGI escape strings prior to embedding it in the HTML
Sat, 09 Feb 2013 21:51:21 +0000 minirst: don't generate TH elements for the first row in table
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 21:51:21 +0000] rev 18749
minirst: don't generate TH elements for the first row in table We mainly use them for option tables -- browsers bolding and centering them looks wrong.
Sun, 10 Feb 2013 12:58:57 +0100 help: use a full header for topic titles
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sun, 10 Feb 2013 12:58:57 +0100] rev 18748
help: use a full header for topic titles ...for prettier HTML!
Sat, 09 Feb 2013 21:51:21 +0000 hgweb: generate HTML documentation
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 21:51:21 +0000] rev 18747
hgweb: generate HTML documentation It's generated from the raw ReST source, as returned from help.help_().
Sat, 09 Feb 2013 21:51:21 +0000 help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 21:51:21 +0000] rev 18746
help: move the majority of the help command to the help module We move the logic for generating the unformatted ReST source to the help module, in order to eventually avoid calling commands.help_() from hgweb. No functionality change.
Sat, 09 Feb 2013 21:51:21 +0000 hgweb help: split up long lines (in generated output)
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sat, 09 Feb 2013 21:51:21 +0000] rev 18745
hgweb help: split up long lines (in generated output)
Fri, 01 Mar 2013 19:42:42 +0100 hgweb help: add tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Fri, 01 Mar 2013 19:42:42 +0100] rev 18744
hgweb help: add tests
Fri, 01 Mar 2013 10:05:37 -0600 merge with stable
Kevin Bullock <kbullock@ringworld.org> [Fri, 01 Mar 2013 10:05:37 -0600] rev 18743
merge with stable
Thu, 28 Feb 2013 21:58:37 -0600 merge with crew
Matt Mackall <mpm@selenic.com> [Thu, 28 Feb 2013 21:58:37 -0600] rev 18742
merge with crew
Thu, 28 Feb 2013 21:53:13 -0600 Added signature for changeset 5b7175377bab stable
Matt Mackall <mpm@selenic.com> [Thu, 28 Feb 2013 21:53:13 -0600] rev 18741
Added signature for changeset 5b7175377bab
Thu, 28 Feb 2013 21:53:04 -0600 Added tag 2.5.2 for changeset 5b7175377bab stable
Matt Mackall <mpm@selenic.com> [Thu, 28 Feb 2013 21:53:04 -0600] rev 18740
Added tag 2.5.2 for changeset 5b7175377bab
Thu, 28 Feb 2013 21:29:31 -0600 setparents: drop copies from dropped p2 (issue3843) stable 2.5.2
Matt Mackall <mpm@selenic.com> [Thu, 28 Feb 2013 21:29:31 -0600] rev 18739
setparents: drop copies from dropped p2 (issue3843)
Sun, 17 Feb 2013 14:41:31 -0600 httppeer: avoid large dumps when we don't see an hgweb repo
Matt Mackall <mpm@selenic.com> [Sun, 17 Feb 2013 14:41:31 -0600] rev 18738
httppeer: avoid large dumps when we don't see an hgweb repo When we don't get an hgweb protocol response, we dump the response to the user for diagnostic purposes (it might be a cgitb message, for instance). But if we try to clone a bundle, we don't want to show the entire bundle in the error message. Also, we don't want fetch the full bundle multiple times during fallback. So we only fetch 1k here.
Sun, 17 Feb 2013 14:34:53 -0600 httppeer: improve protocol check
Matt Mackall <mpm@selenic.com> [Sun, 17 Feb 2013 14:34:53 -0600] rev 18737
httppeer: improve protocol check Pre-0.6c hgweb used text/plain for protocol responses. This meant that a web server could serve a static file and confuse a client into generating a nasty traceback. Now we insist that text/plain protocol responses not include a Content-Length, which older hgweb didn't generate but will typically be produced for static files.
Thu, 28 Feb 2013 13:11:42 -0800 util: add a timed function for use during development
Bryan O'Sullivan <bryano@fb.com> [Thu, 28 Feb 2013 13:11:42 -0800] rev 18736
util: add a timed function for use during development I often want to measure the cost of a function call before/after an optimization, where using top level "hg --time" timing introduces enough other noise that I can't tell if my efforts are having an effect. This decorator allows a developer to measure a function's cost with finer granularity.
Thu, 28 Feb 2013 12:51:18 -0800 util: generalize bytecount to unitcountfn
Bryan O'Sullivan <bryano@fb.com> [Thu, 28 Feb 2013 12:51:18 -0800] rev 18735
util: generalize bytecount to unitcountfn This gives us a function we can reuse to count units of other kinds.
Thu, 28 Feb 2013 21:34:44 +0100 help: new SHA-1 fingerprint of hg.intevation.org in hostfingerprints example
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 28 Feb 2013 21:34:44 +0100] rev 18734
help: new SHA-1 fingerprint of hg.intevation.org in hostfingerprints example The certificate was updated in March 2012. You can verify the certificate by using the Root CA certificate downloadable from https://ssl.intevation.de/ The intermediate CA is sent by https://hg.intevation.org/
Tue, 26 Feb 2013 21:04:50 +0100 tests: work around msys bash mangling of paths in test-mq.t
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Feb 2013 21:04:50 +0100] rev 18733
tests: work around msys bash mangling of paths in test-mq.t
Thu, 28 Feb 2013 14:05:15 +0100 largefiles: remove wrong comment on standin matcher and code for creating dirs
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 14:05:15 +0100] rev 18732
largefiles: remove wrong comment on standin matcher and code for creating dirs The existence of these directories could not be relied on anyway and all dependencies on them should have been removed.
Thu, 28 Feb 2013 14:51:59 +0100 merge with stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 14:51:59 +0100] rev 18731
merge with stable
Thu, 28 Feb 2013 13:55:00 +0100 templatefilters: add missing import of _ stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:55:00 +0100] rev 18730
templatefilters: add missing import of _
Thu, 28 Feb 2013 13:45:18 +0100 largefiles: updatelfiles should use working dir standins, not standins from p1 stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:45:18 +0100] rev 18729
largefiles: updatelfiles should use working dir standins, not standins from p1 This makes a difference when working directory is dirty, especially when merging with a revision for which we don't have largefiles.
Thu, 28 Feb 2013 13:45:18 +0100 largefiles: simplify cachelfiles - don't spend a lot of time checking hashes stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:45:18 +0100] rev 18728
largefiles: simplify cachelfiles - don't spend a lot of time checking hashes cachelfiles jumped through loops to handle merges and modified files ... but it did apparently no longer have a valid reason to do so. It should just always make sure that the largefiles referenced from the standins are present - no matter which actual largefile is stored in the working directory. If there is no standin then there is nothing to fetch. The old code usually verified the hash of all largefiles every time this function was invoked - for examply by 'update'. This change makes a trivial noop update 5-10 seconds faster on our repo (with the other 50% spent doing another unnecessary hashing of all largefiles).
Thu, 28 Feb 2013 13:45:18 +0100 largefiles: don't let update leave wrong largefiles in wd if fetch fails stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:45:18 +0100] rev 18727
largefiles: don't let update leave wrong largefiles in wd if fetch fails Situations where a largefile for some reason wasn't available sometimes caused wrong largefile content and state. It has mostly been seen when interrupting download of largefiles ... and when introducing programming errors. Instead we now make sure to delete the old and wrong largefile. A missing file is a well-known error condition and much more reasonable way to handle the situation.
Thu, 28 Feb 2013 13:45:18 +0100 largefiles: missing largefiles should not be committed as removed stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:45:18 +0100] rev 18726
largefiles: missing largefiles should not be committed as removed Largefiles can easily become missing - for example if it simply isn't available or the download fail. It might even be convenient to be able to work that way in some cases. But commiting missing largefiles as if they had been 'hg remove'd is plain wrong.
Thu, 28 Feb 2013 13:45:18 +0100 largefiles: don't assume that .hg/largefiles/ still exists stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:45:18 +0100] rev 18725
largefiles: don't assume that .hg/largefiles/ still exists It might not have been created and it might have been removed.
Thu, 28 Feb 2013 13:45:18 +0100 largefiles: getstandinmatcher should not depend on existence of directories stable
Mads Kiilerich <madski@unity3d.com> [Thu, 28 Feb 2013 13:45:18 +0100] rev 18724
largefiles: getstandinmatcher should not depend on existence of directories Looking for a (potentially empty) directory was not reliable - both because it is a reasonable assumption that empty directories can be removed and because it wasn't created in all cases ... such as when pulling to an existing repository.
(0) -10000 -3000 -1000 -112 +112 +1000 +3000 +10000 +30000 tip