quickie tasks
These are some small, uncontroversial tasks. As such, they're ideal for anyone who wants to get involved with the project; there's always some overhead with getting into a new code base, figuring out how things fit together, how to send acceptable patches, all that, and the quickest way to get through it is to make your first patch something small, so you don't also have to worry about complicated design issues at the same time. (Of course, some people do great just diving in; there's no rule that says you have to do this.)
So, here are some smaller tasks, that very much need doing, that fit the above bill:
-
new commands
mtn detach(which removes the_MTNdirectory from a workspace), andmtn attach -r <rev>(which turns a normal directory into a workspace at the specified location). These are useful for export/import type workflows. -
new developer's command
mtn make_man_pagethat dumps out the --help texts in man page format. Update build process to use this command to generate a real man page and install it. -
header file audit (only #include things we actually use, use
<iosfwd>when possible, etc.) -
mtn rename --guess-- try to figure out what files have been renamed by matching up missing and unknown files with the same checksums -
mtn clean --unknown --ignoredto remove files of each type from the workspace; handy for a really aggressive "make clean", and for plaforms without xargs or where there might be spaces in filenames so thatmtn ls unknown | xargs rmis hard or dangerous. -
mtn diff --ignore-whitespace -
make the diff header contain more helpful contextual information -- some thoughts are in this email. it might take a bit of discussion to figure out the nicest format
-
'db check' now includes a call to the sqlite PRAGMA integrity_check, but we need a test for this; check out Message-ID 20060511064950.GC5025@frances.vorpus.org in the list archives.
-
more inodeprints UI -- maybe "inodeprints on/off/auto/refresh", where "auto" turns them on or off depending on the size of the tree (and is used by default at checkout time)?
-
support for .mtn-template. This is a versioned file, that is used as the default for log messages. This might be helpful so you can put in fields for bug numbers, standardize your log message format, etc. Implementation is to make it the default value of MTN/log. One tricky bit is that commits should be canceled if given an empty or _unchanged log message; currently they are canceled only on an empty log message.
-
script that wraps monotone and gathers statistics on usage, that people could use to help us make UI decisions. Just recording commands would be good; taking notes on things like how many files were edited in a commit, whether any given merge or update had conflicts, etc. would be even cooler.
-
make
--debugoutput contain timestamps for each event, possibly with another option; this might help provide information about performance issues and where time is being taken between key steps. -
include tests in the test suite to ensure that various external tools (like tailor or buildbot) still work with us; perhaps track their integration code (eg, monotone.py from tailor) and attempt to keep it up to date with changes in HEAD.
-
two-argument disapprove: should be some way to apply disapprove to a range of revisions, not just a single one. (basically just means committing the changeset diff(LASTREV,FIRSTREV) as a child of LASTREV.) be careful about merge nodes in the span to disapprove.
-
add support for more merge tools -- SVK is one source of these, they support a number that we don't. see SVK/Resolve/* in their source tree.
-
add a test for context diff output
-
write a test for any bugs in the tracker labeled [NEED TEST].
-
IN PROGRESS: Emacs code that makes C-x 4 a drop one into _MTN/log instead of ChangeLog. See ChangeLog
-
mtn status -rREVandmtn checkout --nofiles; see this discussion and this one. -
automatic updating of the tutorial section of the texinfo docs so that program output, etc. is kept current
See also: InterfacesFrontendsAndTools that don't exist, but if they did they would make using monotone just that much more awesome.