Note:
This page is primarily intended for developers of Mercurial.
2.9 Sprint Notes
Notes from the 2.9 development sprint. For planning, see 2.9sprint.
Contents
1. GSoC
- Flow control was a problem.
- "Patch 1 has to happen as soon as possible" - mpm
We need a wiki page on how GSoC should go - TheMystic, mpm, smf?
2. Flow control
- Flow control issues we had with GSoC apply to the project in general. It's hard to keep track of updated series.
- Automate closing of patches/bugs that have had no activity for a long period of time - mpm
- We should prototype a replacement for Patchwork.
- Patches in Patchwork are usually out of date and require cleanup.
- Hard to identify patch series threads.
- A mail bot that runs check-code, etc. would be nice.
- Clean up/clarify Bugzilla workflow. - mpm
- Ping people that submitted a bug when a pre-lease is put out - marmoute
3. Big repos
Facebook rewrote inotify using watchman (to speed up hg status) called hgwatchman
- Narrow clone would be helpful
- Should we change the manifest format?
4. Revsets
- Make them generative. - mpm
- Replace log code "monstrosity" with the graph log code (this is "98% done").
- Revset shorthand to find all changesets on a branch (including all heads) excluding changesets common to another branch.
5. Templater
- String escaping woes. - mpm, smf, durin42
- Expose working directory, active bookmark, etc.
- Global templates, templates for commands other than hg log. - mpm
- Color extension doesn't integrate well with the templater? - marmoute
6. Linkrevs with filtering
- hg log filename/hg annotate doesn't play well with hidden revisions (which may have links to file revisions).
- Sudoku-like algorithm?
7. Advocacy
- More writeups by large users
- Training videos
- "hg tutor"?
- Marketing page with selling points
- We should clear up confusion around who to talk to when large projects are having issues with Mercurial. We should identify project liaisons.
Git <-> Hg rosetta stone that's prettier and more prominent than GitConcepts - mjturk, durin42, TheMystic
- Grep "Pro Git" for important things to include
ScaleMercurial wiki page
- Might want to "market" these efforts on Hacker News, reddit, etc?
- Promote the online "learn hg" sites that port the "learn git" ones to use hg
8. Usability
- Enable more extensions by default
Allow some form of streamlined config editing - TheMystic
- Proper shelve/stash solution
- Better "hg log"
9. bundle2
- "This is a blocker for lots of interesting things, and we need to put a lot of effort into it." - mpm
10. Python compatilibity
- durin42 is working on getting "hg help" to run under Python 3. This requires fixing some import cycles (which currently work under Python 2 due to usage of relative imports).
11. Infrastructure
ProjectInfrastructure - We need to document who admins/has access to what.
- We may need to rewrite wiki spam countermeasures in the future.
12. Packaging
- Include all platform-specific build scripts in main Mercurial repository.
- Automate builds (instead of relying on various contributors).
13. Deprecation
- Deprecate: hg parents, children extension, graphlog, inotify, transplant, win32text
- Nuke: interhg
- Contrib: old templates
14. Shelve
- We should make that better, or something.
15. Manifest compression
- More compression gains to be made.
16. Clone cache
- kiilerix, durin42 have different solutions. (Someone fill this in with more detail, please!)
17. Scalability
- Add Scalability page to wiki
- Reduce open/close revlog calls.
- Delta caching.
- Pushing unauthenticated ends up doing two full pushes.
- Repos with many heads can send more header data than nginx can handle by default.
18. Patch meta
- With more patch metadata, we can make hg import --exact more exact.
- Add more metadata to patches:
- obsolescence markers,
- things in the "extra" field
- We'd need special handling for unprintable keys/values (e.g., transplant).
19. Bookmarks
- "@" keeps getting messed up on the Hg repo--probably due to a bug (or bisect)
- "@" is confusing
- Warn when deactivating a bookmark (and perhaps give the command to go back to that bookmark)
- Show active bookmark more aggressively
- Warn on pull when a remote bookmark has changed
20. Obsolete markers
See also 2.9sprintObsoleteNotes
21. Resolve State
- Keep a line for each prompt so that a user can redo a prompt
- Hide second (weird) parent from summary
- 'other' and 'local' are non-intuitive
- Rebase switches these
- Could take the first line of the commit message
- Could use bookmark, branch, etc.
22. Copied files
- Better algorithm from mpm can extend addremove and run fast