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