Sat, 04 Oct 2014 16:28:28 -0400 log: do not hide the public phase in debug mode (BC)
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sat, 04 Oct 2014 16:28:28 -0400] rev 22765
log: do not hide the public phase in debug mode (BC) When 51fc43253a52 introduced phases to the `hg log --debug` output, it also disabled outputting public phase. At the same time, it always shows phases in the default template, `hg log --debug -T default`. Those two should produce the same output, but they don't. I think it makes a lot more sense to always show all phases. There's already loss of backwards compatibility in this case when using a newer hg on an old hg repo, since draft commits will show up in the output of `hg log --debug`. Finally, I just don't think that any sort of information should be hidden with --debug. This flag should be about showing as much information as possible.
Fri, 03 Oct 2014 22:03:31 -0400 templater: set the correct phase for parents
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 03 Oct 2014 22:03:31 -0400] rev 22764
templater: set the correct phase for parents Akin to f6371cc62d2a which did this for `hg log`, the following sets the correct phase for the {phase} keyword when the context is a parent of the current cset. This allows templates such as the following to be defined, parent = '{label("log.parent changeset.{phase}", "parent: {rev}:{node|formatnode}")}\n' which when called on a parent (e.g. with the `parents` template keyword), will produce the correct phase.
Fri, 03 Oct 2014 19:47:57 -0400 color: omit debug label output on empty strings
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 03 Oct 2014 19:47:57 -0400] rev 22763
color: omit debug label output on empty strings This is most noticeable when using custom templates. Before this patch, a template like {label("foo.bar", baz)} would emit [foo.bar|] whenever baz was empty. This cset simply omits all output when baz is empty.
Sat, 04 Oct 2014 17:22:22 +0900 tests: make hghave list features alphabetically
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Oct 2014 17:22:22 +0900] rev 22762
tests: make hghave list features alphabetically
Fri, 03 Oct 2014 12:54:56 -0500 revset: remove the now unused _descgeneratorset class
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:54:56 -0500] rev 22761
revset: remove the now unused _descgeneratorset class
Fri, 03 Oct 2014 12:53:41 -0500 revset: use _generatorset in _revancestors
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:53:41 -0500] rev 22760
revset: use _generatorset in _revancestors The _descgeneratorset class is going away.
Fri, 03 Oct 2014 12:52:49 -0500 revset: remove now unused class _ascgeneratorset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:52:49 -0500] rev 22759
revset: remove now unused class _ascgeneratorset
Fri, 03 Oct 2014 12:52:17 -0500 revset: use _generatorset directly in _revdescendant
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:52:17 -0500] rev 22758
revset: use _generatorset directly in _revdescendant _ascgeneratorset is going away.
Fri, 03 Oct 2014 12:46:34 -0500 generatorset: move membership testing on ordered gen to the main class
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:46:34 -0500] rev 22757
generatorset: move membership testing on ordered gen to the main class We are phasing out the ordered version of the class to simplify the code.
Fri, 03 Oct 2014 12:36:57 -0500 generatorset: make use of the new mechanism in the subclass
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:36:57 -0500] rev 22756
generatorset: make use of the new mechanism in the subclass Until we remove them, we use the new parameter of _generatorset to make sure the code is run.
Fri, 03 Oct 2014 12:36:08 -0500 generatorset: make it possible to use gen as fastasc or fastdesc
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 12:36:08 -0500] rev 22755
generatorset: make it possible to use gen as fastasc or fastdesc We gain a parameter to inform that the generator is ascending or descending. If the generator is ordered, it is also used for the `fastasc` or `fastdesc` version. The _ascgeneratorset and _descgeneratorset class will be removed soon.
Fri, 03 Oct 2014 03:19:00 -0500 baseset: rely on the abstractsmartset implementation for filter
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 03:19:00 -0500] rev 22754
baseset: rely on the abstractsmartset implementation for filter
Thu, 02 Oct 2014 19:48:14 -0500 _orderedsetmixin: drop this now unused class
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:48:14 -0500] rev 22753
_orderedsetmixin: drop this now unused class All my friends are dead.
Thu, 02 Oct 2014 19:47:33 -0500 spanset: drop _orderedsetmixin inheritance
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:47:33 -0500] rev 22752
spanset: drop _orderedsetmixin inheritance The min/max method are as well provided by abstractsmartset.
Fri, 03 Oct 2014 01:44:52 -0500 orderedlazyset: drop this now unused class
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:44:52 -0500] rev 22751
orderedlazyset: drop this now unused class All my friends are dead.
Thu, 02 Oct 2014 19:43:42 -0500 _descendant: use filteredset instead of orderedlazyset
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:43:42 -0500] rev 22750
_descendant: use filteredset instead of orderedlazyset The orderedlazyset class is going away. Filteredset gives the same service.
Fri, 03 Oct 2014 01:37:13 -0500 addset: use the base implementation for ascending and descending
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:37:13 -0500] rev 22749
addset: use the base implementation for ascending and descending
Fri, 03 Oct 2014 01:34:25 -0500 addset: use base implementation for __filter__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:34:25 -0500] rev 22748
addset: use base implementation for __filter__
Fri, 03 Oct 2014 01:33:32 -0500 addset: use base implementation for __add__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:33:32 -0500] rev 22747
addset: use base implementation for __add__
Fri, 03 Oct 2014 01:32:50 -0500 addset: use base implementation for __sub__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:32:50 -0500] rev 22746
addset: use base implementation for __sub__
Fri, 03 Oct 2014 01:31:46 -0500 addset: use base implementation for __and__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:31:46 -0500] rev 22745
addset: use base implementation for __and__
Thu, 02 Oct 2014 19:42:06 -0500 addset: promote to real smartset
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:42:06 -0500] rev 22744
addset: promote to real smartset Better revset performance are also achieved with less overlay. There is no good reason for addset to not be a smartset. We can replace the `_orderedsetmixin` inheritance since `abstractsmartset` has efficient min and max too.
Fri, 03 Oct 2014 00:12:22 -0500 addset: add a __nonzero__ method
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 00:12:22 -0500] rev 22743
addset: add a __nonzero__ method This is required to be a full smartset (not sure what was happening before that...)
Thu, 02 Oct 2014 23:38:30 -0500 addset: offer a fastasc and fastdesc methods
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 23:38:30 -0500] rev 22742
addset: offer a fastasc and fastdesc methods If the underlying object offers fast iterators, we use them to provide fast iterators too.
Thu, 02 Oct 2014 23:28:18 -0500 addset: split simple and ordered iteration
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 23:28:18 -0500] rev 22741
addset: split simple and ordered iteration We have two goals here. First, we would like to restore the former iteration order we had in 2.9. Second, we want this logic to be reusable for `fastasc` and `fastdesc` methods.
Fri, 03 Oct 2014 01:55:09 -0500 generatorset: promote to smartset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:55:09 -0500] rev 22740
generatorset: promote to smartset This is not going to be efficient but we need all basic set classes to be smartsets for the other classes to work.
Fri, 03 Oct 2014 01:56:57 -0500 generatorset: implement __nonzero__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:56:57 -0500] rev 22739
generatorset: implement __nonzero__ This is necessary to become a real smartset.
Fri, 03 Oct 2014 00:31:33 -0500 spanset: use base implementation for __add__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 00:31:33 -0500] rev 22738
spanset: use base implementation for __add__
Fri, 03 Oct 2014 00:31:18 -0500 spanset: use base implementation for __sub__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 00:31:18 -0500] rev 22737
spanset: use base implementation for __sub__
Fri, 03 Oct 2014 00:30:58 -0500 spanset: use base implementation for __and__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 00:30:58 -0500] rev 22736
spanset: use base implementation for __and__
Fri, 03 Oct 2014 00:39:57 -0500 spanset: use base implementation for filter
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 00:39:57 -0500] rev 22735
spanset: use base implementation for filter
Fri, 03 Oct 2014 01:27:00 -0500 filteredset: use base implementation for filter
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:27:00 -0500] rev 22734
filteredset: use base implementation for filter
Fri, 03 Oct 2014 01:25:35 -0500 filteredset: use base implementation for __add__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:25:35 -0500] rev 22733
filteredset: use base implementation for __add__
Fri, 03 Oct 2014 01:24:30 -0500 filteredset: use base implementation for __sub__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:24:30 -0500] rev 22732
filteredset: use base implementation for __sub__
Fri, 03 Oct 2014 01:23:12 -0500 filteredset: use base implementation for __and__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:23:12 -0500] rev 22731
filteredset: use base implementation for __and__
Thu, 02 Oct 2014 19:22:17 -0500 abstractsmartset: add default implementation for __sub__
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:22:17 -0500] rev 22730
abstractsmartset: add default implementation for __sub__
Thu, 02 Oct 2014 19:22:03 -0500 abstractsmartset: add default implementation for __add__
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:22:03 -0500] rev 22729
abstractsmartset: add default implementation for __add__
Thu, 02 Oct 2014 19:21:40 -0500 abstractsmartset: add default implementation for __and__
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:21:40 -0500] rev 22728
abstractsmartset: add default implementation for __and__
Wed, 01 Oct 2014 00:26:50 -0500 abstractsmartset: add default implementation for filter
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 00:26:50 -0500] rev 22727
abstractsmartset: add default implementation for filter
Fri, 03 Oct 2014 01:16:23 -0500 lazyset: rename the class to filteredset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 01:16:23 -0500] rev 22726
lazyset: rename the class to filteredset All smartsets try to be lazy. The purpose of this class is to apply a filter on another set. So we rename the class (and all its occurences) to `filteredset`.
Thu, 02 Oct 2014 19:14:03 -0500 lazyset: add order awareness to the class
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:14:03 -0500] rev 22725
lazyset: add order awareness to the class Just a bit of extra code makes the lazyset aware of order. This renders orderedlazyset useless. At some point, the `subset` will become responsible for this ordering logic. But we are not there yet because the various objects used as subsets are not good enough.
Thu, 02 Oct 2014 19:03:14 -0500 lazyset: remove min/max
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:03:14 -0500] rev 22724
lazyset: remove min/max This is now handled by abstractsmartset.
Thu, 02 Oct 2014 19:02:50 -0500 baseset: remove min/max methods
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 19:02:50 -0500] rev 22723
baseset: remove min/max methods This is now handled by the base class.
Thu, 02 Oct 2014 18:59:41 -0500 abstractsmartset: add a default implementation for min and max
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:59:41 -0500] rev 22722
abstractsmartset: add a default implementation for min and max This default implementation takes advantage of the fast iterator if available.
Thu, 02 Oct 2014 18:52:09 -0500 lazyset: drop now useless ascending/descending definition
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:52:09 -0500] rev 22721
lazyset: drop now useless ascending/descending definition
Tue, 30 Sep 2014 23:36:57 -0500 lazyset: inherit the fastasc and fastdesc method from subset
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 30 Sep 2014 23:36:57 -0500] rev 22720
lazyset: inherit the fastasc and fastdesc method from subset When the filtered subset has such methods, we can use them. It is implemented as properties to be able to quickly return None if no corresponding fastasc exists on the subset.
Thu, 02 Oct 2014 18:25:37 -0500 lazyset: split the iteration logic from the condition filtering logic
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:25:37 -0500] rev 22719
lazyset: split the iteration logic from the condition filtering logic So that the filter can be reused by `fastasc` or `fastdesc`.
Thu, 02 Oct 2014 17:53:55 -0500 spanset: do a single range check in __contains__
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 17:53:55 -0500] rev 22718
spanset: do a single range check in __contains__ Now that `start <= end` is always true, we can simplify this function.
Thu, 02 Oct 2014 18:02:17 -0500 spanset: enforce the order lazily to gain `fastasc` and `fastdesc` methods
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:02:17 -0500] rev 22717
spanset: enforce the order lazily to gain `fastasc` and `fastdesc` methods Instead of having the direction of iteration enforced through the ordering of `start` and `end` attributes of spanset, we encode the iteration direction in an explicit attribute and always store start < end. The logic for sort and reverse has to be updated. The __iter__ is now based on the newly introduced `fastasc` and `fastdesc` methods. This will allow other code simplifications in the future.
Tue, 30 Sep 2014 22:26:34 -0500 abstractsmartset: document the `fastasc` and `fastdesc` attributes/methods
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 30 Sep 2014 22:26:34 -0500] rev 22716
abstractsmartset: document the `fastasc` and `fastdesc` attributes/methods See the in-line documentation for details. (This is the beginning of a massive overhaul of revset).
Thu, 02 Oct 2014 18:35:56 -0500 spanset: remove ascending/descending implementation
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:35:56 -0500] rev 22715
spanset: remove ascending/descending implementation We can rely on their implementation in abstractsmartset.
Thu, 02 Oct 2014 18:35:00 -0500 baseset: remove ascending/descending redefinition
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:35:00 -0500] rev 22714
baseset: remove ascending/descending redefinition We can rely on the abstractsmartset implementation.
Thu, 02 Oct 2014 18:34:18 -0500 abstractsmartset: default implementation for `ascending` and `descending`
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 18:34:18 -0500] rev 22713
abstractsmartset: default implementation for `ascending` and `descending` These two methods are actually silly aliases for `sort()` and `sort(reverse=True)`. So we get that aliasing at the abstractsmartset level. We will slowly phase out all the custom implementations and eventually remove any mentions of it from the code.
Wed, 17 Sep 2014 04:55:55 -0700 revert: bring back usage of `subset & ps` in `parents`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Sep 2014 04:55:55 -0700] rev 22712
revert: bring back usage of `subset & ps` in `parents` Changeset 95af98616aa7 switched the order of the operand of the "&" computation to work around an issue from repo-wide spanset. The need for a workaround has been alleviated by the introduction of `fullreposet`. So we restore it to normal. The benchmark shows no significant changes as expected. We also revert the bogus test change introduced by 95af98616aa7. The order is actually important.
Sun, 24 Aug 2014 17:40:27 -0400 color: update docstring for debug option
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 24 Aug 2014 17:40:27 -0400] rev 22711
color: update docstring for debug option 964dd1c491ca updated the format for the --color=debug option. This updates the documentation to match this new format.
Wed, 20 Aug 2014 15:19:37 -0400 color: document the possibility to colourise tabs in diffs
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 20 Aug 2014 15:19:37 -0400] rev 22710
color: document the possibility to colourise tabs in diffs This is a no-op change that simply suggests that tabs can be colourised, but defaults to no colour effects for tabs. This complements cset c343557a8442. Like the similar effects for phases from f8e2aebbb24c, we set the default effects to '' instead of None, so that this is a true noop change. Otherwise, the diff.tab effect would override (i.e. neutralise) the effect of the surrounding label.
Fri, 12 Sep 2014 22:07:23 -0400 contrib/synthrepo: walk a repo's directory structure during analysis
Mike Edgar <adgar@google.com> [Fri, 12 Sep 2014 22:07:23 -0400] rev 22709
contrib/synthrepo: walk a repo's directory structure during analysis Augments the analyze command to additionally walk the repo's current directory structure (or of any directory tree), counting how many files appear in which paths. This data is saved in the repo model to be used by synthesize, for creating an initial commit with many files. This change is aimed at developing, testing and measuring scaling improvements when importing/converting a large repository to mercurial.
Fri, 12 Sep 2014 22:04:29 -0400 contrib/synthrepo: generate initial repo contents using directory shape model
Mike Edgar <adgar@google.com> [Fri, 12 Sep 2014 22:04:29 -0400] rev 22708
contrib/synthrepo: generate initial repo contents using directory shape model Augments the synthesize command to use an additional parameter to the analyzed repo model: the number of files in each directory at a given snapshot. Before synthesizing history, an arbitrary number of files will be generated in a distribution matching the analyzed directory structure. Intended for developing, testing and measuring scaling improvements when importing/converting a large repository to Mercurial.
Sun, 28 Sep 2014 17:15:28 +0200 filemerge: switch the default name for internal tools from internal:x to :x
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 17:15:28 +0200] rev 22707
filemerge: switch the default name for internal tools from internal:x to :x
Sun, 28 Sep 2014 17:15:25 +0200 filemerge: introduce :x as short version of internal:x merge tool name
Mads Kiilerich <madski@unity3d.com> [Sun, 28 Sep 2014 17:15:25 +0200] rev 22706
filemerge: introduce :x as short version of internal:x merge tool name "internal:" is so much typing - it is frequently specified on the command line and gives options that are longer than any other I have seen.
Thu, 02 Oct 2014 23:26:02 +0900 branches: include active, closed and current flags in template output
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Oct 2014 23:26:02 +0900] rev 22705
branches: include active, closed and current flags in template output
Thu, 02 Oct 2014 23:13:56 +0900 branches: merge white space to format string
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Oct 2014 23:13:56 +0900] rev 22704
branches: merge white space to format string Diffs of test output should be harmless. A white space character is moved into "log.changeset" color region.
Thu, 02 Oct 2014 22:59:56 +0900 branches: port to generic templater
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Oct 2014 22:59:56 +0900] rev 22703
branches: port to generic templater
Thu, 02 Oct 2014 22:15:39 +0900 branches: format rev as integer that is necessary for generic templater
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Oct 2014 22:15:39 +0900] rev 22702
branches: format rev as integer that is necessary for generic templater
Fri, 03 Oct 2014 22:20:02 +0900 formatter: add general way to switch hex/short functions
Yuya Nishihara <yuya@tcha.org> [Fri, 03 Oct 2014 22:20:02 +0900] rev 22701
formatter: add general way to switch hex/short functions This seems a bit awkward, but it can avoid duplicates in annotate, tags, branches and bookmarks. I guess fm.hexfunc can eventually be removed (or redesigned) when it gets template backend.
Fri, 03 Oct 2014 11:37:56 -0500 locarepo: remove the `pull` method (API)
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:37:56 -0500] rev 22700
locarepo: remove the `pull` method (API) All the logic of this function is in the `exchange.pull` function for some time. We just stop calling `localrepo.pull` in `command.pull` to have access to more information. Leaving `localrepo.pull` in place will let third-party extensions wrap it but it would never be called by `hg pull` making the wrapping useless. Therefore, the method is removed so that third-party code fail noisily and get properly upgraded.
Fri, 03 Oct 2014 11:21:52 -0500 transplant: use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:21:52 -0500] rev 22699
transplant: use exchange.pull localrepo.pull is going away. See 4d52e6eb98ea for details.
Fri, 03 Oct 2014 11:19:25 -0500 convert-hg: use localrepo.pull
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:19:25 -0500] rev 22698
convert-hg: use localrepo.pull localrepo.pull is going away. See 4d52e6eb98ea for details.
Fri, 03 Oct 2014 11:16:57 -0500 fetch: use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:16:57 -0500] rev 22697
fetch: use exchange.pull localrepo.pull is going away. See 4d52e6eb98ea for details.
Fri, 03 Oct 2014 11:15:33 -0500 localrepo: use exchange.pull when cloning
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:15:33 -0500] rev 22696
localrepo: use exchange.pull when cloning localrepo.pull is going away. See 4d52e6eb98ea for details.
Fri, 03 Oct 2014 11:12:55 -0500 subrepo: use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:12:55 -0500] rev 22695
subrepo: use exchange.pull localrepo.pull is going away, see 4d52e6eb98ea for details.
Fri, 03 Oct 2014 11:11:12 -0500 commands: directly use exchange.pull
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:11:12 -0500] rev 22694
commands: directly use exchange.pull localrepo.pull is going away. See explanations in 4d52e6eb98ea.
Fri, 03 Oct 2014 11:07:47 -0500 exchange: have `pull` return the pulloperation object
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 03 Oct 2014 11:07:47 -0500] rev 22693
exchange: have `pull` return the pulloperation object We mimic what was done for `push` for similar reason. We are about to drop `localrepo.pull` (for consistency with dropping `localrepo.push` and we better have an API as extensible as `push` is. Find explanations about localrepo.push removal in 4d52e6eb98ea.
Wed, 01 Oct 2014 15:14:36 -0500 revset: introduce an abstractsmartset class
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 15:14:36 -0500] rev 22692
revset: introduce an abstractsmartset class This class documents all methods required by a smartset. This makes it easier for people to respect the API and ensure we fail loudly when something does not. It will later also contain common default implementations for multiple methods, making it easier to have smartset classes with minimal work.
Wed, 01 Oct 2014 15:03:16 -0500 revset: add a `__nonzero__` to baseset
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 15:03:16 -0500] rev 22691
revset: add a `__nonzero__` to baseset We are about to add a base class for `baseset` with an abstract `__nonzero__` method. So we need this method to be explicitly defined to avoid issues. The built-in list object apparently does not have a `__nonzero__` and relies on `__len__` for this purpose?
Wed, 01 Oct 2014 15:50:54 -0500 revset: drop isinstance(baseset) in spanset.__sub__
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 15:50:54 -0500] rev 22690
revset: drop isinstance(baseset) in spanset.__sub__ As baseset now has a fast __contains___ operator, this `baseset.set()` dance is no longer needed. No regressions are visible in the benchmark.
Wed, 01 Oct 2014 15:50:40 -0500 revset: drop isinstance(baseset) in spanset.__and__
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 15:50:40 -0500] rev 22689
revset: drop isinstance(baseset) in spanset.__and__ As baseset now has a fast __contains___ operator, this `baseset.set()` dance is no longer needed. No regressions are visible in the benchmark.
Tue, 30 Sep 2014 23:09:59 -0500 revset: drop isinstance(baseset) from baseset.__and__
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 30 Sep 2014 23:09:59 -0500] rev 22688
revset: drop isinstance(baseset) from baseset.__and__ As baseset now has a fast __contains___ operator, this `baseset.set()` dance is no longer needed. No regressions are visible in the benchmark.
Wed, 01 Oct 2014 15:53:42 -0500 revset: use direct access to __contains__ in spanset.__sub__
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 15:53:42 -0500] rev 22687
revset: use direct access to __contains__ in spanset.__sub__ Using `x.__contains__(r)` instead of `r in x` does not matter for built-in type (set) but have a positive impact for all other classes. This will let us drop some usage of baseset.set() in future patches. This also probably improves some performance.
Tue, 30 Sep 2014 12:39:21 -0500 revset: use a single return statement in matcher function
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 30 Sep 2014 12:39:21 -0500] rev 22686
revset: use a single return statement in matcher function This makes it easy to insert post processing and debug code on the returned value.
Thu, 02 Oct 2014 16:57:51 -0500 obsolete: replace "nb" notation with "num" (for "number")
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 16:57:51 -0500] rev 22685
obsolete: replace "nb" notation with "num" (for "number") As requested by Matt Mackall.
Wed, 24 Sep 2014 17:18:57 -0700 shelve: remove unused status variables
Martin von Zweigbergk <martinvonz@gmail.com> [Wed, 24 Sep 2014 17:18:57 -0700] rev 22684
shelve: remove unused status variables
Thu, 02 Oct 2014 18:50:41 -0500 gpg: use an abort hint and don't mention --force
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 18:50:41 -0500] rev 22683
gpg: use an abort hint and don't mention --force
Thu, 02 Oct 2014 18:47:02 -0500 gpg: move test of force before status call
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 18:47:02 -0500] rev 22682
gpg: move test of force before status call
Wed, 24 Sep 2014 12:57:39 -0700 gpg: drop unnecessary slicing of status array
Martin von Zweigbergk <martinvonz@gmail.com> [Wed, 24 Sep 2014 12:57:39 -0700] rev 22681
gpg: drop unnecessary slicing of status array The call to repo.status() does not request status for clean files, so there is no reason to slice it out from the result. Leaving the tuple untouched will simplify a future change.
Thu, 02 Oct 2014 18:39:57 -0500 tag: use an abort hint
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 18:39:57 -0500] rev 22680
tag: use an abort hint
Thu, 02 Oct 2014 18:38:10 -0500 tag: only check the status of .hgtags
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 18:38:10 -0500] rev 22679
tag: only check the status of .hgtags
Thu, 02 Oct 2014 18:37:12 -0500 tag: properly abort if an unknown or ignored .hgtags is present
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 18:37:12 -0500] rev 22678
tag: properly abort if an unknown or ignored .hgtags is present This was a regression introduced by 4faaa0535ea7 in 2008.
Wed, 01 Oct 2014 12:50:18 -0700 summary: remove unused code for listing ignored files
Martin von Zweigbergk <martinvonz@gmail.com> [Wed, 01 Oct 2014 12:50:18 -0700] rev 22677
summary: remove unused code for listing ignored files The call to repo.status() does not request ignored files to be listed, so remove the code for printing them.
Wed, 01 Oct 2014 14:48:42 -0700 fetch: use cmdutil.bailifchanged()
Martin von Zweigbergk <martinvonz@gmail.com> [Wed, 01 Oct 2014 14:48:42 -0700] rev 22676
fetch: use cmdutil.bailifchanged() Use the existing method cmdutil.bailifchanged() instead of implementing it again in fetch.py. An effect of this is that the error messages in case of uncommited changes will be different.
Thu, 02 Oct 2014 18:00:05 -0500 ui: fix comment about non-interactive prompts
Matt Mackall <mpm@selenic.com> [Thu, 02 Oct 2014 18:00:05 -0500] rev 22675
ui: fix comment about non-interactive prompts This fixes my earlier in-flight addition to Mads' change.
Thu, 02 Oct 2014 23:20:59 +0900 formatter: convert booleans to json
Yuya Nishihara <yuya@tcha.org> [Thu, 02 Oct 2014 23:20:59 +0900] rev 22674
formatter: convert booleans to json It will be used in branches output.
Wed, 01 Oct 2014 03:42:00 +0200 merge: mute the status message when bid merge kicks in
Mads Kiilerich <madski@unity3d.com> [Wed, 01 Oct 2014 03:42:00 +0200] rev 22673
merge: mute the status message when bid merge kicks in Bid merge is now the default and it is not necessary to tell the user that an experimental feature kicked in. (It could however still be relevant to get a notice that it is one of the rare criss-cross merge situations so the user is warned that the situation is more tricky than usual.)
Wed, 01 Oct 2014 03:41:11 +0200 merge: use bid merge by default (BC)
Mads Kiilerich <madski@unity3d.com> [Wed, 01 Oct 2014 03:41:11 +0200] rev 22672
merge: use bid merge by default (BC) In most cases merges will work exactly as before. The only difference is in criss-cross merge situations where there is multiple ancestors. Instead of picking an more or less arbitrary ancestor, it will consider both ancestors and pick the best bids. Bid merge can be disabled with --config merge.preferancestor='!'.
Wed, 01 Oct 2014 03:40:51 +0200 changectx: skip all invalid merge.preferancestor values
Mads Kiilerich <madski@unity3d.com> [Wed, 01 Oct 2014 03:40:51 +0200] rev 22671
changectx: skip all invalid merge.preferancestor values A better fix for 17011b36aac7 that will ignore other kinds of "invalid" revisions.
Wed, 30 Apr 2014 16:56:23 -0700 revset: rely on built in iterator when possible in _generatorset.__iter__
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 30 Apr 2014 16:56:23 -0700] rev 22670
revset: rely on built in iterator when possible in _generatorset.__iter__ Doing manual iteration is expensible. We rely on built in list iteration whenever possible. The other case has to become a closure we cannot have a both yield and return in the same function.
Thu, 18 Sep 2014 15:52:45 -0700 revset: prefetch an attribute in _generatorset.__iter__
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Sep 2014 15:52:45 -0700] rev 22669
revset: prefetch an attribute in _generatorset.__iter__ Python's attribute lookup are expensible, lets do less of them. This gives us a 7% speedup on this revset iteration (from 0.063403 to 0.059032)
Tue, 09 Sep 2014 22:14:13 +0900 templater: add count template filter, plus tests
Anton Shestakov <engored@ya.ru> [Tue, 09 Sep 2014 22:14:13 +0900] rev 22668
templater: add count template filter, plus tests Previously there was no way of telling how much children or bookmarks or tags a certain changeset has in a template. It was possible to tell if a changeset has either 0 or not 0 bookmarks, but not to tell if it has 1 or 2 of them, for example. This filter, simply named count, makes it possible to count the number of items in a list or the length of a string (or, anything that python's len can count). E.g.: {children|count}, {bookmarks|count}, {file_adds|count}. Testing the filter on node hash and shortened node hash is chosen because they both have defined length. As for lists of strings - children, tags and file_adds are used, because they provide some variety and also prove that what's counted is the number of string items in the list, and not the list stringified (they are lists of non-empty, multi-character strings). Additionally, revset template function is used for testing the filter, since the combination is very flexible and will possibly be used together a lot. (The previous version of this patch had an incorrect email subject and was apparently lost - patchwork says the patch has been accepted, but it's not so. The changes between that and this patch are minimal: now the filter does not disturb the alphabetical order of function definitions and dict keys.)
Sun, 28 Sep 2014 17:35:33 -0700 push: update bookmarks (on server) within a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 17:35:33 -0700] rev 22667
push: update bookmarks (on server) within a transaction A nice side effect is that bookmarks sent through bundle2 are updated within the same transaction as all other changes.
Sun, 28 Sep 2014 15:21:38 -0700 pull: perform bookmark updates in the transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 15:21:38 -0700] rev 22666
pull: perform bookmark updates in the transaction
Sun, 28 Sep 2014 00:41:55 -0700 bookmark: add a `bmstore.recordupdate` to plug bookmarks into the transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 00:41:55 -0700] rev 22665
bookmark: add a `bmstore.recordupdate` to plug bookmarks into the transaction Instead of manually writing bookmarks when they are updated, we can just record this update to the transaction and rely on it to update the on-disk file.
Sat, 27 Sep 2014 03:10:33 -0700 bookmarks: split bookmark serialization and file handling
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Sep 2014 03:10:33 -0700] rev 22664
bookmarks: split bookmark serialization and file handling If we want to handle bookmarks in a transaction we need to decouple the file handling and the actual production of the content. This is similar to how we handle phases in transaction.
Sun, 28 Sep 2014 00:36:42 -0700 transaction: allow generating file outside of store
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 00:36:42 -0700] rev 22663
transaction: allow generating file outside of store We allow a vfs argument to `addfilegenerator`. This allows generating files outside of the store directory like bookmarks. However, this is not really working since we do not have the infrastructure to backup and restore files outside of store. By chance, the bookmark file is already backed up by another mechanism so we can restrict this new feature to bookmarks (which is our only interest here) and proceed.
Wed, 01 Oct 2014 21:40:44 -0500 transaction: work around and document issue with file backup
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 21:40:44 -0500] rev 22662
transaction: work around and document issue with file backup The backup restoration is actually hard-coded for the main file. And this hard-coded list is the only one used when repairing an interrupted transaction from another process. Solving this problem is out of the scope of this series so we document it and work around its implications.
Thu, 02 Oct 2014 00:15:15 -0500 bundle2: remove an explicit packing
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 00:15:15 -0500] rev 22661
bundle2: remove an explicit packing The final writing of the empty part was done explicitly. We now using proper pack call using symbolic constant. This open simple change in the bundle2 format.
Wed, 01 Oct 2014 23:55:22 -0500 bundle2: split test in two
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 01 Oct 2014 23:55:22 -0500] rev 22660
bundle2: split test in two We split the test between the one dedicated to the binary format and the one dedicated to checking the exchange of data using pull and push.
Sun, 28 Sep 2014 14:07:56 -0700 pull: merge bookmark updates and imports
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 14:07:56 -0700] rev 22659
pull: merge bookmark updates and imports We do all the things in one go now, updating existing bookmark, adding new ones, and overwriting the ones explicitly specified for --bookmark. This impacts the tests by removing some duplicated or unnecessary output.
Sun, 28 Sep 2014 13:43:31 -0700 pull: gather explicit bookmark pulls with bookmark updates
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 13:43:31 -0700] rev 22658
pull: gather explicit bookmark pulls with bookmark updates There is no reason to make them at different times. So we gather them. This is the first step toward merging them.
Sun, 28 Sep 2014 12:47:25 -0700 subrepo: stop pulling bookmark manually
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 12:47:25 -0700] rev 22657
subrepo: stop pulling bookmark manually Bookmark pulling is now done with all the other pull steps in the `exchange.pull` function.
Sat, 27 Sep 2014 01:59:56 -0700 pull: retrieve bookmarks through bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Sep 2014 01:59:56 -0700] rev 22656
pull: retrieve bookmarks through bundle2 We can retrieve any pushkey namespace through bundle2. So we also ask for bookmark data and use them to update the local repo.
Sat, 27 Sep 2014 01:37:56 -0700 pull: retrieve bookmarks before obsmarkers
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Sep 2014 01:37:56 -0700] rev 22655
pull: retrieve bookmarks before obsmarkers Retrieving bookmarks before obsmarkers will avoid turning some changesets hidden right before making them visible again if a bookmark keeps them visible.
Sat, 27 Sep 2014 01:31:15 -0700 pull: move bookmark pulling into its own function
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Sep 2014 01:31:15 -0700] rev 22654
pull: move bookmark pulling into its own function This requires adding an attribute on the pulloperation object. The bookmark pulling is protected behind a "todostep" as other steps of pull.
Sat, 27 Sep 2014 01:34:02 -0700 pull: perform the todostep inside functions handling old way of pulling
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Sep 2014 01:34:02 -0700] rev 22653
pull: perform the todostep inside functions handling old way of pulling This matches what is done during push.
Fri, 26 Sep 2014 23:04:35 -0700 bookmark: remove now unused `pushtoremote` function
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 23:04:35 -0700] rev 22652
bookmark: remove now unused `pushtoremote` function Everything is unified in the push discovery now.
Sat, 27 Sep 2014 20:51:53 -0700 push: gather all bookmark decisions together
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Sep 2014 20:51:53 -0700] rev 22651
push: gather all bookmark decisions together The discovery phases for bookmarks now use the list of explicitly pushed bookmarks to do addition, removal and overwriting. Tests are impacted because this reduces the amount of listkeys calls issued, removes some duplicated messages and improves the accuracy of some messages.
Fri, 26 Sep 2014 18:33:11 -0700 push: prepare the issue of multiple kinds of messages
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 18:33:11 -0700] rev 22650
push: prepare the issue of multiple kinds of messages To gather all the bookmark pushing actions together, we need code performing those actions to be ready for them. We need to be able to produce different messages for different actions.
Thu, 02 Oct 2014 13:19:49 -0500 push: set bkresult when pushing bookmarks through bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 02 Oct 2014 13:19:49 -0500] rev 22649
push: set bkresult when pushing bookmarks through bundle2
Fri, 26 Sep 2014 13:56:20 -0700 clone: remove duplicated bookmark pulling
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 13:56:20 -0700] rev 22648
clone: remove duplicated bookmark pulling Now that all clone methods (copy, pull and push) also transport bookmarks, we can safely drop the manual pulling that was performed during clone.
Fri, 26 Sep 2014 15:15:49 -0700 clone: explicitly push bookmarks when cloning from local to remote
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 15:15:49 -0700] rev 22647
clone: explicitly push bookmarks when cloning from local to remote We need to explicitly push all local bookmarks when doing the clone from a local repo to a remote one through ssh. This will let us remove the manual export of bookmarks in clone and rely on the official exchange in push and pull instead.
Fri, 26 Sep 2014 13:55:53 -0700 clone: copy `.hg/bookmarks` during copy clone
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 26 Sep 2014 13:55:53 -0700] rev 22646
clone: copy `.hg/bookmarks` during copy clone Now that the standard pull function includes bookmarks, we need to ensure that a copy clone also copies the bookmarks. This will let us drop the manual bookmark pulling done independently during a clone.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip