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.
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
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 12:51:06 +0200] rev 22435
buildrpm: introduce --prepare for preparing without actually building rpms
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.
Matt Mackall <mpm@selenic.com> [Tue, 16 Sep 2014 11:08:29 -0500] rev 22433
locate: add pointer to files command in help
Matt Mackall <mpm@selenic.com> [Tue, 16 Sep 2014 11:08:14 -0500] rev 22432
tests: fix breakage from locate deprecation
Matt Mackall <mpm@selenic.com> [Sun, 16 Mar 2014 13:29:08 -0500] rev 22431
locate: deprecate in favor of files
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.
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.
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 18:29:29 -0500] rev 22428
formatter: add json formatter
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.
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.
Matt Mackall <mpm@selenic.com> [Mon, 15 Sep 2014 13:12:20 -0500] rev 22425
encoding: handle empty string in toutf8
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 19:06:11 -0500] rev 22424
formatter: make debug style match Python syntax
Matt Mackall <mpm@selenic.com> [Fri, 12 Sep 2014 18:32:46 -0500] rev 22423
files: add new command unifying locate and manifest functionality
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.
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
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
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
Matt Mackall <mpm@selenic.com> [Thu, 11 Sep 2014 12:21:15 -0500] rev 22418
config: normalize style between user/global example configs
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.
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.
Augie Fackler <raf@durin42.com> [Thu, 11 Sep 2014 10:14:34 -0400] rev 22415
manifest: mark addlistdelta and checkforbidden as module-private
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.
Augie Fackler <raf@durin42.com> [Wed, 10 Sep 2014 10:51:46 -0400] rev 22413
convert: enable deterministic conversion progress bar 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.
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.
Augie Fackler <raf@durin42.com> [Wed, 10 Sep 2014 11:01:47 -0400] rev 22410
test-convert-svn-move.t: remove stray '
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.
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.
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.
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.
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).
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.
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.
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.
Henrik Stuart <hg@hstuart.dk> [Mon, 08 Sep 2014 20:20:17 +0200] rev 22401
parsers: ensure correct return type for inline_scan
The returned data type for inline_scan should be Py_ssize_t rather than long.
Based on warning from Microsoft Visual C++ 2008.
Henrik Stuart <hg@hstuart.dk> [Thu, 11 Sep 2014 12:05:23 -0500] rev 22400
parsers: fix typing issue when constructing Python integer object
The passed variable is a Py_ssize_t, not a long, and consequently should use
PyInt_FromSsize_t rather than PyInt-FromLong. Fixed based on warning from
Microsoft Visual C++ 2008.
Henrik Stuart <hg@hstuart.dk> [Mon, 08 Sep 2014 20:06:52 +0200] rev 22399
parsers: use bitmask type consistently in find_gca_candidates
Normalized type usage in find_gca_candidates triggered by warning from
Microsoft Visual C++ 2008.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:10:29 +0200] rev 22398
revert: drop `lexist` check in the backup logic
We are no longer trying to backup files that do not exist on disk. This check
can be safely dropped.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:09:53 +0200] rev 22397
revert: distinguish between deleted file and locally modified
Locally modified needs a backup while a deleted file cannot be backed
up because there is no file to backup.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:00:20 +0200] rev 22396
revert: detect unknown files in the same path as files marked as removed
Such unknown files may need to be backed up. Having them identified beforehand
will help simplify the backup logic.
We now use different sets with different backup strategies.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 01:52:08 +0200] rev 22395
revert: cache working context in a variable
During the silicon age, humans on planet Earth discovered the use of
variables. This marvelous invention let them improve both code
readability and performance.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 10 Sep 2014 14:42:52 +0100] rev 22394
obsolete: properly drop 'date' from metadata
Mistakes were made while resolving rebase conflicts in
4bc96685a40c. This led to
'date' being preserved in metadata when reading markers from a binary stream.
As a result, some known markers were seen as "new" when pulling. I noticed it
because a no-op pulls from main added about 600 duplicated markers to my
obsstore (for each pull).
I do not believe we need to perform any specific action to actively
de-duplicates existing obsstore. After this fix, duplicated markers will no be
propagated and the few affected repositories can probably deal with duplication (or
people can repull the obsstore from a clone).
As a side effect, we decode metadata only once, reducing the impact of the hack
in fm0 to store extra important data (parents and date).
Anton Shestakov <engored@ya.ru> [Mon, 08 Sep 2014 20:12:58 +0900] rev 22393
templater: implement __len__ for _hybrid
Objects of class _hybrid are returned by such template keywords as children,
bookmarks, tags and others, and also by revset() template function. They are
representing "list of strings" (as hg help template says) for use in templates.
So it would be logical to implement a handy way to count the number of strings
in such list, and that's what __len__ method does.
David Soria Parra <davidsp@fb.com> [Fri, 05 Sep 2014 19:54:26 +0200] rev 22392
tests: remove unnecessary apostrophe
anuraggoel <anurag.dsps@gmail.com> [Mon, 08 Sep 2014 16:41:00 +0200] rev 22391
run-tests: added '--json' functionality to store test result in json file
This patch added a new functionality '--json'. While testing, if '--json'
is enabled then test result data gets stored in newly created "report.json"
file in the following format.
testreport ={
"test-success.t": {
"result": "success",
"time": "2.041"
}
"test-failure.t": {
"result": "failure",
"time": "4.430"
}
"test-skip.t": {
"result": "skip"
"time": "3.754"
}
}
Otherwise, if '--json' is enabled but json module was not installed then it
will raise an error "json module not installed".
This "report.json" file will further accessed by html/javascript file for
graph usage.
Sune Foldager <cryo@cyanite.org> [Tue, 02 Sep 2014 12:11:36 +0200] rev 22390
changegroup: rename bundle-related functions and classes
Functions like getbundle and classes like unbundle10 really manipulate
changegroups and not bundles. A HG10 bundle is the same as a changegroup
plus a small header, but this is no longer the case for a HG2X bundle,
so it's better to separate the names a bit.
Mads Kiilerich <madski@unity3d.com> [Tue, 19 Aug 2014 01:13:10 +0200] rev 22389
comments: describe ancestor consistently - avoid 'least common ancestor'
"best" is as defined by mercurial.ancestor.ancestors: furthest from a root (as
measured by longest path).
Mads Kiilerich <madski@unity3d.com> [Tue, 19 Aug 2014 01:12:56 +0200] rev 22388
rebase: improve description of --base
No Mercurial DAG has ever (!) been drawn in a way where 'up to' would apply.
Instead, describe deliberatey vague and informal instead of seemingly precise
but not describing the essentials:
rebase the tree around the specified changeset without ancestors of dest
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 19:43:32 +0200] rev 22387
dagutils: fix docstrings for singleton internalize/externalize
Martin von Zweigbergk <martinvonz@gmail.com> [Sun, 31 Aug 2014 07:45:50 -0700] rev 22386
cmdutil: avoid the confusing name 'patch' for a matcher
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Sep 2014 14:10:08 -0700] rev 22385
fedora: remove sample.hgrc from shipped files
sample.hgrc was long obsolete and was removed in
63ed188e3fc7.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 24 Aug 2014 19:45:46 -0400] rev 22384
config: propose some sample global config file
An example of what could be suggested to the user as a global config
file. Trying to be conservative here, and only suggesting the safest
possible extensions. In addition to the user-level extensions, the
blackbox extension is something a sysadmin might reasonable want to
enable for every repo on the system.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 13 Aug 2014 17:05:48 -0400] rev 22383
config: give more fine-tuned sample hgrcs to this command
The hgrc for user config is typically different from the hgrc at the
system-wide or repository level. This patch provides different sample
hgrcs for each level. Sometimes when copying repos around, the copy or
the original don't have a default path yet, so at least for `hg config
-l`, this ought to provide a more reasonable default and suggestions
of what typically goes there.
The actual sample configs go in the config.py file, to minimise
clutter. In order to avoid an unnecessary import, the corresponding
import for this dictionary is at the file level.
David Soria Parra <davidsp@fb.com> [Mon, 01 Sep 2014 11:48:55 +0200] rev 22382
rebase: add a deprecated -i/--interactive flag
A common mistake can be to type 'hg rebase -i' to discover interactive history
editing. We add a -i/--interactive flag as discussed in the sprint and deprecate
it right away, but hint people using it to use histedit instead.
Mads Kiilerich <madski@unity3d.com> [Tue, 19 Aug 2014 01:13:10 +0200] rev 22381
revlog: introduce isancestor method for efficiently determining node lineage
Hide the not so obvious use of commonancestorsheads.
Augie Fackler <raf@durin42.com> [Tue, 09 Sep 2014 17:16:24 -0400] rev 22380
clone: provide sample username = config entry in .hg/hgrc (
issue4359)
Some users clone from a server before ever running 'hg config --edit',
so they don't see our helpful template for things like enabling the
username. Attempt to give them some helpful guidance.
Augie Fackler <raf@durin42.com> [Tue, 09 Sep 2014 16:51:21 -0400] rev 22379
test-acl: alter sed construct to avoid changes in .hg/hgrc formatting
A future patch is going to add some extra commented-out boilerplate to
the top of .hg/hgrc during clone. In order to make this test not
require regular updates, switch to searching for [hooks] or [acl] and
print file from the first match to that pattern.
Augie Fackler <raf@durin42.com> [Tue, 09 Sep 2014 13:47:50 -0400] rev 22378
merge with stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 10 Sep 2014 00:41:44 +0900] rev 22377
dispatch: check shell alias again after loading extensions (
issue4355)
Before this patch, the shell alias causes failure when it takes its
specific (= unknown for "hg") options in the command line, because
"_parse()" can't accept them.
This is the regression introduced by
03d345da0579.
It fixed the issue that ambiguity between shell aliases and commands
defined by extensions was ignored. But it also caused that ambiguous
shell alias is handled in "_parse()" even if it takes specific options
in the command line.
To avoid such failure, this patch checks shell alias again after
loading extensions.
All aliases and commands (including ones defined by extensions) are
completely defined before the 2nd (= newly added in this patch)
"_checkshellalias()" invocation, and "cmdutil.findcmd(strict=False)"
can detect ambiguity between them correctly.
For efficiency, this patch does:
- omit the 2nd "_checkshellalias()" invocation if "[ui] strict= True"
it causes "cmdutil.findcmd(strict=True)", of which result should
be equal to one of the 1st invocation before adding aliases
- avoid removing the 1st "_checkshellalias()" invocation
it causes "cmdutil.findcmd(strict=True)" invocation preventing
shell alias execution from loading extensions uselessly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 10 Sep 2014 00:41:44 +0900] rev 22376
dispatch: make "_checkshellalias" reusable regardless of adding aliases
To reduce changes in the subsequent patch fixing
issue4355, this patch
makes "_checkshellalias" reusable regardless of adding aliases.
In this patch, alias definitions are added and restored, only when
"precheck=True".
J. Lewis Muir <jlmuir@anl.gov> [Tue, 02 Sep 2014 11:28:44 +0200] rev 22375
build: don't clean __version__.py on 'make clean' in release tarballs
When running 'make clean' in an extracted release tarball, file
mercurial/__version__.py is removed, causing a subsequent install to
indicate 'version unknown'.
This problem was reported in the past [1] and a patch proposed in that mail,
but was never properly sent nor applied.
[1] http://selenic.com/pipermail/mercurial/2010-December/036249.html
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 01:51:02 +0200] rev 22374
revert: drop now useless conditional in the backup check
Now that we removed the (hopeless) attempt to backup file we knew to be
missing in the target changeset, we can stop checking if the file exists in
the target changeset.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 01:49:28 +0200] rev 22373
revert: no backup for `dsadded` set
There is only one case where a backup is required in the `dsadded` set, and the
current backup mechanism fails to handle it. So we stop trying to do backups at
all for now. This will help us to simplify the backup code and finally fix
this backup issue.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 16:06:09 +0200] rev 22372
revert: add more padding in the dispatch list
We are going to add more sets and some of them will have longer names. We add
padding in a standalone patch for readbility purposes.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 01:48:58 +0200] rev 22371
revert: add documentation in the dispatch table
More sets are coming so documenting the existing ones will help.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 02:47:59 +0200] rev 22370
revert: add a way for external extensions to prefetch file data
This allow extensions that mess with the storage layer (remotefilelog,
largefile) to prefetch any data that will be accessed during the revert
operation.
We are currently fetching more data than theoretically required because the
backup code is a bit stupid. Future patches will improve that.
Kevin Bullock <kbullock@ringworld.org> [Sun, 07 Sep 2014 11:46:11 -0500] rev 22369
merge with stable
Siddharth Agarwal <sid0@fb.com> [Wed, 03 Sep 2014 20:42:51 +0200] rev 22368
histedit: abort gracefully on --continue/--abort with no state
Previously we'd print an ugly message saying that the histedit-state file
doesn't exist in the repo.
Augie Fackler <raf@durin42.com> [Thu, 04 Sep 2014 09:59:23 -0400] rev 22367
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 02 Sep 2014 03:41:01 +0200] rev 22366
Added signature for changeset
5dc91146f353
Matt Mackall <mpm@selenic.com> [Tue, 02 Sep 2014 03:40:55 +0200] rev 22365
Added tag 3.1.1 for changeset
5dc91146f353
Durham Goode <durham@fb.com> [Tue, 26 Aug 2014 04:58:41 -0700] rev 22364
bookmarks: allow pushkey if new equals current
Previously a bookmark pushkey would be rejected if the specified 'old' value
didn't match the servers 'current' value. This change allows this situation, as
long as the 'current' server value equals the 'new' pushkey value already.
We are trying to write a hook that forces a server bookmark to move forward,
using a changegroup hook. If the user also pushed the bookmark, they would get
an error, since they computed their pushkey (old,new) pair before the server
moved the bookmark. Long term, bundle2 will let us do this more smartly, but
this change seems reasonable for now.
Mads Kiilerich <madski@unity3d.com> [Fri, 29 Aug 2014 12:17:53 +0200] rev 22363
tests: improve test coverage of branch command and existing branches
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 28 Aug 2014 17:23:05 +0200] rev 22362
localrepo: make it possible to pass multiple path elements to join and wjoin
This makes join and wjoin behave in the same way as os.path.join. That is, it
makes it possible to pass more than one path element to them.
Note that the first path element is still required, as it was before this patch,
and as is the case for os.path.join.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 31 Aug 2014 12:22:44 +0200] rev 22361
run-tests: make --interactive work with --view
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 11:11:42 +0200] rev 22360
convert: don't use multi-argument set.update
Mumble mumble 2.4 mumble.
Mike Edgar <adgar@google.com> [Sat, 30 Aug 2014 12:22:20 +0200] rev 22359
error: use docstrings, not bare strings, for error classes
Mads Kiilerich <madski@unity3d.com> [Sun, 31 Aug 2014 10:24:25 +0200] rev 22358
osx: create dmg with installer instead of zip
OS X would offer to expand the zip so the (multi file) installer inside it
could be run ... but that would leave the expanded zip folder around.
Instead, use a .dmg file that automatically will be mounted - that seems more
common on OS X.
Still, there is two levels of levels of clicking before actually launching the
installer. Having a single file installer would be better ... but seems to be
hard. A more feasible improvement would be some fancy layout inside the .dmg .
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 12:33:12 +0200] rev 22357
branchmap: pre-filter topological heads before ancestors based filtering
We know that topological heads will not be ancestors of anything, so we filter
them out to potentially reduce the range of the ancestors computation.
On a strongly headed repo this gives humble speedup:
from 0.1984 to 0.1629
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 12:20:50 +0200] rev 22356
branchmap: issue a single call to `ancestors` for all heads
There is no reason to make multiple calls. This provides a massive speedup for
repo with a lot of heads.
On a strongly headed repo this gives humble speedup in simple case:
from 8.1097 to 5.1051
And massive speedup in other case:
from 7.8787 to 0.1984
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Aug 2014 11:39:15 +0200] rev 22355
test-ancestor: add a test for `ancestor` with ancestry within the initset
I was wondering if revisions in the initial set that are still ancestors of other
elements in the initial set were yielded by `changelog.ancestors`. I now have my
answer (they do) and Mercurial has a new test.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 26 Aug 2014 12:47:41 +0200] rev 22354
bundle2: pull obsmarkers relevant to the pulled set through bundle2
We use the new `obsheads` argument to retrieve them in a bundle2 part at the
same time as the changegroup.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 29 Aug 2014 12:36:17 +0200] rev 22353
getbundle: add `obsmarkers` argument to getbundle
This argument triggers the retrieval of all markers relevant to the set of
changesets defined by the nodes in `heads`.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 29 Aug 2014 12:28:58 +0200] rev 22352
pull: use the "cg" argument when pulling a bundle2
We use the `cg` argument to disable the generation of a changegroup part. This
is useful to pull information when changesets are already in sync (phases,
obsmarkers).
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 29 Aug 2014 12:51:00 +0200] rev 22351
wireprotocol: fix 'boolean' handling
The encoding and decoding code were swapped. This is now fixed.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 01:15:09 -0700] rev 22350
push: only push obsmarkers relevant to the "pushed subset"
We should only exchange obsolete markers related to the changesets
that are being exchanged. For example, if `A'` is a successor of `A`,
we do not want to push the marker if we are not exchanging
`A'`. Otherwise `A` would disappear without a successor, leading to confusion
for both users and the evolution mechanism.
Therefore we now exchange only the markers relevant to the subset of nodes
involved in the push (the nodes themselves may be already common but were
selected by --rev (or the lack of --rev)).
Note that all selected markers are still exchanged on each push. We do
not have a discovery protocol for markers in core yet. Such discovery
would save us the exchange of markers known on both side.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 19:47:35 -0700] rev 22349
test-obsolete: sort the output of debugobsolete
The set of relevant markers is currently unordered. Therefore the
markers will be added in arbitrary order. We sort the list of markers
beforehand to ensure stable output for testing.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 20 Aug 2014 19:42:33 -0700] rev 22348
test-obsolete: change a marker so it is relevant to the exchanged set
We are going to only exchange markers relevant to the exchanged
changesets. So we need to change this marker to use a known changeset as
a successor instead of a precursor.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 19:44:27 +0200] rev 22347
push: use bundle2 to push obsmarkers when possible
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 19:32:51 +0200] rev 22346
exchange: add a `buildobsmarkerpart` function
We'll have to build an obsmarker part for both push and pull. So we build a
function to factor out the common part.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 26 Aug 2014 11:36:23 +0200] rev 22345
obsolete: add a `commonversion` function
This function returns the highest common version between the locally known
formats and a list of remotely known formats. This is going to be useful to
know what format should be used for exchange.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 26 Aug 2014 11:48:26 +0200] rev 22344
bundle2: add a `obsmarkersversion` function to extract supported version
Right next to the function that encodes the supported versions in
capabilities we add a function that decodes the versions out of capabilities.
This is going to be useful to know what formats can be used for exchange.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 21 Aug 2014 18:18:38 -0700] rev 22343
bundle2: advertise the obsmarker part in bundle2 capabilities
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 25 Aug 2014 19:21:47 +0200] rev 22342
bundle2: introduce a `getrepocaps` to retrieve the bundle2 caps of a repo
This function lets extensions change the bundle2 capabilities of a repository.