If diff command fails then use difflib.unified_diff() to generate diff.
If diff command fails then use difflib.unified_diff() to generate diff.

* tools/hook-scripts/mailer/mailer.py
  (DiffGenerator.__getitem__): Fall back to difflib.unified_diff() 
   if native 'diff' fails.
  (_classify_diff_line): New function taken from DiffContent.__getitem__()
   for reuse by the new class DifflibDiffContent.__getitem__().
  (DifflibDiffContent): New diff generator using difflib.

Patch by: Noorul Islam K M <noorul{_AT_}collab.net>
Suggested by: me
Tweaked by: me (Refactored some duplicate code).

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion