Заставьте TortoiseGit запустить фильтр git diff.textconv с помощью nbstripout на ноутбуках jupyter - PullRequest
0 голосов
/ 06 декабря 2018

Я настроил git для удаления выходных данных ноутбука jupyter с помощью nbstripout до фиксации и сравнения.Он отлично работает из оболочки git bash (в Windows).Теперь я хотел бы иметь ту же функциональность внутри TortoiseGit.Выходные данные корректно удаляются при фиксации, но запуск внутреннего инструмента diff TortoiseGit из контекстного меню проводника не запускает фильтр git diff.textconv, настроенный в .git / config с помощью nbstripout:

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

Есть лиесть ли способ автоматического запуска nbstripout перед diff?

Мой текущий способ - вручную удалить вывод с ноутбука перед запуском diff.

1 Ответ

0 голосов
/ 08 декабря 2018

TortoiseGit не учитывает фильтры diff.textconv с версии 2.7.0.Используйте расширенные настройки различий в TortoiseGit: https://tortoisegit.org/docs/tortoisegit/tgit-dug-settings.html#tgit-dug-settings-Progs-Adv

Следующий пакетный скрипт выполняет работу, если он настроен в разделе «Дополнительные параметры просмотра различий» для файлов .ipynb как C:\path\to\script.bat %base %mine.Сначала он запускает nbstripout и открывает раздетый файл вместе с версией %base в средстве просмотра различий TortoiseGit.

:: 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%
...