首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令行覆盖.gitattributes

从命令行覆盖.gitattributes
EN

Stack Overflow用户
提问于 2019-01-07 11:40:57
回答 1查看 318关注 0票数 6

有没有办法临时覆盖git中的属性,就像使用-c覆盖配置选项一样?

我想使用一个特定的自定义textconv命令调用git diff,而不是我通常使用的命令。

更具体地说:我的实际用例是使用jupytext.vim plugin在vim中编辑Jupyter笔记本。

我的普通~/.gitconfig包含

代码语言:javascript
复制
[diff "jupyternotebook"]
    command = git-nbdiffdriver diff

这会将nbdime设置为diff驱动程序,然后在~/.gitattributes

代码语言:javascript
复制
*.ipynb diff=jupyternotebook

现在我想要

代码语言:javascript
复制
[diff "jupytext"]
    textconv = jupytext --from=ipynb --to=md -o - <

(或类似的东西),并让git diff表现为

代码语言:javascript
复制
*.ipynb diff=jupytext

是在.gitattributes。

我愿意将[diff "jupytext"]部分永久添加到我的~/.gitconfig中。但是,根据传递给git diff的命令行选项,使用"jupytext“驱动程序而不是默认的"jupyternotebook”必须是临时的。

或者,我可以使用git diff的命令行选项,强制它使用一个优先于所有其他.gitattributes文件的不同的.gitattributes文件(例如,在同一目录中)。

最终,命令行选项用于vim-gitgutterg:gitgutter_diff_args设置。我想强制插件以不同于我通常希望用nbdime转换它们的方式来转换*.ipynb文件。

EN

回答 1

Stack Overflow用户

发布于 2021-06-05 00:47:32

我有一个类似的例子,我想在每次运行时打开和关闭一个textconv过滤器,而不是按文件扩展名。(我希望有时能够检查是否有任何更改,而不仅仅是从一个值到另一个值的数字更改。)我发现的诀窍是创建一个“默认”案例,它总是被使用,使用cat作为文本case,然后我可以用-c重新分配它。

在我的~/.config/git/attributes中,我有:

代码语言:javascript
复制
* diff=default

在我的~/.gitconfig中,我有:

代码语言:javascript
复制
[diff "default"]
      textconv = cat
[diff "cat"]
      textconv = cat
[diff "nonums"]
      textconv = "f(){ gsed -E 's/[0-9]+/##/g'  \"$1\" ; }; f"

以及这个别名,允许我在需要时通过调用git diff-nonums临时覆盖默认情况。(别名允许git diff允许的任何参数。)

代码语言:javascript
复制
[alias]
    diff-nonums = !git -c diff.default.textconv=\"`git config diff.nonums.textconv`\" diff

对于您的情况,我认为您应该使用difftool,而不是diff的command配置来切换实际的命令。The nbdime docs显示,他们提供了一个脚本来编写所需的配置(git-nbdifftool config --enable [--global],然后可以使用git difftool --tool=nbdime)完成了这一点,我相信你可以设置default+alias技巧来切换工具和textconv来做你需要的nbdiff或jupytext。

(有关保存属性文件的位置,请参阅下面几段中的man gitattributes。注意,我不清楚commandexternaldifftool之间的区别。例如,我刚才没有找到一种简单的方法来获取外部或命令来使用git本身。)

编辑我从this question上看到,git很大程度上是让你在文本转换和外部命令之间做出选择,而不是混合/链(不幸的是)。也就是说,man gitconfig中的部分被称为“选择文本diff与外部差异”。链接的问题建议解决临时文件的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54068308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档