使Jurtter笔记本上的TortoiseGit使用nbstripout运行git diff.textconv过滤器

时间:2018-12-06 13:50:16

标签: git jupyter-notebook tortoisegit

我已将git配置为在提交和差异之前使用nbstripout删除jupyter笔记本输出。从git bash shell(在Windows中),它可以正常工作。 现在,我想在TortoiseGit中具有相同的功能。 提交后会正确剥离输出,但是从资源管理器上下文菜单运行TortoiseGit内部diff工具不会触发nbstripout在.git / config中配置的git diff.textconv过滤器:

[diff "ipynb"]
    textconv = \"D:/Applications/Anaconda3/python.exe\" \"D:/Applications/Anaconda3/lib/site-packages/nbstripout.py\" -t

是否可以在diff之前自动运行nbstripout?

我当前的解决方法是在运行差异之前手动删除笔记本输出。

1 个答案:

答案 0 :(得分:0)

从2.7.0开始,TortoiseGit不支持diff.textconv过滤器。在TortoiseGit中使用高级差异设置:https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-Progs-Adv

在“高级差异查看器设置”下为.ipynb文件配置为C:\path\to\script.bat %base %mine时,以下批处理脚本完成了该工作。它首先运行nbstripout,然后在TortoiseGit差异查看器中打开带%base版本的剥离文件。

:: Run nbstripout on a jupyter notebook before opening it with TortoiseGit
:: Call Signature: nbstripout_TortoiseGit.bat %base %mine

:: Parameters and options
@echo off
set "python_exe=C:\path\to\python.exe"
set "nbstripout=C:\path\to\nbstripout.py"
set "tmpfilename=%temp%\nbstripout_tempfile_%USERNAME%_%RANDOM%.ipynb"
set "diffViwer=TortoiseGitMerge.exe"

:: Get cmdline arguments
set base=%1
set mine=%2

:: Strip output from notebook
%python_exe% %nbstripout% -t %mine% > %tmpfilename%

:: Open file in diff viewer
%diffViwer% %base% %tmpfilename%

:: Remove tmpfilename
del %tmpfilename%