Fri, 26 Sep 2014 10:59:29 -0700 pull: use `other.url()` as the source of a bookmark pull
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 10:59:29 -0700] rev 22641
pull: use `other.url()` as the source of a bookmark pull We want to move the bookmarks movement into `exchange.pull`, for this purpose we need to stop relying on variables from `command.pull`.
Tue, 30 Sep 2014 17:13:54 -0700 setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com> [Tue, 30 Sep 2014 17:13:54 -0700] rev 22640
setup: set mode 644 or 755 on installed files
Thu, 02 Oct 2014 21:58:10 +0900 branches: reduce nesting in for loop
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Oct 2014 21:58:10 +0900] rev 22639
branches: reduce nesting in for loop
Sun, 28 Sep 2014 16:57:47 +0200 i18n: use datapath for i18n like for templates and help
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:47 +0200] rev 22638
i18n: use datapath for i18n like for templates and help To avoid circular module dependencies we initialize i18n from util when datapath is found.
Sun, 28 Sep 2014 16:57:47 +0200 help: don't search randomly for help data - trust util.datapath
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:47 +0200] rev 22637
help: don't search randomly for help data - trust util.datapath The search was introduced in c904e76e3834 without a convincing explanation why it should be necessary ... except for consistency with templater handling. Now, just keep it simple.
Sun, 28 Sep 2014 16:57:37 +0200 templater: don't search randomly for templates - trust util.datapath
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:37 +0200] rev 22636
templater: don't search randomly for templates - trust util.datapath The search was introduced in 2653740d8118. It might have been necessary back then when using __file__ directly and frozen-ness wasn't considered. Now we should know exactly where the templates can be found.
Sun, 28 Sep 2014 16:57:37 +0200 templater: inline global 'path' list in templatepaths
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:37 +0200] rev 22635
templater: inline global 'path' list in templatepaths
Sun, 28 Sep 2014 16:57:37 +0200 templater: introduce templatepaths for getting paths searched for templates
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:37 +0200] rev 22634
templater: introduce templatepaths for getting paths searched for templates Avoid function with different return types depending on parameters.
Sun, 28 Sep 2014 16:57:06 +0200 util: introduce datapath for getting the location of supporting data files
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:06 +0200] rev 22633
util: introduce datapath for getting the location of supporting data files templates, help and locale data is normally stored as sub folders in the directory containing the source of the mercurial module. In a frozen build they live as sub folders next to 'hg.exe' and 'library.zip'. These different kind of data were handled in different ways. Unify that by introducing util.datapath. The value is computed from the environment and is always used, so we just calculate the value on module load.
Sun, 28 Sep 2014 16:57:06 +0200 util: move _hgexecutable a few lines, closer to where it is used
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 16:57:06 +0200] rev 22632
util: move _hgexecutable a few lines, closer to where it is used
Sun, 28 Sep 2014 13:27:40 +0200 hgk: define bookmark colour explicitly, as Tk 8.6 has changed their meaning
Andrew Shadura <andrew@shadura.me> [Sun, 28 Sep 2014 13:27:40 +0200] rev 22631
hgk: define bookmark colour explicitly, as Tk 8.6 has changed their meaning
Tue, 30 Sep 2014 14:32:49 -0700 largefiles: remove 'forget' list that's always empty
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 30 Sep 2014 14:32:49 -0700] rev 22630
largefiles: remove 'forget' list that's always empty
Thu, 02 Oct 2014 16:43:50 -0500 bookmarks: fix divergent bookmark path normalization
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 16:43:50 -0500] rev 22629
bookmarks: fix divergent bookmark path normalization
Thu, 02 Oct 2014 11:35:20 -0500 exchange: remove a broken i18n abuse
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 11:35:20 -0500] rev 22628
exchange: remove a broken i18n abuse
Fri, 26 Sep 2014 11:31:15 -0700 bookmark: make the search for divergent names more robust
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 11:31:15 -0700] rev 22627
bookmark: make the search for divergent names more robust We translate the "url we update from" and "the url in the config" into their canonical representation. This is useful for urls that have multiple equivalent forms: /foo/bar/ == file:/foo/bar/ == file:///foo/bar eg: hg pull --config path.bar=/foo/bar/ file:/foo/bar
Thu, 25 Sep 2014 17:53:27 -0700 pull: gather all bookmark-pulling code together
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 17:53:27 -0700] rev 22626
pull: gather all bookmark-pulling code together Pulling bookmarks is done in two rounds. First we do a simple update, then we use the content of the `bookmark` argument to possibly overwrite some bookmark with their remote location. The second step was not done right after the first one for some obscure reason. We now perform them one after the other.
Thu, 25 Sep 2014 02:53:29 -0700 push: perform bookmark export in the push function
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 02:53:29 -0700] rev 22625
push: perform bookmark export in the push function This part is responsible for adding new bookmarks on the remote. Before that, it was done on its own in `commands.push`. The export is still not integrated with the rest of the push process, but at least it now dwells in the right function.
Thu, 25 Sep 2014 00:57:36 -0700 push: add `pushoperation.bkresult`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 00:57:36 -0700] rev 22624
push: add `pushoperation.bkresult` This attribute will be used to carry the result of the bookmark push (when the `push` function will effectively be doing any bookmarks pushes)
Thu, 25 Sep 2014 01:49:20 -0700 push: pass list of bookmark to `exchange.push`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 01:49:20 -0700] rev 22623
push: pass list of bookmark to `exchange.push` Currently stored but not unused. This parameter will control bookmarks explicitly pushed (added to the server if missing).
Thu, 25 Sep 2014 15:26:09 -0700 exchange: import bookmarks as bookmod
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 15:26:09 -0700] rev 22622
exchange: import bookmarks as bookmod Using the original names makes it difficult to use `bookmarks` as a variable name.
Thu, 25 Sep 2014 02:53:49 -0700 push: sanitize handling of bookmark push return value
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 02:53:49 -0700] rev 22621
push: sanitize handling of bookmark push return value Mixing return and assignment does not make sense, let's unify this.
Thu, 25 Sep 2014 01:43:24 -0700 locarepo: remove the `push` method (API)
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 01:43:24 -0700] rev 22620
locarepo: remove the `push` method (API) All the logic of this function is in the exchange.push function for some time. We just stop calling `localrepo.push` in `command.push` to have access to more information. Leaving `localrepo.push` in place will let third-party extensions wrap it but it would never be called by `hg push` making the wrapping useless. Therefore, the method is removed so that third-party code fail noisily and get properly upgraded.
Thu, 25 Sep 2014 01:42:49 -0700 push: `exchange.push` instead of `localrepo.push`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 01:42:49 -0700] rev 22619
push: `exchange.push` instead of `localrepo.push` The latter is going away.
Thu, 25 Sep 2014 01:41:26 -0700 clone: use `exchange.push` instead of `localrepo.push`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 01:41:26 -0700] rev 22618
clone: use `exchange.push` instead of `localrepo.push` The latter is going away.
Thu, 25 Sep 2014 01:39:39 -0700 push: use `exchange.push` in `commands.push`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 01:39:39 -0700] rev 22617
push: use `exchange.push` in `commands.push` To gain access to all results from the push, we need to have access to the `pushoperation` object. We call `exchange.push` to do so. It is impossible to just change the `localrepo.push` signature because the change may be too subtle to be caught by external extension wrapping `localrepo.push`. This mean we'll have to kill `localrepo.push` because just using `exchange.push` in `commands.py` would silently disable all wrapping around `localrepo.push` by third-party extensions. So we'll remove it in a later changeset to get such extensions to fail noisily.
Thu, 25 Sep 2014 02:21:59 -0700 push: `exchange.push` now returns the `pushoperation` object
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 02:21:59 -0700] rev 22616
push: `exchange.push` now returns the `pushoperation` object Returning the pushop object gives access to more information (upcoming bookmark push result for example). `localrepo.push` currently extracts the `cgresult` for callers.
Thu, 25 Sep 2014 00:55:39 -0700 push: rename `pushop.ret` to `pushop.cgresult`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Sep 2014 00:55:39 -0700] rev 22615
push: rename `pushop.ret` to `pushop.cgresult` We are about to introduce more results-related attributes on pushop (for bookmarks) so we need a more distinctive name. We now use `cgresult` as `pulloperation` does.
Tue, 16 Sep 2014 15:57:51 -0700 obsolete: use version constants in the format mapping
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 15:57:51 -0700] rev 22614
obsolete: use version constants in the format mapping
Tue, 16 Sep 2014 15:56:38 -0700 obsolete: use the `version` argument in encodemarkers
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 15:56:38 -0700] rev 22613
obsolete: use the `version` argument in encodemarkers Recent scientific studies show that assigning a variable have no effect on a unrelated constant. We therefore use the variable where we intended to in the first place.
Fri, 12 Sep 2014 14:41:43 +0200 obsolete: gather all contents related to format version 0 in a single place
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 12 Sep 2014 14:41:43 +0200] rev 22612
obsolete: gather all contents related to format version 0 in a single place All contents includes documentation, constants, and functions, so we gather all of those things into a single location. The diff is confusing because it cannot understand what code is semantically moved around in this grand migration.
Sun, 31 Aug 2014 13:01:00 +0200 revert: properly back up added files with local modification
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 31 Aug 2014 13:01:00 +0200] rev 22611
revert: properly back up added files with local modification These files were previously not backed up because the backup mechanism was not smart enough. This leads to data lose for the user since uncommitted contents were discarded. We now properly move the modified version to <filename>.orig before deleting it. We have to use a small hack to do a different action if "--no-backup" is specified. This is needed because the backup process is actually a move (not a copy) so the file is already missing when we backup. The internet kitten is a bit disapointed about that, but such is life. This patch concludes the "lets refactor revert" phases. We can now open the "Lets find stupid bug with renames and merge" phases. I'm sure that now that the code is clearer we could do it in another simpler way, but I consider the current improvement good enough for now.
Sat, 30 Aug 2014 02:39:08 +0200 revert: track added files with local modifications
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:39:08 +0200] rev 22610
revert: track added files with local modifications Those files need to be backed up but are currently not. We compute the set of them to be able to use a different backup strategy in the next changeset.
Sat, 30 Aug 2014 02:30:24 +0200 revert: distinguish between "check" and "backup" strategy
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:30:24 +0200] rev 22609
revert: distinguish between "check" and "backup" strategy "check" behaves as backup did before. We check if the current file differs from destination and we create a backup if it does. This is used for untracked files that will be overwritten by formerly-deleted files. We have to do the manual check since no status output can provide the content comparison. "backup" is now doing unconditional backup. This can be used for files seen as modified compared to both the target and the working directory. In such a case, we know that the file differs from target without actually comparing any content. This new "backup" strategy will be especially useful in the case of files added between the target and the working directory -parent- with additional modifications in the working directory -itself-. In that case we know we need to back it up, but we cannot run the content check as the files does not exists in target.
Sat, 30 Aug 2014 02:28:27 +0200 revert: small refactoring in the way backup value are handled
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:28:27 +0200] rev 22608
revert: small refactoring in the way backup value are handled The current backup value may have two different values: 1. Do not try to do backup 2. Do backup if applicable We are about to move to: 1. Do not try to do backup 2. Do backup if applicable 3. Do backup in all cases So we change the current values to make room for the new one.
Wed, 01 Oct 2014 15:05:09 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Oct 2014 15:05:09 -0500] rev 22607
merge with stable
Wed, 01 Oct 2014 14:59:33 -0500 Added signature for changeset f768c888aaa6 stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Oct 2014 14:59:33 -0500] rev 22606
Added signature for changeset f768c888aaa6
Wed, 01 Oct 2014 14:58:05 -0500 Added tag 3.1.2 for changeset f768c888aaa6 stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Oct 2014 14:58:05 -0500] rev 22605
Added tag 3.1.2 for changeset f768c888aaa6
Wed, 01 Oct 2014 14:44:24 -0500 parsers: fix Py2.4 argument parsing issue
Matt Mackall <mpm@selenic.com> [Wed, 01 Oct 2014 14:44:24 -0500] rev 22604
parsers: fix Py2.4 argument parsing issue Since fa53d66b45a8, we were getting this strange message with Py2.4: TypeError: argument 1 must be impossible<bad format char>, not int ..because we were using the 'n' type specifier introduced in 2.5. It turns out that offset is actually a revision number index, which ought to be an int anyway. So we store it in an int, use the 'i' specifier, rely on Py_ParseTuple for range checking, and rename it to avoid type confusion.
Wed, 01 Oct 2014 12:35:18 -0500 merge with i18n stable 3.1.2
Matt Mackall <mpm@selenic.com> [Wed, 01 Oct 2014 12:35:18 -0500] rev 22603
merge with i18n
Tue, 30 Sep 2014 16:59:07 -0400 diff: document the nobinary option stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 30 Sep 2014 16:59:07 -0400] rev 22602
diff: document the nobinary option Since 3fbef7ac26f0, we have a diff.nobinary option. This is handy, but the only way I found out about it was by looking at the release notes for 3.1, which is not something I normally do.
Tue, 30 Sep 2014 13:43:30 -0300 i18n-pt_BR: minor fixes and rewording on histedit help text stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 30 Sep 2014 13:43:30 -0300] rev 22601
i18n-pt_BR: minor fixes and rewording on histedit help text
Tue, 30 Sep 2014 10:17:59 -0300 i18n-pt_BR: synchronized with c712238c4f9b stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 30 Sep 2014 10:17:59 -0300] rev 22600
i18n-pt_BR: synchronized with c712238c4f9b
Tue, 30 Sep 2014 10:13:25 -0300 merge with i18n stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 30 Sep 2014 10:13:25 -0300] rev 22599
merge with i18n
Mon, 22 Sep 2014 15:39:21 -0300 i18n-pt_BR: synchronized with 802dffd62de5 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 22 Sep 2014 15:39:21 -0300] rev 22598
i18n-pt_BR: synchronized with 802dffd62de5
Sun, 14 Sep 2014 20:32:34 -0400 filelog: censored files compare against empty data, have 0 size
Mike Edgar <adgar@google.com> [Sun, 14 Sep 2014 20:32:34 -0400] rev 22597
filelog: censored files compare against empty data, have 0 size To support "status" operations against working directories that are the children of censored revisions, filelog must define "cmp" and "size" for censored content.
Wed, 03 Sep 2014 22:14:20 -0400 filelog: raise CensoredNodeError when hash checks fail with censor metadata
Mike Edgar <adgar@google.com> [Wed, 03 Sep 2014 22:14:20 -0400] rev 22596
filelog: raise CensoredNodeError when hash checks fail with censor metadata With this change, when a revlog revision hash does not match its content, and the content is empty with a special metadata key, the integrity failure is assumed to be intentionally caused to remove sensitive content from repository history. To allow different Mercurial functionality to handle this scenario differently a more specific exception is raised than "ordinary" hash failures. Alternatives to this approach include, but are not limited to: - Calling a hook when hashes mismatch to allow arbitrary tombstone validation. Cons: Irresponsibly easy to disable integrity checking altogether. - Returning empty revision data eagerly instead of raising, masking the error. Cons: Push/pull won't roundtrip the tombstone, so client repos are unusable. - Doing nothing differently at this layer. Callers must do their own detection of tombstoned data if they want to handle some hash checks and not others. - Impacts dozens of callsites, many of which don't have the revision data - Would probably be missing one or two callsites at any given time - Currently we throw a RevlogError, as do 12 other places in revlog.py. Callers would need to parse the exception message and/or ensure RevlogError is not thrown from any other part of their call tree.
Wed, 03 Sep 2014 15:59:03 -0400 error: add CensoredNodeError, will be thrown when content deliberately erased
Mike Edgar <adgar@google.com> [Wed, 03 Sep 2014 15:59:03 -0400] rev 22595
error: add CensoredNodeError, will be thrown when content deliberately erased This change introduces the error plus a corresponding catch in dispatch, to provide localized error messages. The verb "censor" is used in this commit and all following to refer to erasing the content of a revlog revision (filelog, for now) without recalculating node IDs, leaving that revision invalid. Further work must be done to safely share such revision data with compliant clients. I find the analogy to censorship straightforward; for less politically charged options, consider "erase", "excise", "expunge", or "blackhole".
Tue, 30 Sep 2014 16:01:19 -0700 files: cache repo.dirstate
Siddharth Agarwal <sid0@fb.com> [Tue, 30 Sep 2014 16:01:19 -0700] rev 22594
files: cache repo.dirstate For a large repo, 'hg files' goes from 2.27 seconds to 1.92.
Tue, 30 Sep 2014 15:21:35 -0700 files: only check for removed, not unknown or missing
Siddharth Agarwal <sid0@fb.com> [Tue, 30 Sep 2014 15:21:35 -0700] rev 22593
files: only check for removed, not unknown or missing ctx.matches() doesn't return unknown files, and repo.dirstate[f] never returns '!' for an answer.
Tue, 30 Sep 2014 14:39:58 -0700 files: use ctx.matches instead of ctx.walk
Siddharth Agarwal <sid0@fb.com> [Tue, 30 Sep 2014 14:39:58 -0700] rev 22592
files: use ctx.matches instead of ctx.walk ctx.matches() is an optimized form of ctx.walk() when we don't care about the state of files on disk. For a large repo, 'hg files > /dev/null' drops from 3.7 seconds to 2.3.
Tue, 30 Sep 2014 15:45:48 -0700 files: actually filter out removed files
Siddharth Agarwal <sid0@fb.com> [Tue, 30 Sep 2014 15:45:48 -0700] rev 22591
files: actually filter out removed files 'hg files' makes an attempt to filter out removed files, but that doesn't work because repo.dirstate[f] returns lowercase 'r', not uppercase.
Wed, 01 Oct 2014 01:08:17 +0200 subrepo: remove superfluous newline from subrepo prompt
Mads Kiilerich <madski@unity3d.com> [Wed, 01 Oct 2014 01:08:17 +0200] rev 22590
subrepo: remove superfluous newline from subrepo prompt
Wed, 01 Oct 2014 01:04:18 +0200 ui: show prompt choice if input is not a tty but is forced to be interactive
Mads Kiilerich <madski@unity3d.com> [Wed, 01 Oct 2014 01:04:18 +0200] rev 22589
ui: show prompt choice if input is not a tty but is forced to be interactive The tests often set ui.interactive to control normally interactive prompts from stdin. That gave an output where it was non-obvious what prompts got which which response, and the output lacked the newline users would see after input. Instead, if the input not is a tty, write the selection and a newline.
Tue, 30 Sep 2014 18:22:58 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 30 Sep 2014 18:22:58 -0500] rev 22588
merge with stable
Tue, 30 Sep 2014 16:40:10 -0500 help: basic support for showing only specified topic sections
Matt Mackall <mpm@selenic.com> [Tue, 30 Sep 2014 16:40:10 -0500] rev 22587
help: basic support for showing only specified topic sections For instance, 'hg help config.files' will show only the Files section.
Tue, 30 Sep 2014 15:55:30 -0500 help: use OS containers for config file lists
Matt Mackall <mpm@selenic.com> [Tue, 30 Sep 2014 15:55:30 -0500] rev 22586
help: use OS containers for config file lists
Tue, 30 Sep 2014 15:51:22 -0500 help: support OS-specific help sections
Matt Mackall <mpm@selenic.com> [Tue, 30 Sep 2014 15:51:22 -0500] rev 22585
help: support OS-specific help sections Containers of the form: .. container:: verbose.<os> are shown by default on the given OS (or with -v).
Tue, 30 Sep 2014 15:48:43 -0500 minirst: allow multiple container types for prune
Matt Mackall <mpm@selenic.com> [Tue, 30 Sep 2014 15:48:43 -0500] rev 22584
minirst: allow multiple container types for prune If we have a container of type x.y, then we can preserve it by keeping x or y.
Thu, 04 Sep 2014 21:36:35 +0200 config: don't read the same config file twice
Mads Kiilerich <madski@unity3d.com> [Thu, 04 Sep 2014 21:36:35 +0200] rev 22583
config: don't read the same config file twice In some cases some config files would be read twice and shown twice in showconfig --debug.
Tue, 30 Sep 2014 23:15:56 +0900 templater: fix precedence of --style and --template options stable
Yuya Nishihara <yuya@tcha.org> [Tue, 30 Sep 2014 23:15:56 +0900] rev 22582
templater: fix precedence of --style and --template options Since e3eb480a9391, --template option is ignored if --style is specified, which is wrong according to the doc of show_changeset(): Display format will be the first non-empty hit of: 1. option 'template' 2. option 'style' ...
Mon, 29 Sep 2014 23:23:44 -0700 shelve: avoid writing file that is never read from
Martin von Zweigbergk <martinvonz@gmail.com> [Mon, 29 Sep 2014 23:23:44 -0700] rev 22581
shelve: avoid writing file that is never read from The contents of the .files file has not been used since 1d7a36ff2615 (shelve: use rebase instead of merge (issue4068), 2013-10-23), so stop writing it. Where we currently use the presence of the file as a check for a valid shelve name, switch to checking for the .patch file.
Sun, 28 Sep 2014 15:21:29 +0200 hgk: don't break on repositories with obsolete changesets
Andrew Shadura <andrew@shadura.me> [Sun, 28 Sep 2014 15:21:29 +0200] rev 22580
hgk: don't break on repositories with obsolete changesets Check the existence of a changeset before adding it to the list returned by debug-rev-list command.
Thu, 18 Sep 2014 11:43:47 -0700 test: protect the run-tests.py --json test behind an hghave rule
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Sep 2014 11:43:47 -0700] rev 22579
test: protect the run-tests.py --json test behind an hghave rule We add a rules to detect availability of a json module and skip if json is not available.
Mon, 29 Sep 2014 17:23:38 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 29 Sep 2014 17:23:38 -0500] rev 22578
merge with stable
Sat, 27 Sep 2014 21:59:55 +0900 hgweb: refresh hgweb.repo on phase change (issue4061) stable
Anton Shestakov <engored@ya.ru> [Sat, 27 Sep 2014 21:59:55 +0900] rev 22577
hgweb: refresh hgweb.repo on phase change (issue4061) Make hgweb.refresh() also look at phaseroots file (in addition to 00changelog.i file) and reload the repo when os.stat returns different mtime or size than cached, signifying the file was modified. This way if user changes phase of a changeset (secret <-> draft), there's no need to restart hg serve to see the change.
Mon, 29 Sep 2014 16:42:12 -0500 help: fix typo in log examples stable
Matt Mackall <mpm@selenic.com> [Mon, 29 Sep 2014 16:42:12 -0500] rev 22576
help: fix typo in log examples
Fri, 26 Sep 2014 02:19:48 +0200 ssl: on OS X, use a dummy cert to trick Python/OpenSSL to use system CA certs
Mads Kiilerich <madski@unity3d.com> [Fri, 26 Sep 2014 02:19:48 +0200] rev 22575
ssl: on OS X, use a dummy cert to trick Python/OpenSSL to use system CA certs This will give PKI-secure behaviour out of the box, without any configuration. Setting web.cacerts to any value or empty will disable this trick. This dummy cert trick only works on OS X 10.6+, but 10.5 had Python 2.5 which didn't have certificate validation at all.
Fri, 26 Sep 2014 02:19:47 +0200 ssl: refactor sslkwargs - move things around a bit, preparing for next change
Mads Kiilerich <madski@unity3d.com> [Fri, 26 Sep 2014 02:19:47 +0200] rev 22574
ssl: refactor sslkwargs - move things around a bit, preparing for next change
Fri, 19 Sep 2014 18:43:53 -0700 revert: special case 'hg revert --all'
Durham Goode <durham@fb.com> [Fri, 19 Sep 2014 18:43:53 -0700] rev 22573
revert: special case 'hg revert --all' On large repos, hg revert --all can take over 13 seconds. This is mainly due to it walking the tree three times: once to find the list of files in the dirstate, once to find the list of files in the target, and once to compute the status from the dirstate to the target. This optimizes the hg revert --all case to only require the final status. This speeds it up to 1.3 seconds or so (with hgwatchman enabled). Further optimizations could be done for the -r NODE and pattern cases, but they are significantly more complex.
Sun, 28 Sep 2014 17:21:38 +0900 test-commandserver: make runcommand message bolder
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 17:21:38 +0900] rev 22572
test-commandserver: make runcommand message bolder It seems ' runcommand' is difficult to distinguish from command output. '*** runcommand' is slightly better.
Sun, 28 Sep 2014 14:46:57 +0900 test-commandserver: rewrite manual substitution of output by (glob) match
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 14:46:57 +0900] rev 22571
test-commandserver: rewrite manual substitution of output by (glob) match
Sun, 28 Sep 2014 16:59:30 +0900 test-commandserver: remove redundant banner output
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 16:59:30 +0900] rev 22570
test-commandserver: remove redundant banner output Since test output was inlined, "testing <func>" message should no longer be necessary.
Sun, 28 Sep 2014 16:55:14 +0900 test-commandserver: remove .py test which was ported to .t
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 16:55:14 +0900] rev 22569
test-commandserver: remove .py test which was ported to .t
Sun, 28 Sep 2014 16:05:37 +0900 test-commandserver: port test functions from .py to .t
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 16:05:37 +0900] rev 22568
test-commandserver: port test functions from .py to .t Though we have to duplicate import statements, .t test is still more handy than .py test which has cryptic .out file. This change allows to skip a part of test by #if conditional, which my next patch series depends on.
Sun, 28 Sep 2014 14:27:40 +0900 test-commandserver: add stub for .t test by copying .out with 2-space indent
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 14:27:40 +0900] rev 22567
test-commandserver: add stub for .t test by copying .out with 2-space indent Currently test-commandserver.t only contains output, so it is skipped by #require false.
Sun, 28 Sep 2014 13:31:16 +0900 test-commandserver: split helper functions to new hgclient module
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 13:31:16 +0900] rev 22566
test-commandserver: split helper functions to new hgclient module This prepares for porting test-commandserver.py to .t test. Though command-server test needs many Python codes, .t test will be more readable than .py test thanks to inlined output.
Sun, 28 Sep 2014 15:13:35 +0900 heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 15:13:35 +0900] rev 22565
heredoctest: do not append extra newline character to continuation line Trailing newline characters are kept in lines.
Sun, 28 Sep 2014 14:15:43 +0900 heredoctest: use the same dict for local/global contexts as in doctest
Yuya Nishihara <yuya@tcha.org> [Sun, 28 Sep 2014 14:15:43 +0900] rev 22564
heredoctest: use the same dict for local/global contexts as in doctest In order to mimic module-level evaluation, globals and locals should be the same object, so doctest does not pass separate locals dict. https://docs.python.org/2.7/reference/simple_stmts.html#exec This fixes NameError in the following example: >>> import foo >>> def bar(): ... foo # must exist in globalvars
Sat, 27 Sep 2014 12:37:53 +0900 cmdserver: drop useless in_ attribute from channeledoutput
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 12:37:53 +0900] rev 22563
cmdserver: drop useless in_ attribute from channeledoutput The previous patch makes sure that in_ == out, so it's no longer needed to keep in_ for __getattr__. Also, it seems strange for channeledoutput to have in_ stream which is actually a writable file object.
Sat, 27 Sep 2014 12:27:03 +0900 cmdserver: get file attributes of 'e'-channel from stdout, not from stderr
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 12:27:03 +0900] rev 22562
cmdserver: get file attributes of 'e'-channel from stdout, not from stderr It seems wrong to get attributes from object different than the underlying file. In the following example, it doesn't make sense to flush stderr after writing to stdout: self.ferr.write(str(a)) if not getattr(self.ferr, 'closed', False): self.ferr.flush()
Sat, 27 Sep 2014 12:15:01 +0900 cmdserver: correct doc of channeledoutput
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 12:15:01 +0900] rev 22561
cmdserver: correct doc of channeledoutput in_ is only used as the source of file attributes.
Sat, 27 Sep 2014 14:47:52 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 27 Sep 2014 14:47:52 -0500] rev 22560
merge with stable
Fri, 26 Sep 2014 16:44:11 -0500 commands: add debuglocks to report/clear lock state
Matt Mackall <mpm@selenic.com> [Fri, 26 Sep 2014 16:44:11 -0500] rev 22559
commands: add debuglocks to report/clear lock state
Wed, 24 Sep 2014 11:20:35 -0700 test-convert-git.t: make copy detection deterministic
Siddharth Agarwal <sid0@fb.com> [Wed, 24 Sep 2014 11:20:35 -0700] rev 22558
test-convert-git.t: make copy detection deterministic Since both 'bar' and 'bar-copied' matched 'bar-copied2', Git's copy detection would sometimes result in 'bar' being the source for 'bar-copied2' and sometimes 'bar-copied'. Change bar in a separate commit so that that would no longer be the case.
Tue, 23 Sep 2014 17:12:27 -0700 revsetbenchmark: add a rebase-related revset to the benchmark list
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 23 Sep 2014 17:12:27 -0700] rev 22557
revsetbenchmark: add a rebase-related revset to the benchmark list
Tue, 23 Sep 2014 17:09:19 -0700 revsetbenchmark: allow comments ('#' prefix) in the revset input
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 23 Sep 2014 17:09:19 -0700] rev 22556
revsetbenchmark: allow comments ('#' prefix) in the revset input
Tue, 23 Sep 2014 17:08:49 -0700 revsetbenchmark: make it clear that revsets may be read from stdin
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 23 Sep 2014 17:08:49 -0700] rev 22555
revsetbenchmark: make it clear that revsets may be read from stdin
Sun, 21 Sep 2014 12:50:48 +0900 tags: use full hash for formatter output as in log or annotate commands
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Sep 2014 12:50:48 +0900] rev 22554
tags: use full hash for formatter output as in log or annotate commands
Sun, 21 Sep 2014 12:46:23 +0900 tags: change field name of formatter output to be the same as log command
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Sep 2014 12:46:23 +0900] rev 22553
tags: change field name of formatter output to be the same as log command Since -T option is not public yet, this won't break backward compatibility.
Sun, 21 Sep 2014 12:38:47 +0900 files: correct topic of formatter
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Sep 2014 12:38:47 +0900] rev 22552
files: correct topic of formatter
Fri, 19 Sep 2014 18:40:39 -0700 revert: move targetsubs calculation down to its use
Durham Goode <durham@fb.com> [Fri, 19 Sep 2014 18:40:39 -0700] rev 22551
revert: move targetsubs calculation down to its use A future patch will be reorganizing this section of the code into two paths, and targetsubs complicates this by existing in the middle of one path, but not the other. We fix that by moving it 200 lines down, to the only place it's used.
Tue, 23 Sep 2014 14:20:08 -0400 help: document that default hgweb style is called paper (issue4373)
Augie Fackler <raf@durin42.com> [Tue, 23 Sep 2014 14:20:08 -0400] rev 22550
help: document that default hgweb style is called paper (issue4373)
Sat, 20 Sep 2014 14:16:39 -0700 help: update help for hgweb template and style (issue4373)
Arun Chandrasekaran <visionofarun@gmail.com> [Sat, 20 Sep 2014 14:16:39 -0700] rev 22549
help: update help for hgweb template and style (issue4373)
Tue, 23 Sep 2014 16:22:52 +0900 bundle2: rename functions that have the same name
Mike Hommey <mh@glandium.org> [Tue, 23 Sep 2014 16:22:52 +0900] rev 22548
bundle2: rename functions that have the same name
Sat, 20 Sep 2014 17:06:57 +0200 mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com> [Sat, 20 Sep 2014 17:06:57 +0200] rev 22547
mq: write headers of new patches using patchheader
Wed, 24 Sep 2014 02:41:11 +0200 mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com> [Wed, 24 Sep 2014 02:41:11 +0200] rev 22546
mq: refactor patchheader header ordering to match export (BC) The refactoring also gives more robust and extendable handling of other HG headers.
Sat, 20 Sep 2014 17:06:57 +0200 mq: upgrade non-plain patches to HG format when setting parent in patchheader
Mads Kiilerich <madski@unity3d.com> [Sat, 20 Sep 2014 17:06:57 +0200] rev 22545
mq: upgrade non-plain patches to HG format when setting parent in patchheader Parent will now always be updated or added when qrefreshing HG patches. Plain patches will not be changed, but patches that neither are plain nor HG will be upgraded to HG patches on first refresh.
Sat, 20 Sep 2014 17:06:56 +0200 mq: make patchheader .plainmode more reliable
Mads Kiilerich <madski@unity3d.com> [Sat, 20 Sep 2014 17:06:56 +0200] rev 22544
mq: make patchheader .plainmode more reliable Instead of having to make extra checks whenever we use .plainmode, let the initial value consider the actual patch header content.
Wed, 24 Sep 2014 21:50:03 -0700 bundle2: remove heads and common arguments to getbundle parts generators
Mike Hommey <mh@glandium.org> [Wed, 24 Sep 2014 21:50:03 -0700] rev 22543
bundle2: remove heads and common arguments to getbundle parts generators
Thu, 25 Sep 2014 11:47:57 +0900 bundle2: separate bundle10 and bundle2 cases in getbundle()
Mike Hommey <mh@glandium.org> [Thu, 25 Sep 2014 11:47:57 +0900] rev 22542
bundle2: separate bundle10 and bundle2 cases in getbundle() The primary goal is to make it easier for extensions to alter how bundle2 parts are laid out. They now can use the getbundle2partsgenerator decorator to add new parts, or directly act on getbundle2partsmapping to wrap existing part functions. Note the 'request for bundle10 must include changegroup' error was kept under the same conditions as before, although the logic changes don't make it obvious.
Thu, 25 Sep 2014 11:11:37 +0900 bundle2: pass b2caps down to functions adding bundle2 parts for getbundle
Mike Hommey <mh@glandium.org> [Thu, 25 Sep 2014 11:11:37 +0900] rev 22541
bundle2: pass b2caps down to functions adding bundle2 parts for getbundle
Wed, 24 Sep 2014 13:16:20 -0700 parsers: fix uninitialize variable warning
David Soria Parra <davidsp@fb.com> [Wed, 24 Sep 2014 13:16:20 -0700] rev 22540
parsers: fix uninitialize variable warning The heads pointer is not initialized correctly if filter is false, causing both clang and gcc to issue a warning. Correctly initialize heads to NULL.
Wed, 17 Sep 2014 11:00:03 -0700 revset: use `subset &` in bare `p2()`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 11:00:03 -0700] rev 22539
revset: use `subset &` in bare `p2()` This takes advantage of the `fullreposet` smartness with a nice speedup. It's a similar speedup to `p1()` when a merge is in progress (the non merge case is already lightning fast anyway.)
Wed, 17 Sep 2014 10:59:52 -0700 revset: use `subset &` in bare `p1()`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:59:52 -0700] rev 22538
revset: use `subset &` in bare `p1()` This takes advantage of the `fullreposet` smartness and yields a nice speedup. revset #0: p1() 0) wall 0.003256 comb 0.010000 user 0.010000 sys 0.000000 (best of 527) 1) wall 0.000066 comb 0.000000 user 0.000000 sys 0.000000 (best of 23224)
Wed, 17 Sep 2014 11:00:09 -0700 revset: use `subset &` in `rev`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 11:00:09 -0700] rev 22537
revset: use `subset &` in `rev` This takes advantage of the `fullreposet` smartness and yields a nice speedup. revset #0: rev(25) 0) wall 0.005480 comb 0.000000 user 0.000000 sys 0.000000 (best of 305) 1) wall 0.000052 comb 0.000000 user 0.000000 sys 0.000000 (best of 21891)
Wed, 17 Sep 2014 19:52:34 -0700 revset: use `subset &` in `origin`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 19:52:34 -0700] rev 22536
revset: use `subset &` in `origin` This takes advantage of the `fullreposet` smartness. revset #0: origin(tip) 0) wall 0.005353 comb 0.000000 user 0.000000 sys 0.000000 (best of 354) 1) wall 0.003080 comb 0.000000 user 0.000000 sys 0.000000 (best of 446)
Wed, 17 Sep 2014 10:59:16 -0700 revset: use `subset &` in `follow`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:59:16 -0700] rev 22535
revset: use `subset &` in `follow` This takes advantage of the `fullreposet` smartness. revset #0: follow(COPYING) 0) wall 0.002446 comb 0.000000 user 0.000000 sys 0.000000 (best of 735) 1) wall 0.000331 comb 0.000000 user 0.000000 sys 0.000000 (best of 5672)
Wed, 17 Sep 2014 10:58:50 -0700 revset: use `subset &` in `filelog`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:58:50 -0700] rev 22534
revset: use `subset &` in `filelog` This takes advantage of the `fullreposet` smartness. revset #0: file(COPYING) 0) wall 3.179066 comb 3.180000 user 3.140000 sys 0.040000 (best of 3) 1) wall 2.723699 comb 2.730000 user 2.690000 sys 0.040000 (best of 4)
Wed, 17 Sep 2014 10:58:39 -0700 revset: use `subset &` in `divergent`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:58:39 -0700] rev 22533
revset: use `subset &` in `divergent` This takes advantage of the `fullreposet` smartness. revset #0: divergent() 0) wall 0.002047 comb 0.000000 user 0.000000 sys 0.000000 (best of 813) 1) wall 0.000052 comb 0.000000 user 0.000000 sys 0.000000 (best of 22757)
Wed, 17 Sep 2014 10:57:57 -0700 revset: use `subset &` in `bisect`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:57:57 -0700] rev 22532
revset: use `subset &` in `bisect` This takes advantage of the `fullreposet` smartness. revset #0: bisect(range) 0) wall 0.014007 comb 0.010000 user 0.010000 sys 0.000000 (best of 115) 1) wall 0.005556 comb 0.010000 user 0.010000 sys 0.000000 (best of 235)
Wed, 17 Sep 2014 10:57:47 -0700 revset: use `subset &` in `ancestorspec`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:57:47 -0700] rev 22531
revset: use `subset &` in `ancestorspec` This takes advantage of the `fullreposet` smartness. revset #0: tip~25 0) wall 0.004800 comb 0.010000 user 0.010000 sys 0.000000 (best of 259) 1) wall 0.002475 comb 0.000000 user 0.000000 sys 0.000000 (best of 717)
Wed, 17 Sep 2014 19:57:09 -0700 revset: use `subset &` in `bookmark`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 19:57:09 -0700] rev 22530
revset: use `subset &` in `bookmark` Speedup, Weeeeeee! revset #0: bookmark() 0) wall 0.002240 comb 0.000000 user 0.000000 sys 0.000000 (best of 571) 1) wall 0.000132 comb 0.000000 user 0.000000 sys 0.000000 (best of 14059)
Wed, 17 Sep 2014 10:59:40 -0700 revset: use `subset &` in `outgoing`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:59:40 -0700] rev 22529
revset: use `subset &` in `outgoing` This should give us the same benefit as elsewhere. Result is simpler (and "faster"). Outgoing is dominated by the discovery so no benchmark is provided.
Wed, 30 Apr 2014 16:56:48 -0700 revset: avoid in loop lookup in _generatorset._consumegen
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 30 Apr 2014 16:56:48 -0700] rev 22528
revset: avoid in loop lookup in _generatorset._consumegen Python lookups are slow, so do all lookup outside of the for loop. This provide a small but still significant speedup: revset #0: 0:: 0) wall 0.063258 comb 0.060000 user 0.060000 sys 0.000000 (best of 100) 1) wall 0.057776 comb 0.050000 user 0.050000 sys 0.000000 (best of 100)
Fri, 25 Apr 2014 14:51:24 -0700 revset: reduce dict lookup in lazyset.__contains__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 25 Apr 2014 14:51:24 -0700] rev 22527
revset: reduce dict lookup in lazyset.__contains__ Avoid an extra dict lookup when we have to compute the value. No visible performance impact but this shaves the yak a few extra nanometers.
Fri, 25 Apr 2014 17:53:58 -0700 revset: do less lookup during spanset.__contains__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 25 Apr 2014 17:53:58 -0700] rev 22526
revset: do less lookup during spanset.__contains__ Attribute lookup is slow in python. So this version is going to be a bit faster. This does not have a visible impact since the rest of the stack is much slower but this shaves the yak a few extra nanometers. Moreover the new version is more readable so it worth doing this change for code quality purpose. This optimisation was approved by a core python dev.
Tue, 16 Sep 2014 23:10:39 -0700 largefiles: simplify iteration over standins
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 23:10:39 -0700] rev 22525
largefiles: simplify iteration over standins Instead of iterating over all files in the context and ignoring those that are not standins, pass a standin-matcher to the context and iterate over only the files matching. Apart from making the intent clearer, this implementation will also benefit from any future optimizations done to the manifest walking code.
Tue, 16 Sep 2014 22:50:38 -0700 largefiles: avoid using 'lfiles' variable for two purposes
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 22:50:38 -0700] rev 22524
largefiles: avoid using 'lfiles' variable for two purposes The variable 'lfiles' is first used for a set of the names of all the large files. It is then overwritten with a tuple like the ones returned from status(). To reduce confusion, let's create a separate variable for the second use.
Mon, 22 Sep 2014 13:05:36 -0700 largefiles: remove unnecessary clearing of status fields
Martin von Zweigbergk <martinvonz@gmail.com> [Mon, 22 Sep 2014 13:05:36 -0700] rev 22523
largefiles: remove unnecessary clearing of status fields At the end of lfilesrepo.status(), we clear the lists of unknown, ignored and clean files, depending on the values of 'listunknown' etc. The lists originate from other calls to status(), and it is only 'clean' that may get updated after the calls. Let's remove the need to clear any of the lists by explicitly only adding to 'clean' when 'listclean' is true.
Wed, 24 Sep 2014 01:39:25 +0200 mq: simplify patchheader handling of the empty line before the diff
Mads Kiilerich <madski@unity3d.com> [Wed, 24 Sep 2014 01:39:25 +0200] rev 22522
mq: simplify patchheader handling of the empty line before the diff Don't try to append empty lines to HG patch headers - instead, add them in str method. This minor change removes some apparently redundant code and makes the code more robust.
Wed, 24 Sep 2014 01:36:44 +0200 mq: write '# Parent ' lines with two spaces like export does (BC)
Mads Kiilerich <madski@unity3d.com> [Wed, 24 Sep 2014 01:36:44 +0200] rev 22521
mq: write '# Parent ' lines with two spaces like export does (BC) This aligns "Parent" node IDs with "Node ID" node IDs.
Sat, 20 Sep 2014 17:06:56 +0200 mq: write headers for new HG patches in the same order as export (BC)
Mads Kiilerich <madski@unity3d.com> [Sat, 20 Sep 2014 17:06:56 +0200] rev 22520
mq: write headers for new HG patches in the same order as export (BC)
Sat, 20 Sep 2014 17:06:56 +0200 mq: correctly make an empty line after description in new patches
Mads Kiilerich <madski@unity3d.com> [Sat, 20 Sep 2014 17:06:56 +0200] rev 22519
mq: correctly make an empty line after description in new patches There would in some cases be an empty line between headers and the description - that does not seem right. There should also be an empty line between description and diff - but that was missing. These two mistakes would sometimes make it up for each other so we fix both at once to just show the improvement. Instead of writing an extra newline when writing a header line, write an extra line when it not is written as a part of the description but is necessary anyway.
Tue, 16 Sep 2014 14:51:56 -0700 largefiles: extract 'orig' method in reposetup.status
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 14:51:56 -0700] rev 22518
largefiles: extract 'orig' method in reposetup.status
Tue, 16 Sep 2014 14:51:25 -0700 largefiles: extract 'orig' method in lfilesctx.filectx
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 14:51:25 -0700] rev 22517
largefiles: extract 'orig' method in lfilesctx.filectx
Tue, 16 Sep 2014 14:50:38 -0700 largefiles: extract 'orig' method in lfilesmanifestdict.__contains__
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 14:50:38 -0700] rev 22516
largefiles: extract 'orig' method in lfilesmanifestdict.__contains__
Tue, 16 Sep 2014 14:40:25 -0700 largefiles: reduce indentation by dropping 'else' block after 'return'
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 14:40:25 -0700] rev 22515
largefiles: reduce indentation by dropping 'else' block after 'return'
Tue, 16 Sep 2014 11:35:13 -0700 largefiles: remove dead assignment left over from change 1ff42ee98446
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 16 Sep 2014 11:35:13 -0700] rev 22514
largefiles: remove dead assignment left over from change 1ff42ee98446
Fri, 19 Sep 2014 13:49:58 -0700 match: simplify brittle predicate construction
Martin von Zweigbergk <martinvonz@gmail.com> [Fri, 19 Sep 2014 13:49:58 -0700] rev 22513
match: simplify brittle predicate construction In match.__init__(), we create the matchfn predicate by and-ing together the individual predicates for includes, excludes (negated) and patterns. Instead of the current set of nested if/else blocks, we can simplify by adding the predicates to a list and defining the overall predicate in a generic way based on the components. We can still optimize it for the 0-length and 1-length cases. This way, there is no combinatorial explosion to deal with if new component predicates are added, and there is less risk of getting the overall predicate wrong.
Tue, 23 Sep 2014 14:45:23 -0700 convert: change default for git rename detection to 50%
Siddharth Agarwal <sid0@fb.com> [Tue, 23 Sep 2014 14:45:23 -0700] rev 22512
convert: change default for git rename detection to 50% This default mirrors the default for 'git diff'. Other commands have slightly different defaults -- for example, the move/copy detection for 'git blame' assumes that a hunk is moved if more than 40 alphanumeric characters are the same, or copied if more than 20 alphanumeric characters are the same. 50% seems to be the most common default, though.
Tue, 23 Sep 2014 14:40:32 -0700 convert: simplify git.similarity parsing
Siddharth Agarwal <sid0@fb.com> [Tue, 23 Sep 2014 14:40:32 -0700] rev 22511
convert: simplify git.similarity parsing
Wed, 24 Sep 2014 20:11:36 -0700 revset: fast implementation for fullreposet.__and__
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 24 Sep 2014 20:11:36 -0700] rev 22510
revset: fast implementation for fullreposet.__and__ "And" operation with something that contains the whole repo should be super cheap. Check method docstring for details. This provide massive boost to simple revset that use `subset & xxx` revset #0: p1(20000) 0) wall 0.002447 comb 0.010000 user 0.010000 sys 0.000000 (best of 767) 1) wall 0.000529 comb 0.000000 user 0.000000 sys 0.000000 (best of 3947) revset #1: p2(10000) 0) wall 0.002464 comb 0.000000 user 0.000000 sys 0.000000 (best of 913) 1) wall 0.000530 comb 0.000000 user 0.000000 sys 0.000000 (best of 4226) No other regression spotted. More performance improvements are expected in the future as more revset predicate are converted to use `subset & xxx` The relaxed way `fullreposet` handles "&" operation may cause some trouble for people comparing smartset from different filter levels. I'm not sure such people exist and we can improve that aspect in later patches.
Thu, 18 Sep 2014 13:04:02 -0700 revset: turn spanset into a factory function
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Sep 2014 13:04:02 -0700] rev 22509
revset: turn spanset into a factory function We rename the `spanset` class to `_spanset`. `spanset` is now a function that builds either a `fullreposet` or a `_spanset` according to the argument passed. At some point, we may force people to explicitly use the `fullreposet` constructor, but the current approach makes it easier to ensure we use the new class whenever possible and focus on the benefits of this class.
Tue, 29 Apr 2014 19:06:15 -0700 revert: add a fullreposet class
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 29 Apr 2014 19:06:15 -0700] rev 22508
revert: add a fullreposet class Every revset evaluation starts from `subset = spanset(repo)` and a lot of revset predicates build a `spansetrepo` for their internal needs. `spanset` is a generic class that can handle any situation. As a result a lot of operation between spanset result in an `orderedlazyset`, a safe object but suboptimal in may situation. So we introduce a `fullreposet` class where some of the operation will be overwritten to produce more interesting results.
Tue, 23 Sep 2014 12:21:38 -0700 obsolete: ensure that `getrevs` always return a set
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 23 Sep 2014 12:21:38 -0700] rev 22507
obsolete: ensure that `getrevs` always return a set When a set of revisions was empty, we were using an empty tuple. We now return an empty frozenset to ensure the object could be used in an operation that requires a set.
Mon, 22 Sep 2014 23:46:38 +0900 hgweb: fail if an invalid command was supplied in url path (issue4071) stable
Anton Shestakov <engored@ya.ru> [Mon, 22 Sep 2014 23:46:38 +0900] rev 22506
hgweb: fail if an invalid command was supplied in url path (issue4071) Traditionally, the way to specify a command for hgweb was to use url query arguments (e.g. "?cmd=batch"). If the command is unknown to hgweb, it gives an error (e.g. "400 no such method: badcmd"). But there's also another way to specify a command: as a url path fragment (e.g. "/graph"). Before, hgweb was made forgiving (looks like it was made in 44c5157474e7) and user could put any unknown command in the url. If hgweb couldn't understand it, it would just silently fall back to the default command, which depends on the actual style (e.g. for paper it's shortlog, for monoblue it's summary). This was inconsistent and was breaking some tools that rely on http status codes (as noted in the issue4071). So this patch changes that behavior to the more consistent one, i.e. hgweb will now return "400 no such method: badcmd". So if some tool was relying on having an invalid command return http status code 200 and also have some information, then it will stop working. That is, if somebody typed foobar when they really meant shortlog (and the user was lucky enough to choose a style where the default command is shortlog too), that fact will now be revealed. Code-wise, the changed if block is only relevant when there's no "?cmd" query parameter (i.e. only when command is specified as a url path fragment), and looks like the removed else branch was there only for falling back to default command. With that removed, the rest of the code works as expected: it looks at the command, and if it's not known, raises a proper ErrorResponse exception with an appropriate message. Evidently, there were no tests that required the old behavior. But, frankly, I don't know any way to tell if anyone actually exploited such forgiving behavior in some in-house tool.
Wed, 24 Sep 2014 15:52:40 +0900 keepalive: fix how md5 is used stable
Mike Hommey <mh@glandium.org> [Wed, 24 Sep 2014 15:52:40 +0900] rev 22505
keepalive: fix how md5 is used The code in keepalive dates from when it was importing the md5 module directly and uses md5.new. Since then, what 'md5' means has been changed from an import of the md5 module to being a function using the right module between hashlib and md5, so the md5.new idiom doesn't work anymore.
Sat, 27 Sep 2014 13:18:10 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 27 Sep 2014 13:18:10 -0500] rev 22504
merge with stable
Tue, 16 Sep 2014 23:59:29 -0700 revset: add an optimised baseset.__contains__ (issue4371) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 23:59:29 -0700] rev 22503
revset: add an optimised baseset.__contains__ (issue4371) The baseset class is based on a python list. This means that base.__contains__ was absolutely as crappy as list.__contains__. We now rely on __contains__ from the underlying set. This will avoid having to explicitly convert the baseset to a set (using baseset.set()) whenever one want fast membership test. Apparently there is already code that forgot to do such conversions since we observe a massive speedup in some test. revset #25: roots((0::) - (0::tip)) 0) wall 2.079454 comb 2.080000 user 2.080000 sys 0.000000 (best of 5) 1) wall 0.132970 comb 0.130000 user 0.130000 sys 0.000000 (best of 65) No regression is observed in benchmarks. This change improve the issue4371 back to acceptable situation (but are still slower than manual substraction)
Mon, 22 Sep 2014 16:14:08 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 22 Sep 2014 16:14:08 -0500] rev 22502
merge with stable
Mon, 22 Sep 2014 16:03:07 -0500 commands: deprecate the parents commands
Matt Mackall <mpm@selenic.com> [Mon, 22 Sep 2014 16:03:07 -0500] rev 22501
commands: deprecate the parents commands It's replaced by 'hg summary' or hg log -r 'parents(foo)' and doesn't need to take up space in our command list anymore.
Wed, 17 Sep 2014 19:56:59 -0700 revset: remove nullrev from the bookmark computation
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 19:56:59 -0700] rev 22500
revset: remove nullrev from the bookmark computation Same as for other revset we sanitize the content of the set to be able to rely on it more.
Wed, 17 Sep 2014 10:58:25 -0700 revset: unify code flow in `bookmark`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:58:25 -0700] rev 22499
revset: unify code flow in `bookmark` We refactor the code of the bookmark revset to have a single return. This will allow us to sanitize the content of the set.
Wed, 17 Sep 2014 10:59:30 -0700 revset: remove invalid value in the origin set
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 10:59:30 -0700] rev 22498
revset: remove invalid value in the origin set Same as the parents related revsets, origin had some invalid value in the computed set. We remove them.
Wed, 17 Sep 2014 19:49:26 -0700 revset: remove nullrev from set computed in parents()
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 19:49:26 -0700] rev 22497
revset: remove nullrev from set computed in parents() The old code relied on the subset contents to get rid of invalid values. We would like to be able to rely more on the computation in parents() so we filter out the invalid value.
Wed, 17 Sep 2014 19:44:03 -0700 revset: refactor parents() into a single return point
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 19:44:03 -0700] rev 22496
revset: refactor parents() into a single return point Both paths are doing similar thing in the end. We refactor the function so that the `ps` set is commonly used at the end. This will end excluding `nullrev` from this set in a future patch
Wed, 17 Sep 2014 04:40:30 -0700 revset: remove nullrev from set computed in p1() and p2()
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 04:40:30 -0700] rev 22495
revset: remove nullrev from set computed in p1() and p2() The old code relied on the subset contents to get rid of invalid values. We would like to be able to rely more on the computation in p1() and p2() so we filter out the invalid value
Tue, 16 Sep 2014 23:42:41 -0700 revset: document the choice made in __generatorset.__iter__
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 23:42:41 -0700] rev 22494
revset: document the choice made in __generatorset.__iter__ The method code looks a bit ugly but has good reasons to. We document them to prevent naive refactoring in the future.
Sun, 21 Sep 2014 10:31:34 -0500 help: mention mode in hg log --removed help (issue4381) stable
Matt Mackall <mpm@selenic.com> [Sun, 21 Sep 2014 10:31:34 -0500] rev 22493
help: mention mode in hg log --removed help (issue4381)
Sun, 21 Sep 2014 10:07:06 -0500 commit: catch changed exec bit on files from p1 (issue4382) stable
Matt Mackall <mpm@selenic.com> [Sun, 21 Sep 2014 10:07:06 -0500] rev 22492
commit: catch changed exec bit on files from p1 (issue4382)
Sat, 30 Aug 2014 02:25:23 +0200 revert: add a `drop` action
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:25:23 +0200] rev 22491
revert: add a `drop` action This prevents the need for a try except in the `_performrevert` code.
Sat, 30 Aug 2014 02:23:25 +0200 revert: explicitly track added but deleted file
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:23:25 +0200] rev 22490
revert: explicitly track added but deleted file Added + deleted file are files that need to be untracked from the dirstate but that are already missing on disk. The current `_performrevert` code is handling that with exception catching. We will be able to do better with a dedicated set.
Mon, 01 Sep 2014 12:36:48 +0200 revert: have an explicit action for "forget"
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 01 Sep 2014 12:36:48 +0200] rev 22489
revert: have an explicit action for "forget" The distinction between "remove" and "forget" used to be in special logic checking for the state of the file in the dirstate. Now that we have dedicated filtering, we can stop relying on this logic and have two distinct actions.
Sat, 30 Aug 2014 18:20:29 +0200 revert: split between newly added file and file added in other changeset
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 18:20:29 +0200] rev 22488
revert: split between newly added file and file added in other changeset These two kinds of files are handled differently. One is deleted and the other is just forgotten (the file is untracked but left in place). The distinction is done in the `_performrevert` code itself and we would like to get ride of this.
Tue, 16 Sep 2014 22:55:49 -0700 revset: stop using a baseset instead of a plain list in _revsbetween
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 22:55:49 -0700] rev 22487
revset: stop using a baseset instead of a plain list in _revsbetween The function internal code needs a list. Lets use a list.
Fri, 19 Sep 2014 07:23:10 +0530 run-tests: added 'cuser', 'csys' time info in report.json file
anuraggoel <anurag.dsps@gmail.com> [Fri, 19 Sep 2014 07:23:10 +0530] rev 22486
run-tests: added 'cuser', 'csys' time info in report.json file This patch adds up a 'cuser' and 'csys'(cputime) info in report.json file which generated when --json is enabled while testing. Now the new format of report.json file is as below. testreport ={ "test-success.t": { "csys": "1.041", "cuser": "1.041", "result": "success", "time": "2.041" } "test-failure.t": { "csys": "1.041", "cuser": "1.041", "result": "failure", "time": "4.430" } "test-skip.t": { "csys": "1.041", "cuser": "1.041", "result": "skip", "time": "3.754" } }
Fri, 19 Sep 2014 14:51:58 -0500 import: let --exact 'work' with --no-commit (issue4376)
Matt Mackall <mpm@selenic.com> [Fri, 19 Sep 2014 14:51:58 -0500] rev 22485
import: let --exact 'work' with --no-commit (issue4376)
Tue, 16 Sep 2014 16:03:21 -0700 obsolete: use C code for headrevs calculation
Durham Goode <durham@fb.com> [Tue, 16 Sep 2014 16:03:21 -0700] rev 22484
obsolete: use C code for headrevs calculation Previously, if there were filtered revs the repository could not use the C fast path for computing the head revs in the changelog. This slowed down many operations in large repositories. This adds the ability to filter revs to the C fast path. This speeds up histedit on repositories with filtered revs by 30% (13s to 9s). This could be improved further by sorting the filtered revs and walking the sorted list while we walk the changelog, but even this initial version that just calls __contains__ is still massively faster. The new C api is compatible for both new and old python clients, and the new python client can call both new and old C apis.
Tue, 16 Sep 2014 23:47:34 -0700 revset: simplify orderedlazyset creation in spanset method
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 23:47:34 -0700] rev 22483
revset: simplify orderedlazyset creation in spanset method We can simply use the `self.isascending` value instead of more complex if/else clause. This get the code simpler. Benchmarks show no performances harmed in the process.
Tue, 16 Sep 2014 23:37:03 -0700 revset: use spanset.isdescending in multiple simple places
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 23:37:03 -0700] rev 22482
revset: use spanset.isdescending in multiple simple places We call the method directly instead of duplicating checks. Benchmarks show no performances harmed in the process.
Tue, 16 Sep 2014 23:34:18 -0700 revset: wider definition of ascending and descending for spanset
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Sep 2014 23:34:18 -0700] rev 22481
revset: wider definition of ascending and descending for spanset Before this patches, empty spanset were seen as neither ascending nor descending. This is mathematically wrong and create some edges case. We put `isascending` and `isdescending` back on track so we can use them to simplify some of the spanset code. Benchmarks show no performances harmed in the process.
Wed, 17 Sep 2014 23:21:20 +0900 annotate: port to generic templater enabled by hidden -T option
Yuya Nishihara <yuya@tcha.org> [Wed, 17 Sep 2014 23:21:20 +0900] rev 22480
annotate: port to generic templater enabled by hidden -T option If the selected formatter is other than plainformatter, raw data are passed to the formatter. In this case, it isn't necessary (and not possible) to calculate column widths. Field names are substituted to be the same as "log" command. There are a few limitations: - "binary file" message is not included in formatted output. - no data structure for multiple files. all lines are packed to single list.
Tue, 16 Sep 2014 23:40:24 +0900 annotate: split functions to get data without applying text formatting
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Sep 2014 23:40:24 +0900] rev 22479
annotate: split functions to get data without applying text formatting This prepares for porting to generic templater API, where raw data should be passed to the formatter. makefunc() is necessary to build closure in list comprehension.
Fri, 29 Aug 2014 06:19:32 +0200 annotate: remove unused variable in calculation of column widths
Yuya Nishihara <yuya@tcha.org> [Fri, 29 Aug 2014 06:19:32 +0200] rev 22478
annotate: remove unused variable in calculation of column widths
Fri, 29 Aug 2014 05:36:52 +0200 annotate: build format string separately from annotation data
Yuya Nishihara <yuya@tcha.org> [Fri, 29 Aug 2014 05:36:52 +0200] rev 22477
annotate: build format string separately from annotation data This prepares for porting to generic templater API. Note that we cannot use '%*s' to pad white spaces because it doesn't take into account character widths, as described in 4f5a6df2af92.
Wed, 17 Sep 2014 22:21:01 +0900 formatter: convert float value to json
Yuya Nishihara <yuya@tcha.org> [Wed, 17 Sep 2014 22:21:01 +0900] rev 22476
formatter: convert float value to json It will be used to encode ctx.date().
Wed, 17 Sep 2014 21:30:22 +0900 formatter: have jsonformatter accept tuple as value
Yuya Nishihara <yuya@tcha.org> [Wed, 17 Sep 2014 21:30:22 +0900] rev 22475
formatter: have jsonformatter accept tuple as value This is necessary for "annotate" to encode ctx.date() in the same manner as jsonchangeset printer. It doesn't support list object because keeping mutable object in _item could be a source of hidden bugs. Also, I can't think of the use case.
Wed, 17 Sep 2014 21:15:43 +0900 formatter: extract function that encode values to json string
Yuya Nishihara <yuya@tcha.org> [Wed, 17 Sep 2014 21:15:43 +0900] rev 22474
formatter: extract function that encode values to json string This is the stub for tuple support, which will be used to encode ctx.date() in the same manner as jsonchangeset printer.
Fri, 12 Sep 2014 21:38:52 -0400 contrib/synthrepo: pass options to ctx.diff as kwargs, not a dict
Mike Edgar <adgar@google.com> [Fri, 12 Sep 2014 21:38:52 -0400] rev 22473
contrib/synthrepo: pass options to ctx.diff as kwargs, not a dict
Fri, 12 Sep 2014 17:43:37 -0400 contrib/synthrepo: only generate 2 parents if model contains merges
Mike Edgar <adgar@google.com> [Fri, 12 Sep 2014 17:43:37 -0400] rev 22472
contrib/synthrepo: only generate 2 parents if model contains merges If `hg analyze` is run on a revision set which contains no merges, then `hg synthesize` will raise IndexError trying to select from p2distance, which will be empty.
Fri, 12 Sep 2014 12:28:30 -0700 convert: add support to find git copies from all files in the working copy
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Sep 2014 12:28:30 -0700] rev 22471
convert: add support to find git copies from all files in the working copy I couldn't think of a better name for this option, so I stole the Git one in the hope that anyone converting a Git repo knows what it means.
Fri, 12 Sep 2014 11:23:26 -0700 convert: add support to detect git renames and copies
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Sep 2014 11:23:26 -0700] rev 22470
convert: add support to detect git renames and copies Git is fairly unique among VCSes in that it doesn't record copies and renames, instead choosing to detect them on the fly. Since Mercurial expects copies and renames to be recorded, it can be valuable to preserve this history while converting a Git repository to Mercurial. This patch adds a new convert option, called 'convert.git.similarity', which determines how similar files must be to be treated as renames or copies.
Thu, 11 Sep 2014 23:57:49 -0700 convert: for git, factor out code to add entries to a separate function
Siddharth Agarwal <sid0@fb.com> [Thu, 11 Sep 2014 23:57:49 -0700] rev 22469
convert: for git, factor out code to add entries to a separate function We're going to call this for multiple files in one iteration in upcoming patches.
Thu, 11 Sep 2014 23:37:47 -0700 convert: for git's getchanges, always split entry line into components
Siddharth Agarwal <sid0@fb.com> [Thu, 11 Sep 2014 23:37:47 -0700] rev 22468
convert: for git's getchanges, always split entry line into components We always need to know whether the entry is a rename or copy, so split it up unconditionally.
Thu, 11 Sep 2014 23:35:19 -0700 convert: for git's getchanges, use explicit index for iteration
Siddharth Agarwal <sid0@fb.com> [Thu, 11 Sep 2014 23:35:19 -0700] rev 22467
convert: for git's getchanges, use explicit index for iteration Upcoming patches will add support for copies and renames, for which we'll need to access multiple lines of the difftree output at once.
Fri, 12 Sep 2014 10:17:56 -0700 convert: add initial docs for git sources
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Sep 2014 10:17:56 -0700] rev 22466
convert: add initial docs for git sources Upcoming patches will add config options for git sources. This patch adds a place to document them.
Sun, 24 Aug 2014 17:27:28 -0400 color: document that changeset phases have labels
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 24 Aug 2014 17:27:28 -0400] rev 22465
color: document that changeset phases have labels It's very useful to be able to colourise csets according to their phases. There was no indication anywhere in the docs that this is possible. We use e.g. `changeset.secret = ` instead of `changeset.secret ='none'`, because otherwise this is a BC: it would nullify the effects given to log.changeset label that usually surrounds the changeset.{phase} labels. Specifying the label without any effect instead of 'none' is a true no-op change and purely documentation.
Fri, 19 Sep 2014 12:51:15 -0500 color: change the debug output format
Matt Mackall <mpm@selenic.com> [Fri, 19 Sep 2014 12:51:15 -0500] rev 22464
color: change the debug output format Before, the format was label(labeled text) # single label [label1 label2](labeled text) # multiple Now, it's [labels|labeled text] ..which should make things a bit more clear.
Sun, 24 Aug 2014 17:40:27 -0400 color: enable debug option to show labels
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 24 Aug 2014 17:40:27 -0400] rev 22463
color: enable debug option to show labels This is a debug option for showing labels. This can be helpful for knowing which labels are available for colouring or to see the output when defining your own templates. A couple of tests are included.
Sun, 24 Aug 2014 17:35:36 -0400 color: document that labels are used for colorizing text
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 24 Aug 2014 17:35:36 -0400] rev 22462
color: document that labels are used for colorizing text It is a deeply hidden secret that it's possible to colorise so many things with so many different labels. This is an attempt to document this. The text is a bit long, but it seems as short as can be while documenting everything. Perhaps it should be hidden under a --verbose option.
Wed, 27 Aug 2014 16:39:44 +0200 contrib: add OS X p4merge to mergetools.hgrc
Mads Kiilerich <madski@unity3d.com> [Wed, 27 Aug 2014 16:39:44 +0200] rev 22461
contrib: add OS X p4merge to mergetools.hgrc
Wed, 20 Aug 2014 15:15:50 -0400 patch: enable diff.tab markup for the color extension
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 20 Aug 2014 15:15:50 -0400] rev 22460
patch: enable diff.tab markup for the color extension The following patch splits up changed lines along tabs (using re.findall), and gives them a "diff.tab" label. This can be used by the color extension for colorising tabs, like it does right now with trailing whitespace. I also provide corresponding tests.
Wed, 17 Sep 2014 13:08:03 -0700 dirstate: copyedit exception for no beginparentchange call
Siddharth Agarwal <sid0@fb.com> [Wed, 17 Sep 2014 13:08:03 -0700] rev 22459
dirstate: copyedit exception for no beginparentchange call
Sun, 07 Sep 2014 11:33:22 -0700 revsetbenchmarks: add an additional roots() benchmark
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 07 Sep 2014 11:33:22 -0700] rev 22458
revsetbenchmarks: add an additional roots() benchmark The existing roots(x - y) revset only considered the most recent 100 revisions. This was a good start. But expanding it to the full history of the repository can dramatically increase execution time and thus constitutes a useful benchmark.
Tue, 16 Sep 2014 14:49:56 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 16 Sep 2014 14:49:56 -0500] rev 22457
merge with stable
Fri, 12 Sep 2014 02:29:19 +0900 mq: examine "pushable" of already applied patch correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 12 Sep 2014 02:29:19 +0900] rev 22456
mq: examine "pushable" of already applied patch correctly Before this patch, "hg qselect" with --pop/--reapply may pop patches unexpectedly, even when all of patches applied before "qselect" are still pushable. Strictly speaking about the condition of this issue: - before "qselect" - there are N applied patches - the index of the guarded patch X in the series is less than N - after "qselect" - X is still guarded, and - all of applied patched are still pushable In the case above, "hg qselect" should keep current status, but it actually tries to pop patches because of X. The index in "the series" should be used to examine "pushable" of a patch by "mq.pushablek()", but the index in "applied patches" is used, and this may cause unexpected examination of guarded patch. To examine "pushable" of already applied patch correctly, this patch uses "mq.applied[i].name": "pushable" is the function introduced by the previous patch, and it returns "mq.pushable(mq.applied[i].name)[0]".
Fri, 12 Sep 2014 02:29:19 +0900 mq: pop correct patches when changing pushable-ness of already applied ones stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 12 Sep 2014 02:29:19 +0900] rev 22455
mq: pop correct patches when changing pushable-ness of already applied ones Before this patch, "hg qselect" with --pop/--reapply may pop incorrect patches, because the index in "applied patches" is used to pop patches by "mq.pop()", even though the index in "the series" should be used. For example, when the already applied patch becomes guarded and it follows the already guarded (= not yet applied) one, "hg qselect" is aborted, because it tries to pop to guarded one. This patch uses "mq.applied[i - 1].name" to pop to the patch, of which the index in the "applied ones" is "i - 1".
Fri, 12 Sep 2014 02:29:19 +0900 mq: use "mq.applied[i].name" instead of "mq.appliedname(i)" for safety stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 12 Sep 2014 02:29:19 +0900] rev 22454
mq: use "mq.applied[i].name" instead of "mq.appliedname(i)" for safety Before this patch, "hg qselect --reapply" is aborted when "--verbose" is specified, because "mq.appliedname()" returns "INDEX PATCHNAME" instead of "PATCHNAME" in such case and "mq.push" can't accept the former as the name of patch. This patch uses "mq.applied[i].name" instead of "mq.appliedname(i)" as the name of the patch to be pushed for safety. Now, there is no code path using "mq.appliedname()", and it should be removed to prevent developers from using it in the wrong way like this issue.
Fri, 12 Sep 2014 02:29:19 +0900 mq: report correct numbers for changing "number of guarded, applied patches" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 12 Sep 2014 02:29:19 +0900] rev 22453
mq: report correct numbers for changing "number of guarded, applied patches" Before this patch, "hg qselect" may report incorrect numbers for "number of guarded, applied patches has changed", because it examines "pushable" of patches by the index not in "the series" but in "applied patches", even though "mq.pushable()" expects the former. To report correct numbers for changing "number of guarded, applied patches", this patch uses the name of applied patch to examine pushable-ness of it. This patch also changes the result of existing "hg qselect" tests, because they doesn't change pushable-ness of already applied patches. This patch assumes that "hg qselect" focuses on changing pushable-ness only of already applied patches, because: - the report message uses not "previous" (in the series) but "applied" - the logic to pop patches for --pop/--reapply examines pushable-ness only of already applied ones (in fact, there are some incorrect code paths)
Fri, 29 Aug 2014 05:09:59 +0200 annotate: remove redundant check for empty list of annotation data
Yuya Nishihara <yuya@tcha.org> [Fri, 29 Aug 2014 05:09:59 +0200] rev 22452
annotate: remove redundant check for empty list of annotation data It isn't necessary because zip(*pieces) returns [] if pieces are empty, and pieces are empty only if lines are empty.
Fri, 12 Sep 2014 14:21:18 -0700 revset: lower weight for _intlist function
Durham Goode <durham@fb.com> [Fri, 12 Sep 2014 14:21:18 -0700] rev 22451
revset: lower weight for _intlist function The histedit command uses a revset like: (_intlist('1234\x001235')) and merge() Previously the optimizer gave a weight of 1.5 to the _intlist side (1 for the function, 0.5 for the string) which caused it to process the merge() side first. This caused it to evaluate merge against every commit in the repo, which took 2.5 seconds on a large repo. I changed the weight of _intlist to 0, since it's a trivial calculation, which makes it process intlist first, which makes merge apply only to the revs in the list. Which makes the revset take 0.15 seconds now. Cutting off 2.4 seconds off our histedit performance. >From the revset benchmark: revset #25: (_intlist('20000\x0020001')) and merge() 0) obsolete feature not enabled but 54243 markers found! ! wall 0.036767 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) 1) obsolete feature not enabled but 54243 markers found! ! wall 0.000198 comb 0.000000 user 0.000000 sys 0.000000 (best of 9084)
Fri, 12 Sep 2014 15:00:51 -0700 revset: make parents() O(number of parents)
Durham Goode <durham@fb.com> [Fri, 12 Sep 2014 15:00:51 -0700] rev 22450
revset: make parents() O(number of parents) Strip executes a revset like this: max(parents(_intlist('1234\x001235')) - _intlist('1234\x001235')) Previously the parents() revset would do 'subset & parents' which iterates over each item in the subset and checks if it's in parents. subset is usually the entire repo (a spanset) so this takes a while. Reversing the parameters to be 'parents & subset' means the operation becomes O(number of parents) instead of O(size of repo). It also means the result gets evaluated immediately (since parents isn't a lazy set), but I think this is a win in most scenarios. This shaves 0.3 seconds off strip (amend/histedit/rebase/etc) for large repositories. revset #0: parents(20000) 0) obsolete feature not enabled but 54243 markers found! ! wall 0.006256 comb 0.010000 user 0.010000 sys 0.000000 (best of 289) 1) obsolete feature not enabled but 54243 markers found! ! wall 0.000391 comb 0.000000 user 0.000000 sys 0.000000 (best of 4323)
Fri, 12 Sep 2014 16:21:13 -0700 revset: make descendants() lazier
Durham Goode <durham@fb.com> [Fri, 12 Sep 2014 16:21:13 -0700] rev 22449
revset: make descendants() lazier Previously descendants() would force the provided subset to become a set. In the case of revsets like '(%ld::) - (%ld)' (as used by histedit) this would force the '- (%ld)' set to be evaluated, which produced a set containing every commit in the repo (except %ld). This takes 0.6s on large repos. This changes descendants to trust the subset to implement __contains__ efficiently, which improves the above revset to 0.16s. Shaving 0.4 seconds off of histedit. revset #27: (20000::) - (20000) 0) obsolete feature not enabled but 54243 markers found! ! wall 0.023640 comb 0.020000 user 0.020000 sys 0.000000 (best of 100) 1) obsolete feature not enabled but 54243 markers found! ! wall 0.019589 comb 0.020000 user 0.020000 sys 0.000000 (best of 100) This commit removes the final revset related perf hotspot from histedit. Combined with the previous two patches, they shave a little over 3 seconds off histedit on large repos.
Wed, 17 Sep 2014 00:28:37 +0900 check-code: look for misuse of __bool__
Yuya Nishihara <yuya@tcha.org> [Wed, 17 Sep 2014 00:28:37 +0900] rev 22448
check-code: look for misuse of __bool__
Wed, 17 Sep 2014 00:31:03 +0900 formatter: correct bool testing which should be __nonzero__ in Python 2
Yuya Nishihara <yuya@tcha.org> [Wed, 17 Sep 2014 00:31:03 +0900] rev 22447
formatter: correct bool testing which should be __nonzero__ in Python 2
Mon, 15 Sep 2014 16:07:54 -0400 contrib/synthrepo: return None to delete files on commit, don't raise IOError
Mike Edgar <adgar@google.com> [Mon, 15 Sep 2014 16:07:54 -0400] rev 22446
contrib/synthrepo: return None to delete files on commit, don't raise IOError The internal commit API was changed in 650b5b6e75ed to expect None from the filectx function when a file is to be deleted, not an IOError. This change keeps synthrepo up-to-date.
Mon, 15 Sep 2014 09:36:12 -0500 wix: contrib/sample.hgrc is no more
Steve Borho <steve@borho.org> [Mon, 15 Sep 2014 09:36:12 -0500] rev 22445
wix: contrib/sample.hgrc is no more
Sun, 31 Aug 2014 13:41:09 +0200 dockerrpm: create a yum/dnf repo from the generated rpms
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 13:41:09 +0200] rev 22444
dockerrpm: create a yum/dnf repo from the generated rpms This gives "PPA" functionality where users easily can stay uptodate with latest nightly build.
Thu, 15 May 2014 01:48:37 +0200 docker: add CentOS 5
Mads Kiilerich <madski@unity3d.com> [Thu, 15 May 2014 01:48:37 +0200] rev 22443
docker: add CentOS 5 There is no official CentOS 5 docker template so we use one from saltstack.
Sun, 31 Aug 2014 13:41:09 +0200 docker: use stable tags for fedora and centos
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 13:41:09 +0200] rev 22442
docker: use stable tags for fedora and centos A moving target is rarely useful.
Fri, 30 May 2014 14:14:33 +0200 dockerrpm: prepare source outside docker and just run rpmbuild inside docker
Mads Kiilerich <madski@unity3d.com> [Fri, 30 May 2014 14:14:33 +0200] rev 22441
dockerrpm: prepare source outside docker and just run rpmbuild inside docker Simplifies the rpm build process. We will use platform specific rpmbuild directories and will not clean them and will drop the explicit copy to build directory.
Fri, 30 May 2014 14:14:33 +0200 dockerrpm: run docker build process as the current user, not as root
Mads Kiilerich <madski@unity3d.com> [Fri, 30 May 2014 14:14:33 +0200] rev 22440
dockerrpm: run docker build process as the current user, not as root Docker can be run by ordinary users if they are in the docker group. The build process would however be run as a root user, only protected by the sandboxing. That caused problems with the shared directory where rpmbuild would be picky about building from sources owned by less privileged users and producing files owned by root. Instead, add a build user with the right uid/gid to the image and run the docker process as that user.
Fri, 30 May 2014 14:14:33 +0200 dockerrpm: better handling of specification of docker name
Mads Kiilerich <madski@unity3d.com> [Fri, 30 May 2014 14:14:33 +0200] rev 22439
dockerrpm: better handling of specification of docker name
Fri, 30 May 2014 14:14:33 +0200 dockerrpm: check that docker is running correctly before building
Mads Kiilerich <madski@unity3d.com> [Fri, 30 May 2014 14:14:33 +0200] rev 22438
dockerrpm: check that docker is running correctly before building
Sun, 31 Aug 2014 13:40:53 +0200 buildrpm: introduce --rpmdir instead of using hardcoded rpmbuild dir
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 13:40:53 +0200] rev 22437
buildrpm: introduce --rpmdir instead of using hardcoded rpmbuild dir Used as rpm _topdir when preparing spec and source and building rpms.
Thu, 15 May 2014 01:50:11 +0200 buildrpm: introduce --withpython for building rpms that includes Python 2.7
Mads Kiilerich <madski@unity3d.com> [Thu, 15 May 2014 01:50:11 +0200] rev 22436
buildrpm: introduce --withpython for building rpms that includes Python 2.7
Sun, 31 Aug 2014 12:51:06 +0200 buildrpm: introduce --prepare for preparing without actually building rpms
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 12:51:06 +0200] rev 22435
buildrpm: introduce --prepare for preparing without actually building rpms
Thu, 28 Aug 2014 22:45:36 +0900 templater: add "diff" template function
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 28 Aug 2014 22:45:36 +0900] rev 22434
templater: add "diff" template function "diff" allows to embed changes in the target revision into template output, even if the command itself doesn't take "--patch" option Combination of "[committemplate]" configuration and "diff" template function can achieve the feature like issue231 ("option to have diff displayed in commit editor buffer") http://bz.selenic.com/show_bug.cgi?id=231 For example, templating below can be used to add each "diff" output lines "HG: " prefix:: {splitlines(diff) % 'HG: {line}\n'} This patch implements "diff" not as "a template keyword" but as "a template function" to take include/exclude patterns at runtime. It allows to specify target files of command (by -I/-X command line options) and "diff" separately.
Tue, 16 Sep 2014 11:08:29 -0500 locate: add pointer to files command in help
Matt Mackall <mpm@selenic.com> [Tue, 16 Sep 2014 11:08:29 -0500] rev 22433
locate: add pointer to files command in help
Tue, 16 Sep 2014 11:08:14 -0500 tests: fix breakage from locate deprecation
Matt Mackall <mpm@selenic.com> [Tue, 16 Sep 2014 11:08:14 -0500] rev 22432
tests: fix breakage from locate deprecation
Sun, 16 Mar 2014 13:29:08 -0500 locate: deprecate in favor of files
Matt Mackall <mpm@selenic.com> [Sun, 16 Mar 2014 13:29:08 -0500] rev 22431
locate: deprecate in favor of files
Fri, 12 Sep 2014 18:36:38 -0500 formatter: add pickle format
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 18:36:38 -0500] rev 22430
formatter: add pickle format This gives convenient Python2 output. Python 3 users will need encoding=bytes.
Mon, 15 Sep 2014 13:15:07 -0500 commands: add hidden -T option for files/manifest/status/tags
Matt Mackall <mpm@selenic.com> [Mon, 15 Sep 2014 13:15:07 -0500] rev 22429
commands: add hidden -T option for files/manifest/status/tags These commands have generic formatting support but no way to enable it yet. When this feature is more fully developed, this flag will be unhidden.
Fri, 12 Sep 2014 18:29:29 -0500 formatter: add json formatter
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 18:29:29 -0500] rev 22428
formatter: add json formatter
Mon, 15 Sep 2014 13:11:13 -0500 cmdutil: add json style to log-like commands
Matt Mackall <mpm@selenic.com> [Mon, 15 Sep 2014 13:11:13 -0500] rev 22427
cmdutil: add json style to log-like commands Sadly, this can't be done with the normal templater like we do with XML due to JSON's inter-record comma rules.
Mon, 15 Sep 2014 13:12:49 -0500 encoding: add json escaping filter
Matt Mackall <mpm@selenic.com> [Mon, 15 Sep 2014 13:12:49 -0500] rev 22426
encoding: add json escaping filter This ends up here because it needs to be somewhat encoding aware.
Mon, 15 Sep 2014 13:12:20 -0500 encoding: handle empty string in toutf8
Matt Mackall <mpm@selenic.com> [Mon, 15 Sep 2014 13:12:20 -0500] rev 22425
encoding: handle empty string in toutf8
Fri, 12 Sep 2014 19:06:11 -0500 formatter: make debug style match Python syntax
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 19:06:11 -0500] rev 22424
formatter: make debug style match Python syntax
Fri, 12 Sep 2014 18:32:46 -0500 files: add new command unifying locate and manifest functionality
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 18:32:46 -0500] rev 22423
files: add new command unifying locate and manifest functionality
Tue, 02 Sep 2014 14:42:30 -0400 filelog: parsemeta stops returning unused key list
Mike Edgar <adgar@google.com> [Tue, 02 Sep 2014 14:42:30 -0400] rev 22422
filelog: parsemeta stops returning unused key list Currently, only the returned meta dictionary is used. An upcoming change will use the returned text offset.
Wed, 10 Sep 2014 00:18:15 -0400 filelog: make parsemeta a public module function, to be used by censor module
Mike Edgar <adgar@google.com> [Wed, 10 Sep 2014 00:18:15 -0400] rev 22421
filelog: make parsemeta a public module function, to be used by censor module
Wed, 10 Sep 2014 00:17:17 -0400 filelog: make packmeta a public module function, to be used by censor
Mike Edgar <adgar@google.com> [Wed, 10 Sep 2014 00:17:17 -0400] rev 22420
filelog: make packmeta a public module function, to be used by censor
Thu, 11 Sep 2014 12:26:12 -0500 ui: move samplehgrcs from config
Matt Mackall <mpm@selenic.com> [Thu, 11 Sep 2014 12:26:12 -0500] rev 22419
ui: move samplehgrcs from config config is generic code that doesn't know about Mercurial usage, so this was at the wrong layer
Thu, 11 Sep 2014 12:21:15 -0500 config: normalize style between user/global example configs
Matt Mackall <mpm@selenic.com> [Thu, 11 Sep 2014 12:21:15 -0500] rev 22418
config: normalize style between user/global example configs
Tue, 19 Aug 2014 14:33:31 -0400 commit: correctly check commit mutability during commit --amend
Augie Fackler <raf@durin42.com> [Tue, 19 Aug 2014 14:33:31 -0400] rev 22417
commit: correctly check commit mutability during commit --amend The right way to check if a context is mutable is to call .mutable(), not to compare .phase() with public.
Tue, 19 Aug 2014 14:33:01 -0400 histedit: check mutability of contexts correctly
Augie Fackler <raf@durin42.com> [Tue, 19 Aug 2014 14:33:01 -0400] rev 22416
histedit: check mutability of contexts correctly The right way to check if a context is mutable is to call .mutable(), not to compare .phase() with public.
Thu, 11 Sep 2014 10:14:34 -0400 manifest: mark addlistdelta and checkforbidden as module-private
Augie Fackler <raf@durin42.com> [Thu, 11 Sep 2014 10:14:34 -0400] rev 22415
manifest: mark addlistdelta and checkforbidden as module-private
Wed, 10 Sep 2014 10:52:00 -0400 convert: enable deterministic conversion progress bar for svn
Augie Fackler <raf@durin42.com> [Wed, 10 Sep 2014 10:52:00 -0400] rev 22414
convert: enable deterministic conversion progress bar for svn This produces slightly bad results when branches are in play, but overall I think it's probably worthwhile. We might be able to do better with branches somehow, but I haven't given it any thought.
Wed, 10 Sep 2014 10:51:46 -0400 convert: enable deterministic conversion progress bar for git
Augie Fackler <raf@durin42.com> [Wed, 10 Sep 2014 10:51:46 -0400] rev 22413
convert: enable deterministic conversion progress bar for git
Wed, 10 Sep 2014 11:04:29 -0400 test-convert-git.t: add a test of convert progress bars for git
Augie Fackler <raf@durin42.com> [Wed, 10 Sep 2014 11:04:29 -0400] rev 22412
test-convert-git.t: add a test of convert progress bars for git We're about to enhance this support, so test the existing behavior so the improved behavior is obvious in the next patch.
Mon, 26 May 2014 11:53:12 -0400 convert: add support for deterministic progress bar on scanning phase
Augie Fackler <raf@durin42.com> [Mon, 26 May 2014 11:53:12 -0400] rev 22411
convert: add support for deterministic progress bar on scanning phase This makes it possible to estimate how long the "scanning source" phase will take, if the specified source repo type supports a quick "how many changes" check.
Wed, 10 Sep 2014 11:01:47 -0400 test-convert-svn-move.t: remove stray '
Augie Fackler <raf@durin42.com> [Wed, 10 Sep 2014 11:01:47 -0400] rev 22410
test-convert-svn-move.t: remove stray '
Thu, 07 Aug 2014 12:47:20 -0400 manifest: move addlistdelta to module-level
Augie Fackler <raf@durin42.com> [Thu, 07 Aug 2014 12:47:20 -0400] rev 22409
manifest: move addlistdelta to module-level Again, there's no reason for this to be inside manifest.add, so we'll define it only once.
Thu, 07 Aug 2014 09:46:05 -0400 manifest: move checkforbidden to module-level
Augie Fackler <raf@durin42.com> [Thu, 07 Aug 2014 09:46:05 -0400] rev 22408
manifest: move checkforbidden to module-level There's no need for this function to be nested, so let's just define it once instead of every time manifest.add() gets called.
Fri, 05 Sep 2014 11:37:44 -0700 dirstate: add exception when calling setparent without begin/end (API)
Durham Goode <durham@fb.com> [Fri, 05 Sep 2014 11:37:44 -0700] rev 22407
dirstate: add exception when calling setparent without begin/end (API) Adds an exception when calling dirstate.setparent without having first called dirstate.beginparentchange. This will prevent people from writing code that modifies the dirstate parent without considering the transactionality of their change. This will break third party extensions that call setparents.
Fri, 05 Sep 2014 15:36:56 -0700 dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com> [Fri, 05 Sep 2014 15:36:56 -0700] rev 22406
dirstate: add test for exceptions during updates Adds a test that checks if the working copy parent and the working copy are in a good state if an exception happens between the time the working copy parent is set and the time the actual updates are recorded in the dirstate.
Fri, 05 Sep 2014 11:36:20 -0700 dirstate: wrap setparent calls with begin/endparentchange (issue4353)
Durham Goode <durham@fb.com> [Fri, 05 Sep 2014 11:36:20 -0700] rev 22405
dirstate: wrap setparent calls with begin/endparentchange (issue4353) This wraps all the locations of dirstate.setparent with the appropriate begin/endparentchange calls. This will prevent exceptions during those calls from causing incoherent dirstates (issue4353).
Fri, 05 Sep 2014 11:34:29 -0700 dirstate: add begin/endparentchange to dirstate
Durham Goode <durham@fb.com> [Fri, 05 Sep 2014 11:34:29 -0700] rev 22404
dirstate: add begin/endparentchange to dirstate It's possible for the dirstate to become incoherent (issue4353) if there is an exception in the middle of the dirstate parent and entries being written (like if the user ctrl+c's). This change adds begin/endparentchange which a future patch will require to be set before changing the dirstate parent. This will allow us to prevent writing the dirstate in the event of an exception while changing the parent.
Mon, 08 Sep 2014 20:57:44 +0200 parsers: avoid signed/unsigned comparison mismatch
Henrik Stuart <hg@hstuart.dk> [Mon, 08 Sep 2014 20:57:44 +0200] rev 22403
parsers: avoid signed/unsigned comparison mismatch Based on warning from Microsoft Visual C++ 2008.
Mon, 08 Sep 2014 20:22:10 +0200 parsers: use correct type for file offset
Henrik Stuart <hg@hstuart.dk> [Mon, 08 Sep 2014 20:22:10 +0200] rev 22402
parsers: use correct type for file offset Now using Py_ssize_t instead of long to denote offset in file whose length is already measured using Py_ssize_t. Length and offset are now consistent. Based on warning from Microsoft Visual C++ 2008.
(0) -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 tip