Tue, 21 Apr 2015 17:16:10 -0700 localrepo: make requirements always be a set in localrepo.__init__
Drew Gottlieb <drgott@google.com> [Tue, 21 Apr 2015 17:16:10 -0700] rev 24914
localrepo: make requirements always be a set in localrepo.__init__ The init function used to create a local list, and then convert it to a set before assigning it as a data attribute. This change simplifies the function by having it always be a set, requiring no conversion.
Tue, 21 Apr 2015 16:55:30 -0700 localrepo: eliminate requirements class variable (API)
Drew Gottlieb <drgott@google.com> [Tue, 21 Apr 2015 16:55:30 -0700] rev 24913
localrepo: eliminate requirements class variable (API) Localrepo's requirements class variable was introduced in b090601a80d1 to make requirements modifiable by extensions. A main access point, _baserequirements, still exists, but this change undoes making the class variable to begin with. Without this simplification, there is a class variable with a default value that is only copied, but never directly used. This behavior is moved directly into the _baserequirements function.
Wed, 29 Apr 2015 10:30:58 -0700 changegroup.group: drop 'reorder' parameter
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Apr 2015 10:30:58 -0700] rev 24912
changegroup.group: drop 'reorder' parameter Since we always pass self._reorder to self.group(), let's drop the parameter and let group() read from self._reorder itself. There are no other in-tree callers to group().
Wed, 29 Apr 2015 10:38:45 -0700 cg2packer: set reorder=False in __init__ instead of in group()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Apr 2015 10:38:45 -0700] rev 24911
cg2packer: set reorder=False in __init__ instead of in group() The difference between reorder=None (bundle.reorder=auto) and reorder=False is that the generaldelta revlogs get reordered with the former. In cg2packer, group() we check if the revlog uses generaldelta and if reorder=None and then convert that to reorder=False. We are effectively saying that whether or not generaldelta is used, we want reorder=None to mean reorder=False for changegroup 2. To make this clearer, check if reorder=None in the constructor and change it to False there and drop the overriding of group(). Also document the reason for turning reordering off.
Thu, 23 Apr 2015 09:44:22 -0700 changegroup: use 'reorder is None' instead of 'reorder is not True/False'
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Apr 2015 09:44:22 -0700] rev 24910
changegroup: use 'reorder is None' instead of 'reorder is not True/False' The config option bundle.reorder can be {on,off,auto}, which gets read into the 'reorder' variable as {True,False,None}. In two places, we need to decide how to handle the None/auto case. I personally find it easier to read those expressions when written to explicitly compare to None.
Thu, 09 Apr 2015 23:47:07 -0400 crecord: fix mixed imports warning
Matt Harbison <matt_harbison@yahoo.com> [Thu, 09 Apr 2015 23:47:07 -0400] rev 24909
crecord: fix mixed imports warning
Fri, 01 May 2015 20:17:00 -0400 windows: add doctest for shellquote()
Matt Harbison <matt_harbison@yahoo.com> [Fri, 01 May 2015 20:17:00 -0400] rev 24908
windows: add doctest for shellquote() This is actual test coverage for issue4629. The test changes in eea3977e6fca were simply the addition of quotes to the output, not ensuring that strings with backslashes are quoted.
Sat, 25 Apr 2015 21:42:07 +0900 template-phases: extend default style instead of duplicating it
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Apr 2015 21:42:07 +0900] rev 24907
template-phases: extend default style instead of duplicating it The phases style started as a copy of the default style at 5c5152af0d15, but we didn't have to copy it because the templater supports %include syntax. This makes sure that the phases style have the same output as the default except for the additional "phase:" row.
Thu, 30 Apr 2015 22:40:18 +0900 commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED stable
Yuya Nishihara <yuya@tcha.org> [Thu, 30 Apr 2015 22:40:18 +0900] rev 24906
commands: hide formatter option as EXPERIMENTAL, not as DEPRECATED 117b9a101f71 introduced the EXPERIMENTAL marker, so we should use it consistently.
Sat, 18 Apr 2015 15:39:26 +0200 keyword: use wvfs.rmtree to remove kwdemo directory
Christian Ebert <blacktrash@gmx.net> [Sat, 18 Apr 2015 15:39:26 +0200] rev 24905
keyword: use wvfs.rmtree to remove kwdemo directory Pass repo.root explicitly as argument to indicate that removal of the temporary repo is intentional in this case.
Mon, 20 Apr 2015 10:52:20 +0300 revset: id() called with 40-byte strings should give the same results as for short strings stable
Alexander Drozdov <al.drozdov@gmail.com> [Mon, 20 Apr 2015 10:52:20 +0300] rev 24904
revset: id() called with 40-byte strings should give the same results as for short strings The patch solves two issues: 1. id(unknown_full_hash) aborts, but id(unknown_short_hash) doesn't 2. id(40byte_tag_or_bookmark) returns tagged/bookmarked revision, but id(non-40byte_tag_or_bookmark) doesn't After the patch: 1. id(unknown_full_hash) doesn't abort 2. id(40byte_tag_or_bookmark) returns empty set
Sun, 03 May 2015 17:33:14 +0900 templater: fix crash by passing invalid object to date() function stable
Yuya Nishihara <yuya@tcha.org> [Sun, 03 May 2015 17:33:14 +0900] rev 24903
templater: fix crash by passing invalid object to date() function "date information" is somewhat obscure, but we call it that way in templatekw.showdate().
Sun, 03 May 2015 12:49:15 -0700 util.checkcase: don't abort on broken symlinks stable
Siddharth Agarwal <sid0@fb.com> [Sun, 03 May 2015 12:49:15 -0700] rev 24902
util.checkcase: don't abort on broken symlinks One case where that would happen is while trying to resolve a subrepo, if the path to the subrepo was actually a broken symlink. This bug was exposed by an hg-git test.
Wed, 22 Apr 2015 15:03:09 -0700 changegroup: close progress in same function as it's started
Martin von Zweigbergk <martinvonz@google.com> [Wed, 22 Apr 2015 15:03:09 -0700] rev 24901
changegroup: close progress in same function as it's started changegroup.group() and changegroup.generatefiles() both currently start progress (with topic "bundling"), but changegroup.generate() closes the topic. Move the closing to the functions that start the topic, so it's easier to see where the topic is started and closed. This completes a move that seems to have been started in 0b564cf359a7 (bundle-ng: move progress handling out of the linkrev callback, 2013-05-10).
Tue, 28 Apr 2015 10:21:04 -0700 changegroup: don't reuse 'mfest' variable for different type
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Apr 2015 10:21:04 -0700] rev 24900
changegroup: don't reuse 'mfest' variable for different type We have a variable 'mfest' that's first a manifest nodeid and then a manifest. Let's make it clearer by using separate variables for the two uses.
Tue, 28 Apr 2015 10:19:42 -0700 changegroup: rename 'mf' to 'ml' to match 'cl', since it's a revlog
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Apr 2015 10:19:42 -0700] rev 24899
changegroup: rename 'mf' to 'ml' to match 'cl', since it's a revlog The 'mf' variable is a manifest revlog, not a manifest, so let's rename it accordingly. We already call the changelog variable 'cl', so 'ml' seems appropriate.
Mon, 20 Apr 2015 14:11:20 -0700 changegroup: rename 'needed' to 'clrevs' to match 'clnodes'
Martin von Zweigbergk <martinvonz@google.com> [Mon, 20 Apr 2015 14:11:20 -0700] rev 24898
changegroup: rename 'needed' to 'clrevs' to match 'clnodes'
Tue, 28 Apr 2015 13:49:19 -0700 changegroup: document that 'source' parameter exists for extensions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Apr 2015 13:49:19 -0700] rev 24897
changegroup: document that 'source' parameter exists for extensions The 'source' parameter passed to generatefiles() is unused by the method itself, but Durham says it is used by an extension.
Tue, 28 Apr 2015 13:40:00 -0700 changegroup: removed unused 'source' parameter from prune()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Apr 2015 13:40:00 -0700] rev 24896
changegroup: removed unused 'source' parameter from prune() The parameter has been unused since it was introduced in 6ea1f858efd9 (bundle: refactor changegroup prune to be its own function, 2013-05-30), and Durham says it is not used by his extension either.
Fri, 01 May 2015 17:21:10 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 01 May 2015 17:21:10 -0500] rev 24895
merge with stable
Fri, 01 May 2015 16:49:15 -0500 Added signature for changeset 8cc6036bca53 stable
Matt Mackall <mpm@selenic.com> [Fri, 01 May 2015 16:49:15 -0500] rev 24894
Added signature for changeset 8cc6036bca53
Fri, 01 May 2015 16:48:51 -0500 Added tag 3.4 for changeset 8cc6036bca53 stable
Matt Mackall <mpm@selenic.com> [Fri, 01 May 2015 16:48:51 -0500] rev 24893
Added tag 3.4 for changeset 8cc6036bca53
Sat, 02 May 2015 00:15:03 +0900 tests: make tests with temporary environment setting portable stable 3.4
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 02 May 2015 00:15:03 +0900] rev 24892
tests: make tests with temporary environment setting portable With "dash" (as "/bin/sh" on Debian GNU/Linux), command execution in "ENV=val foo bar" style doesn't work as expect in test script files, if "foo" is user-defined function: it works fine, if "foo" is existing commands like "hg". 09049042ab99 introduced tests for HGPLAIN and HGPLAINEXCEPT into test-revset.t, and all of them are in such style. This patch doesn't: - add explicit unsetting for HGPLAIN and HGPLAINEXCEPT they are already introduced by 09049042ab99 - write assignment and exporting in one line "ENV=val; export ENV" for two or more environment variables in one line causes failure of test-check-code-hg.t: it is recognized as "don't export and assign at once" unfortunately.
Thu, 30 Apr 2015 23:02:52 -0400 debuginstall: expand the editor path before searching for it (issue4380) stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 30 Apr 2015 23:02:52 -0400] rev 24891
debuginstall: expand the editor path before searching for it (issue4380) The editor launches without expanding the path with commits because the shell does that for us. If the path isn't an executable, the expanded path is displayed, which is probably more useful than the unexpanded path. For example, in cmd.exe, '~' expands to C:\Users\$user. But it expands to C:/mingw/msys/1.0/home/$user in MinGW.
Fri, 01 May 2015 22:19:20 +0900 censor: fix incorrect configuration name for ignoring error at censored file stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 01 May 2015 22:19:20 +0900] rev 24890
censor: fix incorrect configuration name for ignoring error at censored file According to recent "filectx.data()" implementation, "censor.policy" should be configured as "ignore" to ignore error at censored file: "censor.allow" seems outdated name.
Thu, 30 Apr 2015 17:50:50 -0500 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Thu, 30 Apr 2015 17:50:50 -0500] rev 24889
merge with i18n
Thu, 30 Apr 2015 19:12:28 +0900 i18n-ja: synchronized with 194207694def stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 30 Apr 2015 19:12:28 +0900] rev 24888
i18n-ja: synchronized with 194207694def
Wed, 29 Apr 2015 16:43:02 -0300 i18n-pt_BR: synchronized with 89fe9921511f stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 29 Apr 2015 16:43:02 -0300] rev 24887
i18n-pt_BR: synchronized with 89fe9921511f
Thu, 30 Apr 2015 12:33:36 -0700 templater: fail more gracefully for blank strings to word stable
Ryan McElroy <rmcelroy@fb.com> [Thu, 30 Apr 2015 12:33:36 -0700] rev 24886
templater: fail more gracefully for blank strings to word
Wed, 29 Apr 2015 21:14:59 -0400 windows: make shellquote() quote any path containing '\' (issue4629) stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 29 Apr 2015 21:14:59 -0400] rev 24885
windows: make shellquote() quote any path containing '\' (issue4629) The '~' in the bug report is being expanded to a path with Windows style slashes before being passed to shellquote() via util.shellquote(). But shlex.split() strips '\' out of the string, leaving an invalid path in dispatch.aliasargs(). This regressed in 1642eb429536. For now, the tests need to be conditionalized for Windows (because those paths are quoted). In the future, a more complex regex could probably skip the quotes if all component separators are double '\'. I opted to glob away the quotes in test-rename-merge2.t and test-up-local-change.t (which only exist on Windows), because they are in very large blocks of output and there are way too many diffs to conditionalize with #if directives. Maybe the entire path should be globbed away like the following paths in each changed line. Or, letting #if directives sit in the middle of the output as was mentioned a few months back would work too. Unfortunately, I couldn't figure out how to test the specific bug. All of the 'hg serve' tests have a #require serve declaration, causing them to be skipped on Windows. Adding an alias for 'expandtest = outgoing ~/bogusrepo' prints the repo as '$TESTTMP/bogusrepo', so the test runner must be changing the environment somehow.
Wed, 29 Apr 2015 23:55:25 -0400 test-commit-interactive: add more globs for no-execbit platforms stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 29 Apr 2015 23:55:25 -0400] rev 24884
test-commit-interactive: add more globs for no-execbit platforms The ability to set the exec bit on Windows would be real handy for this test..
Thu, 30 Apr 2015 07:46:54 -0700 ui: disable revsetaliases in plain mode (BC) stable
Siddharth Agarwal <sid0@fb.com> [Thu, 30 Apr 2015 07:46:54 -0700] rev 24883
ui: disable revsetaliases in plain mode (BC) ui.plain() is supposed to disable config options that change the UI to the detriment of scripts. As the test demonstrates, revset aliases can actually override builtin ones, just like command aliases. Therefore I believe this is a bugfix and appropriate for stable.
Wed, 29 Apr 2015 19:47:37 +0900 bundlerepo: disable filtering of changelog while constructing revision text stable
Yuya Nishihara <yuya@tcha.org> [Wed, 29 Apr 2015 19:47:37 +0900] rev 24882
bundlerepo: disable filtering of changelog while constructing revision text This avoids the following error that happened if base revision of bundle file was hidden. bundlerevlog needs it to construct revision texts from bundle content as revlog.revision() does. File "mercurial/context.py", line 485, in _changeset return self._repo.changelog.read(self.rev()) File "mercurial/changelog.py", line 319, in read text = self.revision(node) File "mercurial/bundlerepo.py", line 124, in revision text = self.baserevision(iterrev) File "mercurial/bundlerepo.py", line 160, in baserevision return changelog.changelog.revision(self, nodeorrev) File "mercurial/revlog.py", line 1041, in revision node = self.node(rev) File "mercurial/changelog.py", line 211, in node raise error.FilteredIndexError(rev) mercurial.error.FilteredIndexError: 1
Wed, 29 Apr 2015 15:52:31 -0400 merge: run update hook after the last wlock release stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 29 Apr 2015 15:52:31 -0400] rev 24881
merge: run update hook after the last wlock release There were 2 test failures in 3.4-rc when running test-hook.t with the largefiles extension enabled. For context, the first is a commit hook: @@ -618,9 +621,9 @@ $ echo 'update = hg id' >> .hg/hgrc $ echo bb > a $ hg ci -ma - 223eafe2750c tip + d3354c4310ed+ $ hg up 0 - cb9a9f314b8b + 223eafe2750c+ tip 1 files updated, 0 files merged, 0 files removed, 0 files unresolved make sure --verbose (and --quiet/--debug etc.) are propagated to the local ui In both cases, largefiles acquires the wlock before calling into core, which also acquires the wlock. The first case was fixed in 57f1dbc99631 by ensuring the hook only runs after the lock has been fully released. The full release is important, because that is what writes dirstate to the disk, allowing external hooks to see the result of the update. This simply changes how the update hook is called, so that it too is deferred until the lock is finally released. There are many uses of mergemod.update(), but in terms of commands, it looks like the following commands take wlock while calling mergemod.update(), and therefore will now have their hook fired at a later time: backout, fetch, histedit, qpush, rebase, shelve, transplant Unlike the others, fetch immediately unlocks after calling update(), so for all intents and purposes, its hook invocation is not deferred (but the external hook still sees the proper state).
Thu, 30 Apr 2015 03:39:39 +0900 censor: remove meaningless explanation about .hgcensored stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 30 Apr 2015 03:39:39 +0900] rev 24880
censor: remove meaningless explanation about .hgcensored There is no code path handling ".hgcensored" in Mercurial source tree. This meaningless explanation may make users misunderstand about censor.
Wed, 29 Apr 2015 23:07:34 +0900 parsers: avoid signed integer overflow in calculation of leaf-node index stable
Yuya Nishihara <yuya@tcha.org> [Wed, 29 Apr 2015 23:07:34 +0900] rev 24879
parsers: avoid signed integer overflow in calculation of leaf-node index If v = -INT_MAX - 1, -v would exceed INT_MAX. I don't think this would cause problems such as issue4627, but we can't blame it as a compiler bug because signed integer overflow is undefined in C.
Tue, 28 Apr 2015 17:38:02 -0700 bundle2: disable ouput capture unless we use http (issue4613 issue4615) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 28 Apr 2015 17:38:02 -0700] rev 24878
bundle2: disable ouput capture unless we use http (issue4613 issue4615) The current bundle2 processing was capturing all output. This is nice as it provide better meta data about what output what, but this was changing two things: 1) adding a prefix "remote: " to "other" output during local push (issue4613) 2) local and ssh push does not provide real time output anymore (issue4615) As we are unsure about what form should be used in (1) and how to solve (2) we disable output capture in this two cases. Output capture can be forced using an experimental option.
Tue, 03 Feb 2015 15:01:43 -0500 subrepo: propagate the --hidden option to hg subrepositories stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 03 Feb 2015 15:01:43 -0500] rev 24877
subrepo: propagate the --hidden option to hg subrepositories With many commands accepting a '-S' or an explicit path to trigger recursing into subrepos, it seems that --hidden needs to be propagated too. Unfortunately, many of the subrepo layer methods discard the options map, so passing the option along explicitly isn't currently an option. It also isn't clear if other filtered views need to be propagated, so changing all of those commands may be insufficient anyway. The specific jam I got into was amending an ancestor of qbase in a subrepo, and then evolving. The patch ended up being hidden, and outgoing said it would only push one unrelated commit. But push aborted with an 'unknown revision' that I traced back to the patch. (Odd it didn't say 'filtered revision'.) A push with --hidden worked from the subrepo, but that wasn't possible from the parent repo before this. Since the underlying problem doesn't actually require a subrepo, there's probably more to investigate here in the discovery area. Yes, evolve + mq is not exactly sane, but I don't know what is seeing the hidden revision. In lieu of creating a test for the above situation (evolving mq should probably be blocked), the test here is a marginally useful case where --hidden is needed in a subrepo: cat'ing a file in a hidden revision. Without this change, cat aborts with: $ hg --hidden cat subrepo/a skipping missing subrepository: subrepo [1]
Mon, 27 Apr 2015 21:34:23 -0400 subrepo: don't pass the outer repo's --rev or --branch to subrepo incoming() stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 27 Apr 2015 21:34:23 -0400] rev 24876
subrepo: don't pass the outer repo's --rev or --branch to subrepo incoming() When passing a --rev, 'hg incoming -S' previously suffered from the same output truncation or abort that was fixed for 'hg outgoing -S' in the previous patch, for the same reasons. Unlike push, subrepos are currently only pulled when the outer repo is updated, not when the outer repo is pulled. That makes matching 'hg pull' behavior impossible. Listing all incoming csets in the subrepo seems like the most useful behavior, and is consistent with 'hg outgoing -S'.
Mon, 27 Apr 2015 21:15:25 -0400 subrepo: don't pass the outer repo's --rev or --branch to subrepo outgoing() stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 27 Apr 2015 21:15:25 -0400] rev 24875
subrepo: don't pass the outer repo's --rev or --branch to subrepo outgoing() The previous behavior didn't reflect what would actually be pushed- push will ignore --rev and --branch in the subrepo and push everything. Therefore, 'push -r {rev}' would not list everything, unless {rev} was also the revision of the subrepo's tip. Worse, if a hash was passed in, the command would abort because that hash would either not be in the outer repo or not in the subrepo.
Mon, 27 Apr 2015 20:25:09 -0400 subrepo: update the help text to account for diff -I/-X gitsubrepo support stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 27 Apr 2015 20:25:09 -0400] rev 24874
subrepo: update the help text to account for diff -I/-X gitsubrepo support The functionality was added in a48b65ab428d.
Mon, 27 Apr 2015 15:37:57 -0700 revert: make the interactive mode experimental stable
Laurent Charignon <lcharignon@fb.com> [Mon, 27 Apr 2015 15:37:57 -0700] rev 24873
revert: make the interactive mode experimental While fixing issue4304: "record: allow editing new files" we introduced changes in record/crecord. These changes need to be matched with changes in any command using record. Revert is one of these commands and the changes have not been made for this release. Therefore, revert -i should be an experimental feature for this release.
Mon, 27 Apr 2015 15:36:10 -0700 shelve: make the interactive mode experimental stable
Laurent Charignon <lcharignon@fb.com> [Mon, 27 Apr 2015 15:36:10 -0700] rev 24872
shelve: make the interactive mode experimental While fixing issue4304: "record: allow editing new files" we introduced changes in record/crecord. These changes need to be matched with changes in any command using record. Shelve is one of these commands and the changes have not been made for this release. Therefore, shelve -i should be an experimental feature for this release.
Mon, 27 Apr 2015 15:12:41 -0700 help: also hide options marked EXPERIMENTAL stable
Siddharth Agarwal <sid0@fb.com> [Mon, 27 Apr 2015 15:12:41 -0700] rev 24871
help: also hide options marked EXPERIMENTAL Similar to DEPRECATED, add a way to indicate that options are EXPERIMENTAL.
Tue, 28 Apr 2015 10:19:46 -0700 rebase: don't forward "source" argument to rebase (issue4633) stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 28 Apr 2015 10:19:46 -0700] rev 24870
rebase: don't forward "source" argument to rebase (issue4633) `hg pull` takes an optional "source" argument to define the path/url to pull from. Under some circumstances, this option could get proxied to rebase and interpretted as the --source argument to rebase, leading to unexpected behavior. In my local environment, "source" always appears in "opts" in pullrebase. However, when attempting to write a test, I couldn't reproduce this. Instead, the source is being captured as a positional argument in "args." I suspect an interaction between **kwargs and an extension is to blame for the differences in behavior. This is why no test has been written. I have tested behavior locally and the patch has the intended side-effect of making `hg pull --rebase` work again.
Tue, 28 Apr 2015 23:27:18 +0900 histedit: fix reST syntax problem of example code in help document stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 28 Apr 2015 23:27:18 +0900] rev 24869
histedit: fix reST syntax problem of example code in help document To show example code correctly in online help, text block of it should be preceded by "::" and indented.
Mon, 27 Apr 2015 19:13:55 -0300 webcommands: fix description of manifest default behavior stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 27 Apr 2015 19:13:55 -0300] rev 24868
webcommands: fix description of manifest default behavior
Mon, 27 Apr 2015 19:09:54 -0300 webcommands: fix typo in changelog documentation stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 27 Apr 2015 19:09:54 -0300] rev 24867
webcommands: fix typo in changelog documentation
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip