New Contributors Mentoring
If you are a new contributor that wishes to start investing time in Mercurial development, you can grab one of the "Mentored" task. These tasks are low hanging fruits selected by core developers to help newcomers get a grasp of the code base and contribution process.
Contents
1. List of Mentored task per topic
2. Small "First" tasks
These tasks should be good fit for first contributions. They are reasonably isolated and can be completed in a reasonable amount of time.
2.0.1. Task involving only Rust code
The rhg pure Rust executable is a good pool of simple "first task". Multiple simple command are waiting to be implemented:
- hg id
- hg path
- hg branch
- hg bookmarks
- hg config (some of it is already implemented)
2.0.2. Task involing mostly Rust code, with rust-cpython usage
Mercurial's revlog have an "index" object that implement various data access and graph computation logic. In Rust, we have a "MixedIndex" class that forward these computation to the C code. Implementing these method in Rust would get us closer to using a pure Rust index.
Computation on the graph:
ancestors: return the gca set of the given revs
commonancestorsheads: commonancestorsheads
computephasesmapsets: compute the phases of all changesets
headrevs: get head revisions
get filtered head revisions: get filtered head revisions
reachableroots2: return (heads(::(<roots> and <roots>::<heads>)))
Data access:
getitem
deltachain
issnapshot
findsnapshots
slicechunktodensity
stats
2.0.3. Task involving Python Only
add a -t/--tool flag to evolve's hg pick
3. Medium Sized Task
These tasks are a bit more ambitious. They can be used to dive a bit deeper in some aspect of Mercurial. They can often be sliced in multiple subtasks
3.0.1. Task involving Rust code
- implement a read/write revlog'index in Rust (we already have a lot of code for the read part)
implement/integrate a Rust version of chg to the rhg executable,
implement rust based version of the smartset object used by revsets,
- implementing pieces of the help system in Rust:
- The entire task is fairly large but can be sliced into smallish independant pieces
- specify and implement a mini-rst parser
- with txt output
- (with html output)
provide hg help support for the topics in mercurial/helptext/
look into hg help support for command