Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

How to effectively diff a notebook with another version of it? This is usually needed/encountered in revision control, but can be generally useful. What i currently do is disable notebook history, use less styling, and diff them as text files.

share|improve this question
1  
Some relevant answers here. –  b.gatessucks Nov 8 '12 at 17:12
1  
Yeah, I'd say it's a duplicate. –  rm -rf Nov 8 '12 at 17:20
1  
This might be useful for you: stackoverflow.com/a/8778007/695132 –  Szabolcs Nov 8 '12 at 18:07
add comment

3 Answers

up vote 5 down vote accepted

The old AuthorTools` package has a NotebookDiff function. You can open the package's documentation like this:

NotebookOpen@FileNameJoin[{$InstallationDirectory, "AddOns", "Applications", 
 "AuthorTools", "Documentation", "English", "AuthorToolsGuide.nb"}];

This function is also included in the undocumented NotebookTools` context (in version 8 at least). You can simply evaluate

NotebookTools`NotebookDiff[]

which will pop up a file chooser dialog, or you can pass the two notebooks to it as an argument (either file names or notebook handles, such as the ones returned by Notebooks[]). Please also see this answer of mine.

Access to this diff functionality is included in several of the Tortoise version control clients on Windows. TortoiseSVN and TortoiseHg are both set up by default to diff Mathematica notebooks this way (see here).

share|improve this answer
add comment

Copy as Input Text and paste into Quick Diff Online works very well. As previously described here.

share|improve this answer
add comment

It might be possible to use some of the techniques that the experts here provided when I asked this question before.

notebook1 = 
  StringJoin[
   Import["/Users/cormullion/Desktop/hex-chart.nb", "Plaintext"]];
notebook2 = 
  StringJoin[
   Import["/Users/cormullion/Desktop/hex-chart-a.nb", "Plaintext"]];
sa = SequenceAlignment[notebook1, notebook2];
Row@Flatten[
  sa /. {a_, b_} :> {Style[a, Red], "(", Style[b, Green], ")"}]

giving something looking like this:

dodgy screen grab

Red shows deletions, green shows additions. Perhaps the parentheses are not ideal for this application...! You can tell that I changed the base from 16 to 12 in the second version of the notebook. Although I used this solution, there's a better built-in but undocumented one found by ace spelunker @rm-rf which you could play with.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.