A motley collection of darcs utilities
darcs-utils is a random collection of utilities written against the Darcs API <http://darcs.net/Library>. Utilities ========= annotate-authors ---------------- Produces a list of authors, ranked by how many lines of the repository were last touched by each author (in the same sense that 'darcs annotate' attributes lines of a single file to a patch). Without arguments, it reports statistics for the entire repository. One or more files or directories in the repository can be supplied as arguments, and then statistics will be reported for just those items. Supplying a directory means including all the files inside that directory or subdirectories. If a file is listed more than once on the command-line or by being included via a directory, it will only be counted once. If the first two arguments are "--csv <filename>", then per-file statistics will be written out to <filename> in the following format: "path to file", "author", "lines in file touched by author" annotate-authors can run in parallel: add "+RTS -N -RTS" anywhere in the list of arguments to use as many threads as cores on the machine, or "+RTS -N<n> -RTS" to use <n> threads. Progress is reported on standard error as annotate-authors runs. tag-intersection ---------------- tag-intersection calculates the set of patches that are present in both the current repository and one or more other repositories, and tags that set of patches. The other repositories are supplied as command-line arguments, and the tag name is requested interactively. Development =========== The official repository for the project is at http://hub.darcs.net/ganesh/darcs-utils Patches can be sent to 'email@example.com'. Contributions of more utilities or improvements to the existing ones are very welcome. One goal of this project is to guide improvements in the Darcs API. One common way of developing utilities is to copy and paste the code for a related Darcs command, and then tweak it as necessary. For example, the code for annotate-authors was based on the code for 'darcs annotate', with calls to some of the internals of 'darcs show authors'. The code for tag-intersection was based on the code for both 'darcs tag' and 'darcs pull'. Ideally, the internals of Darcs would be exposed in a way that copy and paste is not needed. The plumbing for writing command-line utilities that behave in a similar way to Darcs should also be standardised.