Sat, 09 Feb 2013 09:04:48 -0800 blackbox: log incoming changes via ui.log()
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:04:48 -0800] rev 18672
blackbox: log incoming changes via ui.log() Logs incoming changes to a repo to ui.log(). Includes the number of changes and the hashes of the heads after the new changes. Example log line: 2013/02/09 08:35:19 durham> 1 incoming changes - new heads: cb9a9f314b8b Currently the blackbox logs the unix user that is performing the push/pull. It would be nice to log the http authorized user as well so it works with hgweb, but that's outside the scope of this commit.
Sat, 09 Feb 2013 09:04:32 -0800 blackbox: logs python and extension hooks via ui.log()
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:04:32 -0800] rev 18671
blackbox: logs python and extension hooks via ui.log() Logs python and extension hooks to ui.log() for viewing in the blackbox. Example log lines: 2013/02/09 08:35:19 durham> pythonhook-preupdate: hgext.eol.preupdate finished in 0.01 seconds 2013/02/09 08:35:19 durham> exthook-update: echo hooked finished in 0.02 seconds
Sat, 09 Feb 2013 09:04:14 -0800 blackbox: log the commands that are run
Durham Goode <durham@fb.com> [Sat, 09 Feb 2013 09:04:14 -0800] rev 18670
blackbox: log the commands that are run Uses ui.log to log which commands are run, their exit code, the time taken, and any unhandled exceptions thrown. Example log lines: 2013/02/09 08:35:19 durham> add foo 2013/02/09 08:35:19 durham> add exited 0 after 0.02 seconds Updates the progress tests because they use a mocked time.time() which these changes affect.
Tue, 12 Feb 2013 14:08:33 -0800 blackbox: adds a blackbox extension
Durham Goode <durham@fb.com> [Tue, 12 Feb 2013 14:08:33 -0800] rev 18669
blackbox: adds a blackbox extension Adds a blackbox extension that listens to ui.log() and writes the messages to .hg/blackbox.log. Future commits will use ui.log() to log commands, unhandled exceptions, incoming changes, and hooks. The extension defaults to logging everything, but can be configured via blackbox.track to only log certain events. Log lines are of the format: "date time user> message" Example log line: 2013/02/09 08:35:19 durham> 1 incoming changes - new heads: d84ced58aaa
Mon, 11 Feb 2013 16:15:12 -0800 scmutil: create directories in a race-safe way during update
Bryan O'Sullivan <bryano@fb.com> [Mon, 11 Feb 2013 16:15:12 -0800] rev 18668
scmutil: create directories in a race-safe way during update With the new parallel update code, it is possible for multiple workers to try to create a hierarchy of directories at the same time. This is hard to trigger in general, but most likely during initial checkout. To deal with these races, we introduce a new ensuredirs function whose contract is to ensure that a directory hierarchy exists - it will ignore a failure that implies that the desired directory already exists.
Mon, 11 Feb 2013 14:50:54 -0800 Merge
Bryan O'Sullivan <bryano@fb.com> [Mon, 11 Feb 2013 14:50:54 -0800] rev 18667
Merge
Sat, 09 Feb 2013 19:02:45 +0200 test-atomictempfile: convert to unit test
Idan Kamara <idankk86@gmail.com> [Sat, 09 Feb 2013 19:02:45 +0200] rev 18666
test-atomictempfile: convert to unit test
Sat, 09 Feb 2013 19:13:39 +0200 tests: add a test runner utility that prints nothing when all tests pass
Idan Kamara <idankk86@gmail.com> [Sat, 09 Feb 2013 19:13:39 +0200] rev 18665
tests: add a test runner utility that prints nothing when all tests pass This will be used to run tests through run-tests, which will expect no output for a unit test that passes successfully. The motivation for using unit tests instead of the current Python tests is that they don't require an output file for comparison and that they're easier to write because of the available tools from unittest (setup, asserts).
Sun, 10 Feb 2013 13:14:31 +0100 hgweb: consistent author name width
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sun, 10 Feb 2013 13:14:31 +0100] rev 18664
hgweb: consistent author name width Paper & coal use a sligtly shorter name length of 12em in the log view than gitweb's 15em. Names too long for 12em is not entirely unheard of, and hence increasing the length is appropriate; hgweb should remain usable on 1024x768.
Sun, 10 Feb 2013 12:23:39 -0800 dirstate: fix generator/list error when using python 2.7
Durham Goode <durham@fb.com> [Sun, 10 Feb 2013 12:23:39 -0800] rev 18663
dirstate: fix generator/list error when using python 2.7 util.statfiles returns a generator on python 2.7 with c extensions disabled. This caused util.statfiles(...) [0] to break in tests. Since we're only stat'ing one file, I just changed it to call lstat directly.
Mon, 11 Feb 2013 16:21:48 +0100 mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 11 Feb 2013 16:21:48 +0100] rev 18662
mq: comply with filtering when injecting fake tags (issue3812) mq was injecting fake tags whenever the revisions were accessible to the filtering level. This issue impacts hgweb since it's common to have "secret" mq patches. As secret changesets are filtered by hgweb, the tags computation could break.
Fri, 08 Feb 2013 05:36:08 -0800 commit: factor out post-commit cleanup into workingctx
David Schleimer <dschleimer@fb.com> [Fri, 08 Feb 2013 05:36:08 -0800] rev 18661
commit: factor out post-commit cleanup into workingctx This pulls some of the logic for the cleanup that needs to happen after a commit has been made otu of localrepo.commit and into workingctx. This is part of a larger refactoring effort that will eventually allow us to perform some types of merges in-memory.
Fri, 08 Feb 2013 05:36:08 -0800 localrepo: use workingctx for validation in commit
David Schleimer <dschleimer@fb.com> [Fri, 08 Feb 2013 05:36:08 -0800] rev 18660
localrepo: use workingctx for validation in commit This changes localrepo.commit to use the workingctx it creates form the munged output of localrepo.status while running some precommit validation. Specifically, it uses functions that were already present on the workingctx. I believe this is a net readabilty improvement, and that this makes these lines consistent with the refactoring in a subsequent patch that pulls some of the validation logic into workingctx so that it can be reused elsewhere.
Fri, 08 Feb 2013 05:36:07 -0800 localrepo: create context used for actual commit earlier
David Schleimer <dschleimer@fb.com> [Fri, 08 Feb 2013 05:36:07 -0800] rev 18659
localrepo: create context used for actual commit earlier localrepo.commit creates a workingctx, calls self.status, does some munging on the changes status returns, does some validation on those changes, and then creates a new workingctx from the changes. This moves the creation of the new workginctx ahead of some validation, with the intention of refactoring some of that validation logic into the workingctx, so that it can be reused elsewhere.
Mon, 11 Feb 2013 16:57:46 +0100 merge with crew-stable
Thomas Arendsen Hein <thomas@intevation.de> [Mon, 11 Feb 2013 16:57:46 +0100] rev 18658
merge with crew-stable
Sat, 09 Feb 2013 23:28:42 +0000 debugobsolete: improve command help stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 09 Feb 2013 23:28:42 +0000] rev 18657
debugobsolete: improve command help The behavior without argument was not documented.
Sun, 10 Feb 2013 23:01:12 +0000 import: don't rollback on failed import --exact (issue3616)
Kevin Bullock <kbullock@ringworld.org> [Sun, 10 Feb 2013 23:01:12 +0000] rev 18656
import: don't rollback on failed import --exact (issue3616) The checkexact() helper function was calling repo.rollback() from inside an open transaction. In addition to being insane, this is unnecessary because import will release the transaction on an exception. It turns out that this has been broken since the feature was first introduced, first released in v1.0: changeset: 4263:47ba52121433 user: Brendan Cully <brendan@kublai.com> date: Thu Mar 22 10:44:59 2007 -0700 files: mercurial/commands.py mercurial/patch.py description: Add import --exact. When this option is set, import will apply the patch (which must be generated by export) to the parents specified in the patch, and check that the node produced by the patch matches the node ID in the patch.
Sun, 10 Feb 2013 16:22:32 -0800 Merge
Bryan O'Sullivan <bryano@fb.com> [Sun, 10 Feb 2013 16:22:32 -0800] rev 18655
Merge
Sun, 10 Feb 2013 16:21:30 -0800 Merge
Bryan O'Sullivan <bryano@fb.com> [Sun, 10 Feb 2013 16:21:30 -0800] rev 18654
Merge
Mon, 11 Feb 2013 01:21:24 +0100 merge crew and main
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Mon, 11 Feb 2013 01:21:24 +0100] rev 18653
merge crew and main
Mon, 11 Feb 2013 01:17:50 +0100 merge crew and main
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Mon, 11 Feb 2013 01:17:50 +0100] rev 18652
merge crew and main
Sun, 10 Feb 2013 16:55:01 +0000 manifestmerge: fix order in which manifests are fetched
Siddharth Agarwal <sid0@fb.com> [Sun, 10 Feb 2013 16:55:01 +0000] rev 18651
manifestmerge: fix order in which manifests are fetched If the manifest of an earlier revision on the same delta chain is read before that of a later revision, the revlog remembers that we parsed the earlier revision and continues applying deltas from there onwards. If manifests are parsed the other way round, we have to start over from the fulltext. For a fresh clone of mozilla-central, updating from 29dd80c95b7d to its parent aab96936a177 requires approximately 400 fewer zlib.decompress calls, which results in a speedup from 1.10 seconds to 1.05.
Sun, 10 Feb 2013 12:16:46 +0000 merge: run _forgetremoved after manifestmerge
Siddharth Agarwal <sid0@fb.com> [Sun, 10 Feb 2013 12:16:46 +0000] rev 18650
merge: run _forgetremoved after manifestmerge _forgetremoved can trigger manifest construction, but we only want it to happen after manifestmerge, so that our attempt to read the manifests in the right order in an upcoming patch actually works.
Sun, 10 Feb 2013 16:23:14 +0000 dirstate: disable gc while parsing the dirstate
Siddharth Agarwal <sid0@fb.com> [Sun, 10 Feb 2013 16:23:14 +0000] rev 18649
dirstate: disable gc while parsing the dirstate This prevents a performance regression an upcoming patch would otherwise introduce because it indirectly delays parsing the dirstate a bit.
Fri, 08 Feb 2013 22:54:17 +0100 export: show 'Date' header in a format that also is readable for humans
Mads Kiilerich <mads@kiilerich.com> [Fri, 08 Feb 2013 22:54:17 +0100] rev 18648
export: show 'Date' header in a format that also is readable for humans 'export' is the official export format and used by patchbomb, but it would only show date as a timestamp that most humans might find it hard to relate to. It would be very convenient when reviewing a patch to be able to see what timestamp the patch will end up with. Mercurial has always used util.parsedate for parsing these headers. It can handle 'all' date formats, so we could just as well use a readable one. 'export' will now use the format used by 'log' - which is the format described as 'Unix date format' in the templating help. We assume that all parsers of '# HG changeset patch'es can handle that.
Sun, 10 Feb 2013 18:26:04 +0100 factotum: fix urllib2 import so it no longer relies on a demandimport bug
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Feb 2013 18:26:04 +0100] rev 18647
factotum: fix urllib2 import so it no longer relies on a demandimport bug demandimport will do that urllib2 can be imported 'from mercurial' even though it doesn't exist there.
Sun, 27 Jan 2013 03:32:09 +0100 hgweb: make the test suite use hgweb in a more WSGI compliant way
Mads Kiilerich <mads@kiilerich.com> [Sun, 27 Jan 2013 03:32:09 +0100] rev 18646
hgweb: make the test suite use hgweb in a more WSGI compliant way - as checked by wsgiref.validate. This makes sure that we don't optimize hgweb for invalid use cases.
Sun, 10 Feb 2013 18:24:29 +0100 hgweb: simplify internal staticfile return codes
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Feb 2013 18:24:29 +0100] rev 18645
hgweb: simplify internal staticfile return codes
Sun, 10 Feb 2013 18:24:29 +0100 spelling: fix some minor issues found by spell checker
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Feb 2013 18:24:29 +0100] rev 18644
spelling: fix some minor issues found by spell checker
Fri, 08 Feb 2013 23:26:00 +0100 bundlerepo: replace basemap with the base field in the index
Mads Kiilerich <mads@kiilerich.com> [Fri, 08 Feb 2013 23:26:00 +0100] rev 18643
bundlerepo: replace basemap with the base field in the index Bundle revisions had some info in their fake revlog intries and some info in a dict with all the bundle revisions. This dict was used to get the stored data and to distinguish repo revisions from bundle revisions. Real repo revisions and bundle revisions will now be distinguished by comparing with the tip revision of the original repo. This reintroduces something similar to disktiprev which was unused and removed in a928865b4a4f and let that replace the O(reposize) dict.
Fri, 08 Feb 2013 22:54:48 +0100 profiling: replace '+' markup of nested lines with indentation
Mads Kiilerich <mads@kiilerich.com> [Fri, 08 Feb 2013 22:54:48 +0100] rev 18642
profiling: replace '+' markup of nested lines with indentation The display of nested lines for hg --profile was very non-obvious and made it look like sort didn't work. The '+' immediately before CallCount was not related to the CallCount and did not mean plus in any integer sense. The '+' before module looked like a part of the module name and not like ascii art. Instead we now indent the subordinate module names to clearly show the structure.
Sun, 10 Feb 2013 04:04:22 -0600 Merge crew and main.
Augie Fackler <raf@durin42.com> [Sun, 10 Feb 2013 04:04:22 -0600] rev 18641
Merge crew and main.
Sat, 09 Feb 2013 15:51:32 -0800 merge: don't fiddle with name lookups or i18n in hot loops
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:51:32 -0800] rev 18640
merge: don't fiddle with name lookups or i18n in hot loops We perform attribute dereferences and i18n lookups before looping.
Sat, 09 Feb 2013 15:51:32 -0800 merge: apply non-interactive working dir updates in parallel
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:51:32 -0800] rev 18639
merge: apply non-interactive working dir updates in parallel This has a big effect on the performance of working dir updates. Here are the results of update from null to the given rev in several repos, on a Linux 3.2 system with 32 cores running ext4, with the progress extension enabled. repo rev plain parallel speedup hg 7068089c95a2 0.9 0.3 3 mozilla-central fe1600b22c77 42.8 7.7 5.5 linux-2.6 9ef4b770e069 31.4 4.9 6.4
Sat, 09 Feb 2013 15:51:32 -0800 worker: allow a function to be run in multiple worker processes
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:51:32 -0800] rev 18638
worker: allow a function to be run in multiple worker processes If we estimate that it will be worth the cost, we run the function in multiple processes. Otherwise, we run it in-process. Children report progress to the parent through a pipe. Not yet implemented on Windows.
Sat, 09 Feb 2013 15:51:32 -0800 worker: partition a list (of tasks) into equal-sized chunks
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:51:32 -0800] rev 18637
worker: partition a list (of tasks) into equal-sized chunks
Sat, 09 Feb 2013 15:51:26 -0800 worker: estimate whether it's worth running a task in parallel
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:51:26 -0800] rev 18636
worker: estimate whether it's worth running a task in parallel Not implemented for Windows yet.
Sat, 09 Feb 2013 15:22:12 -0800 worker: count the number of CPUs
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:22:12 -0800] rev 18635
worker: count the number of CPUs This works on the major platforms, and falls back to a safe guess of 1 elsewhere.
Sat, 09 Feb 2013 15:22:10 -0800 tests: getremove test output changes (fold into previous patch)
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:22:10 -0800] rev 18634
tests: getremove test output changes (fold into previous patch)
Sat, 09 Feb 2013 15:22:09 -0800 merge: report non-interactive progress in chunks
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:22:09 -0800] rev 18633
merge: report non-interactive progress in chunks Instead of a monotonic count, getupdates yields the number of files it has updated since it last reported, and its caller sums the numbers when updating progress. Once we run these updates in parallel, this will allow worker processes to report progress less often, reducing overhead.
Sat, 09 Feb 2013 15:22:08 -0800 merge: handle subrepo merges and .hgsubstate specially
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:22:08 -0800] rev 18632
merge: handle subrepo merges and .hgsubstate specially In an upcoming patch, we will update .hgsubstate in a non-interactive worker process. Merges of subrepo contents will still need to occur in the master process (since they may be interactive), so we move that code into a place where it will always run in what will become the master process.
Sat, 09 Feb 2013 15:22:04 -0800 tests: update test output (will be folded into parent)
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:22:04 -0800] rev 18631
tests: update test output (will be folded into parent)
Sat, 09 Feb 2013 15:21:58 -0800 merge: split out mostly-non-interactive working dir updates
Bryan O'Sullivan <bryano@fb.com> [Sat, 09 Feb 2013 15:21:58 -0800] rev 18630
merge: split out mostly-non-interactive working dir updates In a later patch, we'll run these updates in parallel.
Sat, 09 Feb 2013 11:00:42 +0100 extensions: obsolete and remove interhg extension
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 09 Feb 2013 11:00:42 +0100] rev 18629
extensions: obsolete and remove interhg extension With the addition of the websub filter extension this extension is no longer needed. We maintain a sort of backwards compatibility by reading the [interhg] section and using it as we would use the [websub] section.
Sat, 09 Feb 2013 16:48:21 +0100 hgweb: apply the websub filter to revision descriptions
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 09 Feb 2013 16:48:21 +0100] rev 18628
hgweb: apply the websub filter to revision descriptions In order to use this, add a [websub] section to your configuration and add websub expressions such as: italic = s/\b_(\S+)_\b/<i>\1<\/i>/ bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/ issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i bugzilla = s!((?:bug|b=|(?=#?\d{4,}))(?:\s*#?)(\d+))!<a href="http://bz.selenic.com/\2">\1</a>!i This also adds documentation (proofed by Kevin!) to the config help section.
Fri, 08 Feb 2013 18:05:32 +0100 hgweb: add websub template filter
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 08 Feb 2013 18:05:32 +0100] rev 18627
hgweb: add websub template filter The purpose of this new filter is to make it possible to partially replace the functionality of the interhg extension. The idea is to be able to define regular expression based substitutions on a new "websub" config section. hgweb will then be able to apply these substitutions wherever the "websub" filter is used on a template. This first revision just adds the code necessary to load the websub expressions and adds the websub filter, but it does not add any calls to the websub filter itself on any of the templates. That will be done on the following revisions.
Tue, 05 Feb 2013 14:36:19 -0800 addremove: don't audit the path for paths already in the dirstate
Durham Goode <durham@fb.com> [Tue, 05 Feb 2013 14:36:19 -0800] rev 18626
addremove: don't audit the path for paths already in the dirstate Now that dirstate.walk returns None for paths under symlink directories, addremove doesn't need to validate each path it sees to look for files under symlinks. On a large repository this brings addremove from 6.3 seconds down to 3.65 (42%) since addremove no longer has to stat every directory of every file to determine if the file is inside a symlink directory. I put it through our benchmark and see no perf hit to any other commands.
Mon, 04 Feb 2013 14:27:15 -0800 dirstate: walk returns None for files that have a symlink in their path
Durham Goode <durham@fb.com> [Mon, 04 Feb 2013 14:27:15 -0800] rev 18625
dirstate: walk returns None for files that have a symlink in their path Previously dirstate.walk would return a stat object for files in the dmap that have a symlink to a directory in their path. Now it will return None to indicate that they are no longer considered part of the repository. This currently only affects walks that traverse the entire directory tree (ex: hg status) and not walks that only list the contents of the dmap (ex: hg diff). In a situation like this: mkdir foo && touch foo/a && hg commit -Am "a" mv foo bar ln -s bar foo 'hg status' will now show '! foo/a', whereas before it incorrectly considered 'foo/a' to be unchanged. In addition to making 'hg status' report the correct information, this will allow callers to dirstate.walk to not have to detect symlinks themselves, which can be very expensive.
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 +30000 tip