我有一个使用 Jupyter Notebook 文件进行数据分析的项目,我使用 clean/smudge 过滤器将输出和某些元数据保留在 git 之外。有时我会对过滤器进行调整,我希望自动应用这些更改,而不必git config
每次都要求我的协作者运行命令。
如何配置过滤器来运行存储库跟踪的脚本?
出于此问题的目的,我们假设 clean 命令是如何在使用 git commit 时清除 Jupyter Notebook 的输出和元数据?:
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --ClearMetadataPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR
这通常配置为...
git config filter.<filter-name>.clean "<command>"
...并与.gitattributes
包含以下内容的 a 一起使用。
*.ipynb filter=<filter-name>
相关问题
- .gitattributes 污迹和清理过滤器作为存储库的一部分很接近,但与设置过滤器相关
git clone
,而不是使用存储库跟踪过滤器中的更改 - 如何跟踪存储库/项目中特定于系统的配置文件?是一个关于跟踪存储库中的任何配置文件的更普遍的问题,而不是解决这个问题的细节。
- 允许使用 git clone 配置污迹和干净过滤器的安全风险是什么?是关于在 上设置过滤器,而不是在使用存储库中的脚本进行克隆后
git clone
设置过滤器。
要在 Git 中设置引用存储库跟踪的脚本的污迹或清理过滤器,您需要使用项目根目录中存储库中脚本的相对路径(实际上,相对于
.gitattributes
声明过滤器的 )对于 Jupyter Notebook 文件的特定场景,您可以通过将 clean 脚本放置在存储库中来设置 clean 过滤器,例如
scripts/clean_jupyter.sh
. 该脚本(应该是可执行的:)chmod +x scripts/clean_jupyter.sh
将包含您提到的命令:配置您的
.gitattributes
文件以将此脚本用于 Jupyter Notebook 文件:设置 clean 过滤器
.git/config
以引用您的脚本:要将这些更改自动应用于所有协作者,您可以在项目的 中包含说明
README.md
,或设置一个初始化脚本,他们可以运行一次以配置其本地存储库设置。出于安全原因,Git 不允许自动应用存储库中的过滤器配置,因此需要手动设置。要回答您关于我的旧答案“如何跟踪存储库/项目中特定于系统的配置文件? ”的问题:
or过滤器是一个脚本,它是
smudge
:clean
git/git/t/chainlint/token-pasting.test
%PATH%
或者 shell 会话中的脚本$PATH
,在这种情况下,您可以仅通过其名称(无路径)引用它。如果您想要配置 Git 过滤器来运行存储库跟踪的脚本,您可以使用相对路径来引用过滤器配置中的脚本。以下是如何修改 .git/config 文件中的过滤器配置来实现此目的:
假设您有这样的目录结构:
您的 .gitattributes 文件应使用存储库根目录的相对路径引用脚本:
使用脚本的相对路径更新 .git/config 文件中的过滤器配置:
确保根据您的实际项目结构以及清理和涂抹 Jupyter Notebook 文件所需的命令来调整路径和命令。
将更新的 .gitattributes 和 .git/config 文件提交到您的存储库:
这样,当协作者克隆存储库时,过滤器配置将使用相对路径引用脚本,并且脚本将根据其在项目结构中的位置执行。根据您的具体项目设置相应地调整路径。