- Oct 09, 2014
-
-
Pierre-Yves David authored
This test, written after 3.0, is relying on addset being enforced ascending if both side are ascending. We are about to restore the ordering to 2.9 behavior (elements are ordered in the order they are specified). We fix the test before fixing the order.
-
Pierre-Yves David authored
This add method is enforcing non-laziness, disabling multiple optimisations. Benchmarks do not spot any significant difference but real usecase may. This will also be important for further improvements to addset later in this series.
-
Pierre-Yves David authored
This add method is enforcing non-laziness, disabling multiple optimisations. Benchmarks do not spot any significant regression but real usecase may. This even gives some speedup in some cases: revset #15: min(0::) before) wall 0.001247 comb 0.000000 user 0.000000 sys 0.000000 (best of 1814) after) wall 0.000942 comb 0.000000 user 0.000000 sys 0.000000 (best of 2367) This will also be important for further improvement to addset later in this series.
-
Pierre-Yves David authored
This add method is enforcing non-laziness, disabling multiple optimisations. Benchmarks do not spot any significant differences but real usecase may. This will also be important for further improvements to addset later in this series.
-
- Sep 17, 2014
-
-
Pierre-Yves David authored
-
Pierre-Yves David authored
Obsmarker format "1" does not supports sub minute timezone. So we change the test to something slightly more sensible.
-
Pierre-Yves David authored
This option controls what version of the binary format to use when creating a new obsstore file. Default is still the old format. No safeguards are currently placed around the option value, but no clueless users are in danger of harm since it is undocumented.
-
- Oct 09, 2014
-
-
Pierre-Yves David authored
This new encoding explicitly stores the date and parents allowing a significantly faster marker decoding. See inline documentation for details. This format is not yet used to store format on disk. But it will be used in bundle2 exchange if both side support it. Support for on-disk format is coming in other changesets.
-
- Oct 10, 2014
-
-
Pierre-Yves David authored
We add flag to inform that the marker is using sha256 hashes. As format 0 is not able to handle sha256 hashes (32 bytes long), we plain crash if we even attempt to encode a sha256 with it.
-
- Oct 09, 2014
-
-
Pierre-Yves David authored
This is shorter and kind of more readable for people who care about binary format.
-
Pierre-Yves David authored
-
Pierre-Yves David authored
This will be format zero specific.
-
Pierre-Yves David authored
This will be format zero specific.
-
Pierre-Yves David authored
Different formats will encode metadata in different ways. So we cannot keep the binary blob in the object anymore. We use a tuple to ensure it is immutable and hashable.
-
- Oct 10, 2014
-
-
Matt Mackall authored
-
Matt Mackall authored
-
- Oct 08, 2014
-
-
Jordi Gutiérrez Hermoso authored
When unshelving and facing a conflict, if we resolve all conflicts in favour of the committed changes instead of the shelved changes, then the ensuing implicit rebase is a no-op. That is, there is nothing to rebase. In this case, there are no extra intermediate shelve commits to strip either. Prior to this change, the commit being unshelved to would be marked for destruction in a rather catastrophic way. The relevant part of the test case failed as follows: $ hg unshelve -c unshelve of 'default' complete $ hg diff warning: ignoring unknown working parent 33f7f61e6c5e! diff --git a/a/a b/a/a new file mode 100644 --- /dev/null b/a/a @@ -0,0 1,3 @@ a c x $ hg status warning: ignoring unknown working parent 33f7f61e6c5e! M a/a ? a/a.orig ? foo/foo $ hg summary warning: ignoring unknown working parent 33f7f61e6c5e! parent: -1:000000000000 (no revision checked out) branch: default commit: 1 modified, 2 unknown (new branch head) update: 4 new changesets (update) With this change, this test case now passes.
-
Martin von Zweigbergk authored
If a merge is attempted when another merge is already ongoing, we give the message "outstanding uncommitted merges". Many other commands (such as backout, rebase, histedit) give the same message in singular form. Since the singular form also seems to make more sense, let's use that for 'hg merge' as well.
-
- Oct 10, 2014
-
-
durin42 authored
This also highlights a bug: right now we print "2 failed" but we only ran one test.
-
Kyle Lippincott authored
Diff generation didn't really fail, it recognized that an hg serve server has failed to start, and thus skipped the diff generation intentionally. The most common reason for a server to fail to start is that the port was already in use, so output HGPORT as well, to help finding it (since pgrep -f 'hg serve' is not sufficient, if the command line is something like 'hg -R main serve')
-
- Oct 09, 2014
-
-
durin42 authored
Without this change, --first causes currently-running tests to explode in violent and surprising ways when their temporary directory gets cleaned up. Now we just suppress failure messages from non-first failures when running in --first mode.
-
- Oct 06, 2014
-
-
Jordi Gutiérrez Hermoso authored
This just copies the same local sample hgrc, except it sets the default path to the repo it was cloned from. This is cut-and-paste from the local sample hgrc, but I think it's acceptable, since the two pieces of code are right next to each other and they're small. There is danger of them going out of synch, but it would complicate the code too much to get rid of this C&P. I also add ui as an import to hg.py, but with demandimport, this should not be a noticeable performance hit.
-
- Oct 08, 2014
-
-
Jordi Gutiérrez Hermoso authored
Some examples of the typical configurations that one might want to do in an .hg/hgrc file. This includes a default-push that happens to point to the same location as my-fork. I insist on the myfork terminology for a server-side clone. Bitbucket, Github, and others have widely popularised this meaning of "fork". This also includes a gentle nudge to use a repo-specific username, which is something that people might not instinctively realise is an option.
-
- Oct 07, 2014
-
-
Pierre-Yves David authored
All your friends are dead.
-
Pierre-Yves David authored
`ascending` is going to be removed.
-
Pierre-Yves David authored
The `ascending` and `descending` methods are useless.
-
Pierre-Yves David authored
-
Pierre-Yves David authored
-
Pierre-Yves David authored
As `addset` objects are proper smartset objects, we do not need to make any transformation of the result.
-
- Oct 03, 2014
-
-
Pierre-Yves David authored
A baseset starts without an explicit order. But as soon as a sort is requested, we simply register that the baseset has an order and use the ordered version of the list to behave accordingly. We will want to properly record the order at creation time in the future. This would unlock more optimisation and avoid some sorting.
-
Pierre-Yves David authored
We now have sufficient information to return the proper value there.
-
Pierre-Yves David authored
We'll explicitly track the order of the baseset to take advantage of the ascending and descending lists during iteration.
-
Pierre-Yves David authored
Baseset contains already-computed revisions. It is considered "cheap" to do operations on an already-computed set. So we add attributes to hold version of the list in ascending and descending order and use them for `fastasc` and `fastdesc`. Having distinct lists is important to provide correct iteration in all cases. Altering a python list will impact an iterator connected to it. eg: not preserving order at iterator creation time >>> l = [0, 1] >>> i = iter(l) >>> l.reverse() >>> list(i) [1, 0] eg: corrupting in progress iteration >>> l = [0, 1] >>> i = iter(l) >>> i.next() 0 >>> l.reverse() >>> i.next() 0
-
- Oct 06, 2014
-
-
Pierre-Yves David authored
The baseset is doing more and more smartset magic and using its list-like property less and less. So we store the list of revisions in an explicit attribute and stop inheriting. This requires reimplementing some basic methods.
-
- Oct 07, 2014
-
-
Pierre-Yves David authored
The `remove` method is not part of the smartset specification. We use a plain old list comprehension instead.
-
Pierre-Yves David authored
This is highly suboptimal but smartsets are not comparable to lists yet.
-
Pierre-Yves David authored
This makes it compatible with all smartset classes.
-
Pierre-Yves David authored
This makes it compatible with all smartset classes.
-
Pierre-Yves David authored
This makes it compatible with all smartset classes.
-
Pierre-Yves David authored
This makes it compatible with all smartset classes.
-