- Feb 14, 2016
-
-
Pierre-Yves David authored
This changeset finally make 'hg rebase' choose its default destination using the same logic as 'hg merge'. The previous default was "tipmost changeset on the current branch", the new default is "the other head if there is only one". This change has multiple consequences: - Multiple tests which were not rebasing anything (rebasing from tipmost head) are now rebasing on the other "lower" branch. This is the expected new behavior. - A test is now explicitly aborting when there is too many heads on the branch. This is the expected behavior. - We gained a better detection of the "nothing to rebase" case while performing 'hg pull --rebase' so the message have been updated. Making clearer than an update was performed and why. This is beneficial side-effect. - Rebasing from an active bookmark will behave the same as 'hg merge' from a bookmark.
-
- Feb 17, 2016
-
-
Kostia Balytskyi authored
-
- Feb 19, 2016
-
-
Sune Foldager authored
I've updated the script to reflect changes in Mercurial and to include a much more through installation guide with configuration examples and details on how to configure IIS. I've used the script to set up a working server from scratch.
-
- Feb 22, 2016
-
-
Pierre-Yves David authored
The bundlerepository have to do some special magic to handle linkrev of the bundlerepo filerev. That logic was done from a repoview and obsolescence marker affecting bundled changeset could lead to a crash. We now ensure we operate on unfiltered repository.
-
- Feb 17, 2016
-
-
liscju authored
Before this patch collapse message wasn't stored so when you ran into the merge conflict while rebasing, running rebase --continue didn't remember the message and always opened editor to fill commit message. This patch adds saving collapse message in .hg/last-message.txt and restoring it later when needed.
-
- Feb 22, 2016
-
-
Augie Fackler authored
-
- Feb 16, 2016
-
-
Martijn Pieters authored
The motivation for the change from 100 to 95 is included in a comment. * Updated the tests to include a change to a moved file that still should be caught as a move. * Use ui.configint() to non-integer configuration entries more gracefully. Also complain if a similarity outside of the acceptable range is set.
-
- Feb 19, 2016
-
-
liscju authored
-
- Feb 20, 2016
-
-
Gregory Szorc authored
The only consumer of the worker pool code today is `hg update`. Previously, the algorithm to partition work to each worker process preserved input list ordering. We'd take the first N elements, then the next N elements, etc. Measurements on mozilla-central demonstrate this isn't an optimal partitioning strategy. I added debug code to print when workers were exiting. When performing a working copy update on a previously empty working copy of mozilla-central, I noticed that process lifetimes were all over the map. One worker would complete after 7s. Many would complete after 12s. And another worker would often take >16s. This behavior occurred for many worker process counts and was more pronounced on some than others. What I suspect is happening is some workers end up with lots of small files and others with large files. This is because the update code passes in actions according to sorted filenames. And, directories under tend to accumulate similar files. For example, test directories often consist of many small test files and media directories contain binary (often larger) media files. This patch changes the partitioning algorithm to select every Nth element from the input list. Each worker thus has a similar composition of files to operate on. The result of this change is that worker processes now all tend to exit around the same time. The possibility of a long pole due to being unlucky and receiving all the large files has been mitigated. Overall execution time seems to drop, but not by a statistically significant amount on mozilla-central. However, repositories with directories containing many large files will likely show a drop. There shouldn't be any regressions due to partial manifest decoding because the update code already iterates the manifest to determine what files to operate on, so the manifest should already be decoded.
-
- Feb 18, 2016
-
-
David R. MacIver authored
When reloading tests, run-tests.py was assuming that it could look up the test by the basename, which only works if you are running tests which are in the current directory. This patch changes that lookup to use the full path. This is all that was needed, and does not appear to cause any problems for any of the existing testing work flows based on running the suggested commands at the top of run-tests.py. Motivation: In order to test Mercurial with Hypothesis (according to https://www.mercurial-scm.org/wiki/HypothesisPlan) it is useful to be able to generate temporary test files and execute them. Generating temporary files in the tests/ directory leads to a lot of suboptimal clutter.
-
- Feb 16, 2016
-
-
Kostia Balytskyi authored
This is a part of a bigger refactoring effort with the ultimate goal of better understanding of how histedit works and fixing issue4800.
-
- Feb 12, 2016
-
-
Yuya Nishihara authored
This makes it clear why we have to do repo[int(x)].
-
Yuya Nishihara authored
Because templater.revset() returns a list of strings, repo["-1"] was mapped to the tipmost revision. Ideally, we should make revset() return a list of integer revisions, but it turned out not simple. If revset() is a list of integers, "{ifcontains(rev, revset(), ...)}" would fail because "ifcontains" casts "rev" to a string. So this patch just converts a string back to an integer revision.
-
- Feb 06, 2016
-
-
Yuya Nishihara authored
Importing sqlalchemy.events cannot be delayed as it registers classes to their event mechanism. It worked fine before 4f1144c3c72b, since they use new-style imports. But now we have to blacklist it because our demandimport can handle new-style imports. This patch series isn't intended for stable as we don't guarantee API compatibility with 3rd-party extensions. They can temporarily disable the demand importer to work around the issue.
-
Yuya Nishihara authored
If a module is loaded as "from . import x" form, there has been no way to disable demand loading for that module because name is ''. This patch makes it possible to prevent demand loading by '<package-name>.x'. We don't use _hgextimport(_origimport) here since attr is known to be a sub-module name. Adding hgext_ to attr wouldn't make sense.
-
- Feb 16, 2016
-
-
Gregory Szorc authored
Magic numbers hinder readability.
-
- Jan 21, 2016
-
-
Matt Harbison authored
Without this, the paths were in the form "C:\\Users\\Matt\\AppData...". The test runner wouldn't collapse it down to $TESTTMP, which uses single backslashes.
-
Matt Harbison authored
-
- Feb 17, 2016
-
-
Matt Anderson authored
This patch changes "progress.shouldprint()" so a feature name is provided to "ui.plain()" to determine if there is an exception specificed in HGPLAINEXCEPT for the progress extension. This will allow user-facing scripts to provide progress output while HGPLAIN is enabled.
-
timeless authored
The only consumer was test-treemanifest.t, which has been fixed. In general, you should be able to use killdaemons.py to recycle ports instead of going over 3 ports (HGPORT, HGPORT1, HGPORT2). In the future, if you want to add a port, be sure to change portneeded in _getport.
-
timeless authored
Adding a port reservation was too hard and someone did it wrong. By refactoring, such reservations can be managed more safely. This also adds documentation so that the next person who tries is more likely to update all the places correctly. Note that in this commit the reservation and consumers do not match, that will be fixed in the next commit.
-
timeless authored
test-treemanifest.t had introduced HGPORT3 and HGPORT4, which were improperly added to run-tests.py. It also was not using HGPORT1. This recycles HGPORT, and shifts everything into HGPORT1 + HGPORT2.
-
Jun Wu authored
We are going to make chgserver load repo config, remember what it is, and load repo config again to detect config change. This is the first step that passes config, repo, cwd options to server. Traceback is passed as well to cover errors before hitting chgserver.runcommand.
-
Jun Wu authored
This patch simplifies the code a bit, and reduces the binary size a little.
-
Jun Wu authored
They are like malloc and realloc but will abort the program on error. A lot of places use {m,re}alloc and check their results. This patch can simplify them.
-
- Feb 15, 2016
-
-
Gregory Szorc authored
This patch extracts the code for determining requirements for a new repo into a standalone function. By doing so, future code that will perform an in-place repository upgrade (e.g. to generaldelta) can examine the set of proposed new requirements and possibly take additional actions (such as adding dotencode or fncache) when performing the upgrade. This patch is marked as API because _baserequirements (which was added in b090601a80d1 so extensions could override it) has been removed and will presumably impact whatever extension it was added for. Consumers should be able to monkeypatch the new function to achieve the same functionality. The "create" argument has been dropped because the function is only called in one location and "create" is always true in that case. While it makes logical sense for this code to be a method so extensions can implement a custom repo class / method to override it, this won't actually work. This is because requirements determination occurs during localrepository.__init__ and this is before the "reposetup" "callback" is fired. So, the only way for extensions to customize requirements would be to overwrite localrepo.localrepository or to monkeypatch a function on a module during extsetup(). Since we try to keep localrepository small, we use a standalone function. There is probably room to offer extensions a "hook" point to alter repository creation. But that is scope bloat.
-
Gregory Szorc authored
In preparation for moving requirements determination to its own function.
-
- Feb 13, 2016
-
-
Gregory Szorc authored
A future patch will refactor requirements determination into a standalone function. To prepare for this, refactor the requirements code to assign to a local variable instead of to self.requirements.
-
- Feb 09, 2016
-
-
Pierre-Yves David authored
In the merge case, we abort if the working copy is not at head, offering to run 'hg update' in the hint instead. In the rebase case, we do not abort in that case. Yet if no rebase destination are found, it still make sense to hint the user about running 'hg update'. So we re-introduce a conditional using this branch in the 'onheadcheck == False' case. This will get used on rebase use this function.
-
- Feb 15, 2016
-
-
Jun Wu authored
This is necessary to make chg test pass on test-inherit-mode.t.
-
Jun Wu authored
Before this patch, the server won't inherit umask from the client, which will fail test-inherit-mode.t. This patch provides a way for the client to change umask of the server, similar to chdir and setenv.
-
- Feb 16, 2016
-
-
Jun Wu authored
Use _readlist and _readstr to make the code shorter.
-
- Feb 15, 2016
-
-
Jun Wu authored
Use _readlist introduced in previous commit to make the code shorter.
-
- Feb 16, 2016
-
-
Jun Wu authored
Reading a string or a list are common operations for commandserver and chgserver. This patch adds _readstr and _readlist to avoid duplication.
-
- Feb 10, 2016
-
-
Jun Wu authored
Before this patch, there is no easy way to detect if there are extensions failed to load. While this is okay for most situations, chgserver is designed to preload all extensions specified in config and does need the information. This patch adds extensions.notloaded() to return names of extensions failed to load.
-
- Feb 15, 2016
-
-
Kostia Balytskyi authored
I recently broke _histedit into multiple functions, each of which had 'action' in its name. This is a little bit confusing since 'action' is the word for an individual histedit plan item (such as edit or pick). To avoid this confusion, these functions are now renamed to contain 'histedit' as part of their names.
-
Kostia Balytskyi authored
This is a part of a bigger effort to refactor histedit with ultimate goal of understanding it.
-
Martijn Pieters authored
This is consistent with the addremove --similarity option.
-
Martijn Pieters authored
-
Martijn Pieters authored
-