我已将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?
我当前的解决方法是在运行差异之前手动删除笔记本输出。
答案 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%