我设置了一些git 过滤器为了在提交某些文件之前对其进行预处理(在我的例子中是 IPython Notebooks)。更准确地说,我正在遵循以下说明:https://stackoverflow.com/a/20844506/578770
如果我提交更改或者使用命令行“git diff”查看更改,则效果很好,并且文件会被正确过滤。
但是,如果我使用 meld 检查我的更改,则不会过滤文件。
我尝试了几种方法将 meld 设置为 git 的 diff 工具:
- 通过调用 git difftool
- 通过调用来自的融合自定义脚本
但是我找到的使用 meld 作为 diff 工具的解决方案都没有使我能够在应用 git 过滤器后查看文件的更改。
有人知道如何实现这一目标吗?
这是解决此问题的黑客解决方案。您所指的原始 git 过滤器已被正式化为包nbstripout
(pip3 install nbstripout
),但是您可以将任何过滤器放入此脚本中,并且它的工作原理相同。我假设您想为用户而不是特定的存储库进行配置。
In ~/.gitconfig
,添加一个名为的新 diff 驱动程序git-nb-clean-diff
:
[diff "git-nb-clean-diff"]
command = git-nb-clean-diff
In ~/.config/git/attributes
,将笔记本配置为与该 diff 驱动程序进行比较:
*.ipynb diff=git-nb-clean-diff
现在我们需要制作实际的 diff 驱动程序!在~/bin/git-nb-clean-diff
(必须具有此文件名,但位置是可选的):
#!/bin/bash
# pass the stripped working tree file and the repo copy
# to meld for diffing
meld <(cat $1 | nbstripout) $2
最后,我们使该文件可执行
chmod +x ~/bin/git-nb-clean-diff
并将其添加到路径中,以便 git 在运行时可以找到我们的 diff 驱动程序
echo "PATH=$PATH:~/bin" >> ~/.bashrc
# reload the edited .bashrc
source ~/.bashrc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)