Jul*_*rec 5 python git git-filter
我试图添加一个git clean-filter以便忽略我的IPython Notebook文件的输出和execution_count。
我基本上已经关注了这篇文章(基于SO的回答),并根据我的需要对其进行了一些修改。另外,我在Windows上,据我所知,不需要使python脚本可执行的部分(请参阅Python FAQ)。
我想将其捆绑到我的存储库中,以便其他贡献者也可以使用它。我已经ipynb_drop_output.py在存储库的根目录中保存了,并在同一位置保存了gitconfig和gitattributes文件,因此在根目录下,我有:
.gitignore
.gitconfig
.gitattributes
ipynb_drop_output.py
MyNotebook.ipynb
Run Code Online (Sandbox Code Playgroud)
在.gitattributes:
*.ipynb filter=clean_ipynb
Run Code Online (Sandbox Code Playgroud)
在.gitconfig:
[filter "clean_ipynb"]
clean = ipynb_drop_output.py
smudge = cat
Run Code Online (Sandbox Code Playgroud)
我已经手动测试了ipynb_drop_output的代码,它的工作原理就像一个魅力。然而,git diff仍然显示我execution_count和输出变了。看来脚本根本没有运行。
我想这可能是因为该clean = ipynb_drop_output.py部分的缘故,但是我尝试了所有变化:不包括.py,包括完整路径“ C ... \ ipynb_drop_output.py”,也带有正斜杠等。
我的第二个理论是git只是不查看.gitconfig文件,但是我不清楚如何告诉它和/或如何检查它实际上是否在查看它。我认为git config --file .gitconfig filter.clean_ipynb.clean ipynb_drop_output这样做的重点是...
请问如何在Windows上运行它?
假设您已在以下位置签出存储库:~/myrepo/。
您需要告诉 git 在哪里可以找到.gitconfig您希望所有用户使用的存储库范围内的自定义。您可以通过运行以下命令来做到这一点:
cd ~/myrepo/
git config --local include.path ../.gitconfig
Run Code Online (Sandbox Code Playgroud)
note ../,您在尝试执行此操作时缺少它,因为.gitconfig和.git/config不在同一目录中。您的布局~/myrepo/将有:
.git/config
.gitconfig
.gitattributes
Run Code Online (Sandbox Code Playgroud)
您将需要提交到您的存储库的最后 2 个文件。
所有用户都必须git config在克隆您的存储库后立即执行上面的命令,以告诉 git 信任~/myrepo/.gitconfig。出于安全原因,无法代表他们执行此操作。
最后,你的手动错误配置之所以默默地失败,是因为 git 是这样设计的,以允许可选的配置文件。因此,在撰写本文时,如果.git/config您有:
[include]
path = ../.gitconfig
Run Code Online (Sandbox Code Playgroud)
如果../.gitconfig不存在,git 会默默地跳过它。因此,如果您输入了错误的路径,它将跳过它。
这方面有了新的进展,但目前还没有定论。希望将来能有一种方法来诊断此类 git 问题。