75 votes

Contrôle de version des carnets de notes Mathematica

Les carnets Mathematica sont, bien sûr, des fichiers en clair - il semble raisonnable de s'attendre à ce qu'ils soient compatibles avec un système de contrôle de version (git dans mon cas, bien que je doute que le système spécifique importe). Mais le fait est que tout fichier .nb est rempli d'informations de cache, d'horodatages et d'autres métadonnées assorties. Des tas de métadonnées.

Ce qui signifie qu'un contrôle de version limité est possible -- les commits et rollbacks fonctionnent bien. La fusion, cependant, est un catastrophe . Mathematica n'ouvrira pas un fichier contenant des marqueurs de fusion, et un éditeur de texte ne permet pas de parcourir un fichier .nb.

Quelqu'un a-t-il réussi à placer un bloc-notes sous contrôle de version ? Comment ?

0 votes

Il n'y a pas grand-chose que vous puissiez faire pour les véritables conflits de fusion, lorsque deux personnes modifient réellement la même chose de manière contradictoire. Comme vous le dites, Mathematica ne peut pas ouvrir le fichier avec des marqueurs de conflit (ou faire une comparaison à trois en interne), vous devrez donc les résoudre vous-même dans le formulaire de texte. La réponse de Michael Pilat devrait vous aider à résoudre les conflits de métadonnées.

0 votes

Je ne suis pas familier avec Mathematica. Les fichiers .nb sont-ils générés automatiquement ? Si c'est le cas, ne les placez pas sous contrôle de version.

0 votes

@hasen j : Les fichiers .nb ne sont pas entièrement générés automatiquement mais ils contiennent des méta-données générées automatiquement. Je pense que la réponse de Michael Pilat dissipe toute confusion à ce sujet.

46voto

Michael Pilat Points 5545

Il est recommandé de désactiver le cache des contours de fichiers, qui sont les métadonnées auxquelles vous vous référez lorsque vous consultez le carnet de notes avec un éditeur de texte. Comme vous l'avez découvert, cela peut provoquer des conflits de fusion si plusieurs personnes modifient le même carnet de notes.

Cette fonction est facilement désactivée avec l'inspecteur d'options. Dans le menu Mathematica, allez à FormatInspecteur de l'option... dans le coin supérieur gauche de l'écran. portée pour Carnet de notes sélectionné et chercher FileOutlineCache dans le champ de recherche. Mettez l'option sur Faux et enregistrez votre carnet de notes, et vous devriez être prêt.

Notez que cela peut rendre l'ouverture des ordinateurs portables un peu plus lente, mais à moins que l'ordinateur portable soit assez grand, vous ne remarquerez probablement pas la différence.

0 votes

Merci. Ça ne résout pas tout mon problème, mais ça me permet de faire une bonne partie du chemin - je vais juste essayer d'éviter d'avoir à fusionner le contenu réel des cellules, et de le faire dans un éditeur de texte si c'est absolument nécessaire :)

6 votes

Une autre option que vous pourriez vouloir désactiver est TrackCellChangeTimes

5 votes

Il est également utile de Cell --> Delete All Output y Notebook History les options du menu. Le paquet AuthorTools a NotebookDiff qui pourrait être accroché à la commande diff d'un VCS. Enfin, il y a un

13voto

Apo Points 51

Il existe un ensemble de recommandations sur l'utilisation de Git pour le contrôle de version avec Mathematica à l'adresse suivante Mathematica Stack Exchange . En bref, la philosophie est de minimiser l'utilisation des cahiers .nb, et d'essayer de faire la plupart du contrôle de version avec des paquets .m (similaire à ce que xuhdev et l'utilisateur MMA disent ci-dessus). Cela semble tout à fait raisonnable étant donné la façon dont les notebooks sont gérés.

6voto

Kena Points 5046

Ce n'est pas exactement une solution à votre problème de fusion, mais c'est ainsi que nous gérons les carnets de notes et le contrôle de la source dans mon équipe. En gros, nous traitons les notebooks Mathematica de la même manière que les fichiers binaires. Ils sont archivés, mais :

  • nous conservons toujours une copie pdf à côté du fichier .nb (sauvegarde pour restaurer les informations au cas où nous perdrions, pour une raison quelconque, la capacité de lire les fichiers .nb. Il s'agit toujours d'un format propriétaire, mais il est un peu plus répandu, et il y a de fortes chances qu'Adobe et Wolfram ne disparaissent pas simultanément).
  • nous ne permettons pas les fusions
  • nous ne révisons que le produit final (le carnet de notes rendu) au lieu du fichier .nb.

Nous utilisons principalement Mathematica pour de petites preuves, des explorations et des chemins de traverse, donc la procédure ci-dessus fonctionne bien pour nous (notre documentation principale est en LaTeX, qui produit une documentation plus conviviale pour les non-mathématiciens/non-programmeurs).

3voto

MMA user Points 11

Dans la lignée de ce que Simon et Kena disaient, lorsque j'ai eu des .nb Mathematica sous contrôle de version, j'ai souvent créé une version en texte brut du code d'entrée uniquement et je l'ai enregistré avec le même nom mais avec une extension .txt. Bien que cela ne résolve pas directement le problème de la fusion, cela permet de faire fonctionner le diff-ing de manière raisonnable et rend la fusion manuelle plus évidente lorsque je retourne éditer les .nb par la suite. Il y a encore quelques idiosyncrasies dans ce format, mais il est BEAUCOUP plus facile à lire que le format .nb brut.

Pour générer le fichier texte, il me suffit de copier le cahier dans un nouveau cahier vierge (avec les raccourcis, Ctrl-A,C,N,V), de sélectionner le menu Cell->Delete All Output, de copier le résultat (Ctrl-A,C), et de coller le résultat dans un éditeur de texte simple pour l'enregistrer. Cela prend étonnamment peu de temps une fois que vous avez pris le coup de main.

1voto

xuhdev Points 1130

Eh bien, ma solution n'est pas d'utiliser Notebook pour le suivi, mais d'utiliser des fichiers en texte brut (pas le texte brut de "Notebook").

Chaque fois que vous avez un carnet de notes, vous pouvez utiliser le menu "enregistrer sous..." pour enregistrer le fichier courant comme un fichier texte brut. Lorsque vous avez besoin de le charger, il suffit de l'ouvrir avec Mahthematica. Le suivi de ce fichier serait beaucoup plus agréable que le suivi d'un fichier Notebook. Je ne suis pas certain des fonctionnalités que vous pouvez perdre en utilisant le format texte brut plutôt que le Notebook de Mathematica, mais je n'ai pas trouvé de défauts jusqu'à présent.

Référence : http://www.topbug.net/blog/2013/05/02/track-mathematica-source-files-with-version-control-systems/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X