TortoiseSVN (nonché other Tortoise clients) includono un file script a diff in Mathematica. funzionalità Diff per Mathematica è implementata nel pacchetto AuthorTools (forse c'è qualcosa di meglio?)È possibile richiamare la funzionalità diff di Mathematica dalla riga di comando?
Lo script attualmente lavora con la creazione di un piccolo file notebook nella directory temp, e la sua apertura nel front-end. Il notebook ha un grande pulsante che farà il diff e ha i nomi dei file da diffondere hard coded.
Uno svantaggio è che il notebook con il codice diff verrà lasciato nella directory temp e non verrà ripulito. Sembra anche inutile avere un quaderno ausiliario aperto ogni volta che facciamo una diff.
È possibile avviare la funzionalità diff dalla riga di comando per evitare di passare attraverso il blocco appunti temporaneo? O c'è altro robusto modo per migliorare questo processo ed evitare di sporcare la cartella temporanea con notebook ausiliari?
Eventuali suggerimenti per migliorare l'esperienza di diffusione sono i benvenuti!
Si noti che poiché TortoiseSVN è un programma per Windows, sono principalmente interessato alle soluzioni basate su Windows.
Ecco un notebook ad esempio che lo script genera. Mi rendo conto che ha bisogno di pulizia, ma l'ultima volta che ho controllato ha funzionato anche nella versione 5 (!), Quindi non volevo toccarlo inutilmente (senza migliorare visibilmente qualcosa).
Notebook[{
Cell[BoxData[ButtonBox["\<\"Compare Notebooks\"\>",
ButtonFrame->"DialogBox", Active->True, ButtonEvaluator->Automatic,
ButtonFunction:>(Needs["AuthorTools`"]; NotebookPut[Symbol["NotebookDiff"]["one.nb", "two.nb"]])
]], NotebookDefault] },
Saveable->False, Editable->False, Selectable->False, WindowToolbars->{},
WindowFrame->ModelessDialog, WindowElements->{},
WindowFrameElements->CloseBox, WindowTitle->"Diff",
ShowCellBracket->False, WindowSize->{Fit,Fit}
]
Reputazione interessante: http://i.stack.imgur.com/2ze1M.png –
Il controllo della versione di un notebook Mma non è semplice. Di solito seguo il consiglio dato da Michael Pilat in [questa domanda] (http://stackoverflow.com/q/2816628/421225). Cioè disattivare la cache e la cronologia, quindi utilizzare una diff standard basata sul testo. – Simon
@Simon 'NotebookDiff' sembra funzionare bene, hai avuto problemi con esso? – Szabolcs