Ideas/Education

Rationale

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.

Changes

Apply -i

apply interactive by default (not the case of regular darcs because of a scriptability problem, cf DefaultSwitches.

More messages

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

External graphical diff

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”?

Hidden aliases

darcs cat for darcs show contents

Obtain relevant information from a repo

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.

Localization

Make darcs speak the language of the students.

Proactive behaviour

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”.

Disabled features

Disable cache, since students have space quotas on their home directories? Or provide cache garbage collection. Cache GC is in darcs 2.10 but it’s not automatic.

Easy send and apply

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 for an empty repository.”

And then systematically gzip the whole thing when darcs will accept gzipped patches.

Issues that directly concern darcs

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

Meanwhile

List a set of default prefs to put in ~/.darcs/prefs for the students to have a friendlier darcs:

apply interactive

Things resolved in HEAD:

  • Less key choices in the ui
  • darcs init: “Repository successfully created”
  • directly store author name in ~/.darcs/author
  • Use the pager for darcs log
  • Refuse empty patch names.
  • Do not prompt for long patch names (launch text editor if no flag -m name)
  • darcs status for darcs w -ls