A darcs designed for version control learners.
darcs can be a good choice to introduce version control to students. Still, some changes could be useful, in particular in the context of a university. Some changes concern the user interface and other the features.
This page lists wishable modifications to obtain such a version of darcs, with indication on the difficulty to create patches doing them.
Less key choices in the ui, currently:
Shall I record this change? (1/1) [ynWesfvplxdaqjk]
Shall I record this change? (1/1) [ynaqd]
Same for push/pull
difficulty : easy (already done)
apply interactive by default (not the case of regular darcs because of a scriptability problem, cf DefaultSwitches.
darcs init: “Repository successfully created” (done in HEAD)
darcs pull displays from which url it pulls:
Pulling from: [->] http://source/darcs http://source/darcs2 http://source/darcs4
Display right away from/to which repo it is pulling/pushing.
Or always do it interactively? Like:
Choose source to pull from a)http://source/darcs b)http://source/darcs2 c)http://source/darcs4 d) delete one of the above sources from the list
When only one source, no need for the menu, just display the source.
Bug ticket for that http://bugs.darcs.net/issue1772
When available, automatically do –diff-command with meld or kdiff3 for whatsnew, diff.
May be a problem via ssh. What about a -g option for “graphical”?
darcs status for darcs w -ls
darcs cat for darcs show contents
darcs show repo should show the date of the oldest and latest patches of the repo.
darcs show stats ? display lines of code per author, etc.
Make darcs speak the language of the students.
Refuse to version binary files? And print a message: “You should rather only version the source (text) files of that file. To really version this file, use darcs add –binary file.pdf”.
Refuse empty patch names.
Disable cache, since students have space quotas on their home directories.
Don’t showe replace, convert, optimize in darcs help.
Directly store author name in ~/.darcs/author (done in HEAD)
Do not prompt for long patch names, but they can still use amend-record –edit for that. (done in HEAD, launches text editor if no flag
Make send work even when distant repo not reachable. Automatically generate a context file against latest patch ?
Or say: “distant repo ADDRESS not reachable, generating a patch with whole repo history as context.”
And then systematically gzip the whole thing when darcs will accept gzipped patches.
Use the pager for darcs log
I’ll keep my branch of darcs, trying to keep minimal patches, for instance patches that disable a feature without removing its actual code. Should be done above a stable release branch.
Conflict marking and easy invocation of graphical diff3 program to visualize a conflict and choose how to resolve.
Put email address of the repo in darcs send -o output
List a set of default prefs to put in ~/.darcs/prefs for the students to have a friendlier darcs: