General¶
Topics¶
- obsmarker
- perf
- manifest sharding & lightweight clones
- largefiles
- “remote bookmarks”/remote tracking
- “labels”
- many heads
- rollback/caches/locking
- subrepo caches
- bid merge
- mq (and what it does that nothing else does)
- general deprecations
- windows performance
- in-memory merge
- evolve ui
- interrupted commands
- default ui and other great debates
- bundle2
- obliterate: when it absolutely, positively, has to be removed from history overnight
- kallithea
- bug triage
- advocacy
- updating the book
- website
- http2
- inbox/patchbot
- automated builds/packaging
- chg/hglib
- infrastructure
- machine readable output
- linkrevs (cache on the side)
- histedit
Bug triage¶
- When a (regular) contributor files a bug, move it immediately to CONFIRMED.
- When a contributor reads a bug, move it CONFIRMED or NEED_EXAMPLE.
- Make sure necessary data is there.
- Try to quickly reproduce.
Great debates¶
http://mercurial.selenic.com/wiki/mpm/moot
Enabling progress/color/pager by default: mpm agrees that we should turn progress on by default. There’s a stupid WSGI bug that blocks us doing that for now.
MQ deprecation plan¶
http://mercurial.selenic.com/wiki/MqDeprecationPlan
Need to get some workflows discussed on that page: map MQ-based workflows to Evolve-based workflows, in addition to just a command-to-command mapping.
Deprecatable review¶
Bunch of stuff I haven’t captured.
“Friendly HG” config flag¶
UI config option that we can propose on
Bid Merge¶
Doesn’t help in as many cases as we’d like, because we need to do some merging between manifestmerge and filemerge.
Patch to come to turn it on by default.
Draft Defaults¶
Talk about switching default to non-publishing. Concern about accidental non-publishing on servers.
Idea: add UI to hgweb to identify publishing settings and what that means
Idea: Add a banner to hgweb indicating whether a repository is publishing.
Manifest sharding, see manifest sharding.
Obliterate¶
Use cases: legal requirements to excise data (PII, licensed data, keys).
Tombstone data replaces revlog content, metadata in .hgobliterates -> Need to rewrite delta chains starting after obliterated revision
- V0 impl: command performing local rewrites, core doesn’t explode
- V1 impl: servers can eagerly propagate obliterates to clients
Patchbot improvements¶
Flowbot: looks at Matt’s backlog, number of patches in flight by an author, &c and notifies contributors (privately) to back off when their queue is too deep. Point them to the backlog graph and show contributors what they personally have in-flight.
check-commit-bot: notify contributors that
Advocacy¶
- Web site
- Front page to have news
- Simplify download flow on web site
- 1 installer per OS
- Mac installer (with optional config help)
- Facebook and Mozilla to ask about webdev love
- [smf] Create repo for new book and give us access
- Helping Git users migrate
- Add Sphinx for hg repo
- Encourage more rst magic in docstrings?
- How do we surface hg-git on website?
- Website needs common extension guide
- Answer “how to host Mercurial repo” question
- Integrate pull request commands into hgit and/or hg-git
- Look into Kuma
Transactions¶
Use cases:
- Stripping while pushing
- Push races seeing inconsistent data
Transaction Reader Flow¶
- read .hg/store/txn -> <id1> + list of files [offset]
- open all files (from the list) in txn.<id1>/ directory to obtain handles
- if all files opened -> done, else re-read txn and try open again
- vfs read FILE only to offset (when offset was available)
Transaction Writer Flow¶
- obtain write lock
- copy all files from txn.<id1> to txn.<id2> (with hardlinks)
- look for old locations of files (e.g. obstore) and copy into txn.<id2>
- write updated content to txn.<id2>, using atomictemp
- write .hg/store/txn.active -> <id2> + list of files [offset]
- invoke shell hooks to use txn.active (on transaction close)
- rename .hg/store/txn.active -> txn
- copy relevant files to old locations (if necessary)
- release write lock
Open Issues¶
- Format of txn file. Multiple append-only files?
- How do extensions declare txn-relevant files
Reader/Appender/Destroyer Locks¶
Three lock types:
- Reader Lock
readers (many) -> appenders (1) -> destroyers (1)
Lockless streaming clones (requires reader locks):
- Read the tip changelog rev
- stat all the filelogs for their sizes
- Read the tip changelog rev again
- if oldtip != newtip:
- read new changelog entries to figure out which files changed
- read files that have changed to figure out the offset of the linkrev read in step #1
- stream revlogs up to the known offsets
“subrepo cache” (a.k.a. out of working copy subrepo storage)¶
Extend hg shares by adding options (upon share creation) to share bookmarks and mq queues
When cloning subrepos, clone them into the parent repo’s .hg/subs folder, and then create a “full share” (i.e. share history, bookmarks and mq queues) on the expected working dir location
use a unique but human readable naming convention:
e.g. given: foo/bar/baz = SOURCE_URL use: .hg/subs/baz_HASHOF(foo/bar/baz = SOURCE_URL)
If a subrepo must be removed from the working dir, simply remove the share