Darcs vs. Git
I don't understand why so many people move from darcs to git.
Darcs can replace identifiers, Git cannot. I often rename identifiers. The identifier substitution of Darcs both saves space and allows for smooth merging. In Git renamings of identifiers look like you alter a lot of lines here and there. I don't think that Git can easily implement that feature, because it has no notion of a patch.
darcs check --test
Darcs lets you easily run a test suite after every commit. Usually I register
cabal configure && cabal build && cabal haddock && cabal test
as a darcs test.
After recording a patch,
darcs unpacks the repository temporarily in the state after adding the patch.
Then it runs the test suite within that temporary copy of the repository.
If you add a file the Cabal description but forgot
or vice versa, then the darcs test will quickly spot the problem.
This almost not possible with Git.
It could certainly be hacked into
but the crucial feature of running a test
is to reject a commit if it does not pass the tests.
If there is a way in Git then it is by far more complicated than in Darcs.
I see no reason why Git does not support pre-commit tests properly.
Pushing to the wrong repository
It is very easy in Git to push commits to an unrelated repository or to the wrong branch of a repository. And it is cumbersome and dangerous to get rid of the wrongly pushed commits, if operating in a server git repository. In darcs this cannot happen so easily since normally darcs asks you which patch to push. This way you can see early if something starts to go wrong.
Update of working copy files
github sucks, looping scripts, pull requests, how to get a git repository