Git clean-filter python script on windows
我正在尝试添加一个git clean-filter,以便忽略我的IPython笔记本文件中的输出和execution_count。
我基本上都遵循了这篇文章(基于这个SO答案),并根据我的需要稍作修改。此外,我在Windows上,因此就我所知,不需要关于使python脚本可执行的部分(参见Python FAQ)。
我想将它捆绑到我的存储库,以便其他贡献者也可以获得它。
我已经将ipynb_drop_output.py保存在我的存储库的根目录并将gitconfig和gitattributes文件保存在同一个地方,所以在我拥有的根目录中:
1 2 3 4 5
| .gitignore
.gitconfig
.gitattributes
ipynb_drop_output.py
MyNotebook.ipynb |
在.gitattributes中:
1
| *.ipynb filter=clean_ipynb |
在.gitconfig中:
1 2 3
| [filter"clean_ipynb"]
clean = ipynb_drop_output.py
smudge = cat |
我手动测试了我的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上运行?
-
不应该在.git/config,而不是.gitconfig?
-
链接的文章似乎暗示如果您希望它传播给其他用户则不应该这样做。 你使用git config --file .gitconfig filter.clean_ipynb.clean ipynb_drop_output并在那里创建它。 否则你会使用git config --local。 在这里也可以看到
-
关键是没有工具可以查看.gitconfig。 您可以使用git config在任何地方编写文件; 并不意味着什么都会读它。
-
我明白你的意思了。 我的./.git/config文件有[include] path = .gitconfig
-
你有机会这个吗?
-
我的问题是一个错字的git config命令。 FWIW,我在windows上并使用git bash,这可能有所帮助。
-
Jody,我从来没有按照我想要的方式工作,我从来没有弄清楚问题是什么。 我结束了设置一个全局git过滤器,这很好用。
假设您在~/myrepo/下签出了您的存储库。
您需要告诉git在哪里找到您希望所有用户都使用的repo-wide自定义.gitconfig。你这样做是通过运行:
1 2
| cd ~/myrepo/
git config --local include.path ../.gitconfig |
注意../,由于.gitconfig和.git/config不在同一目录中,因此尝试进行此操作时缺少../。 ~/myrepo/的布局将具有:
1 2 3
| .git/config
.gitconfig
.gitattributes |
您将需要提交给您的repo的最后2个文件。
在克隆你的repo后,你的所有用户都必须从上面执行git config命令,告诉git信任~/myrepo/.gitconfig。出于安全原因,不可能代表他们这样做。
最后,手动错误配置失败的原因是因为git是以这种方式设计的,以允许可选的配置文件。因此,在撰写本文时,如果您的.git/config中有:
1 2
| [include]
path = ../.gitconfig |
并且../.gitconfig不存在,git会默默地跳过它。因此,如果键入错误的路径,它将跳过它。
在这方面有一个新的发展,陪审团仍然没有。希望将来有一种方法来诊断这样的git问题。