Version control of Mathematica notebooks

前端 未结 7 1085
时光取名叫无心
时光取名叫无心 2020-12-07 08:06

Mathematica notebooks are, of course, plaintext files -- it seems reasonable to expect that they should play nice with a version-control system (git in my case, although I d

7条回答
  •  一向
    一向 (楼主)
    2020-12-07 08:30

    A new possibility is to use mathematica-notebook-filter which parses Mathematica notebooks and strips all output cells and metadata so that these are not committed into the version control system.

    In the specific case of git, it is quite easy to integrate mathematica-notebook-filter so that git automatically cleans the output and metadata when calculating diffs through the use of gitattribute filters. You will need to have mathematica-notebook-filter filter installed and added to your path variable (or adapt the configuration below to point to the binary) and add the following line to your ~/.gitattributes file:

    *.nb    filter=dropoutput_nb
    

    This instructs git to parse all files matching *.nb with the dropoutput_nb filter which is defined in your ~/.gitconfig as:

    [filter "dropoutput_nb"]
        clean = mathematica-notebook-filter
        smudge = cat
    

    If, for some reason, you want to have a specific Mathematica notebook committed with all output and metadata, you can disable the filter in the project's .gitattributes file by adding:

    notebook_file.nb    !filter
    

    Disclaimer: I am the author of this tool. It is open source and feedback (both good and bad) is appreciated. Contributions are welcome on Github.

提交回复
热议问题