git - 如何将 org 文件置于 git 控制之下,以便 git 忽略计算结果部分中的更改?

标签 git org-mode org-babel

我喜欢使用 Git 对组织文件进行版本控制。我的大部分组织工作都使用 org-babel 来运行与文本集成的代码。每次我重新运行代码时,比如作为导出的一部分,git status 将代码块执行的结果视为对文件的更改,从而导致长时间且有时不太有用的提交日志。

有没有办法让 Git 检测所有更改(开箱即用的体验),或者,如果有人愿意,忽略 +RESULTS: 部分中发生的更改--文档中代码输出的任何内容,因此可能会在每次运行(导出到导出)之间发生变化?前者将记录特定的代码执行;后者将记录可以生成此类报告的“程序”(org/org-babel 文件),而无需专门记录一次执行的结果。

最佳答案

您可能会考虑一个 content filter driver ,特别是 clean 过滤器

clean filter

(图片显示在“Customizing Git - Git Attributes”中,来自“Pro Git book”)

它可以对特定文件或文件集执行您选择的脚本declared in a .gitattributes .

.gitattributes 是版本化的,所有开发人员都可以看到/使用。

但是内容过滤器必须由 git config 指令激活。

git config filter.xxx.clean 'script'

由于这是一个本地设置,需要所有开发人员重复,所以这可能不是理想的,但仍然适合您自己的个人设置。

该脚本可以是一个简单的 sed,它将删除任何 +RESULT: 部分,使文件从 Git 的角度看起来没有变化,即使在执行之后。

关于git - 如何将 org 文件置于 git 控制之下,以便 git 忽略计算结果部分中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830641/

相关文章:

emacs - 是否可以将变量传递到 Emacs Org-Mode 捕获中?

datetime - 在组织模式表中计算工期

emacs - 如何使用 org-mode 隐式组织识字代码?

emacs - org-mode,如何自动生成具有格式良好的 Org 链接的漂亮文件层次结构树

emacs - org-babel、ruby 和编码

emacs - 字节码 : Symbol's value as variable is void: org-babel-tangle-lang-exts

git:如何添加自定义 merge 策略?

git - `git difftool` 和名称文件中的空格

git - 如何从git暂存区中删除文件?

git - 通过cURL删除Bitbucket存储库