将IPython笔记本电脑置于版本控制之下的好策略是什么?
笔记本格式非常适合版本控制:如果想要版本控制笔记本和输出,那么这非常有效.当人们只想对输入进行版本控制时,就会产生烦恼,不包括可能是大型二进制blob的单元格输出(也就是"构建产品"),特别是对于电影和情节.特别是,我试图找到一个良好的工作流程:
如上所述,如果我选择包含输出(例如,在使用nbviewer时这是可取的),那么一切都很好.问题是,当我不想要的版本控制输出.有一些工具和脚本可以剥离笔记本的输出,但我经常会遇到以下问题:
Cell/All Output/Clear菜单选项相比,剥离输出的一些脚本会稍微改变格式,从而在差异中产生不必要的噪声.这可以通过一些答案来解决.我已经考虑过几个选项,我将在下面讨论,但还没有找到一个很好的综合解决方案.完整的解决方案可能需要对IPython进行一些更改,或者可能依赖于一些简单的外部脚本.我目前使用mercurial,但想要一个也适用于git的解决方案:理想的解决方案是版本控制不可知.
这个问题已经多次讨论过,但从用户的角度来看,没有明确或明确的解决方案.这个问题的答案应该提供明确的策略.如果它需要最近的(甚至开发)版本的IPython或一个易于安装的扩展,这很好.
更新:我一直在玩我修改过的笔记本版本,可以选择.clean使用Gregory Crosswhite的建议保存每次保存的版本.这满足了我的大多数约束,但是仍然没有解决以下问题:
.clean文件,然后需要以某种方式集成到我的工作版本中.(当然,我总是可以重新执行笔记本,但这可能会很痛苦,特别是如果某些结果取决于长时间的计算,并行计算等).我还不知道如何解决这个问题.也许涉及像ipycache这样的扩展的工作流可能会起作用,但这似乎有点过于复杂.Cell/All Output/Clear菜单选项删除输出.