在向索引添加新文件或文件更改时,有没有办法覆盖 gitattributes 过滤器?

问题描述 投票:0回答:1

上下文:
我的团队有一个存储库,里面有很多 jupyter 笔记本。我们经常处理 jupyter 笔记本中的敏感数据,我们希望确保不会意外地将 jupyter 笔记本单元的任何数据输出提交到 git。

为了实现这一点,我将此过滤器添加到 git config 中:

git config filter.strip-notebook-output.clean 'jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR'

然后在存储库级 gitattributes 文件中调用此过滤器,如下所示:

*.ipynb filter=strip-notebook-output

这非常有效,我们像往常一样添加并提交 jupyter 笔记本,而无需记住每次都删除单元输出。

问题:
有时我们希望将单元格输出保留在特定笔记本中,并将其与所有单元格输出一起添加到 git 索引中。本质上,我们希望能够在特定情况下覆盖 gitattributes 过滤器,同时让过滤器在所有其他时间默认运行。这可能吗?如果是,我该如何实施?

我已经尝试用谷歌搜索如何执行此操作,但到目前为止尚未找到答案。

我可以删除 git 属性过滤器,并告诉我的团队在添加到 git 之前始终运行 nbconvert,并每次在每个笔记本文件上启用清除输出,除非他们故意想要保留单元格输出,但这是一个非常危险的选择,因为人们可能会忘记或犯错误(我的一些团队成员是 git 和版本控制的新手)。我希望找到一种解决方案,允许在添加到 git 索引之前/同时默认清除笔记本单元输出,并且在特殊情况下允许添加到单元输出完好无损的 git 笔记本。

git jupyter-notebook gitattributes
1个回答
0
投票

尝试

git -c filter.strip-notebook-output.clean= add path/to/a/notebook

在此

git add
中禁用了clean命令,因此内容按原样添加。所有细胞都受到影响。如果你想让一些细胞完好无损,而另一些细胞被清理干净,这个方法就行不通了。

© www.soinside.com 2019 - 2024. All rights reserved.