我如何将组织文件置于git的控制之下,以便git会忽略计算的RESULTS部分中的更改?

问题描述 投票:1回答:2

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

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

git org-mode org-babel
2个回答
0
投票

您可能考虑使用content filter driver,特别是clean过滤器

“清洁过滤器”

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

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

.gitattributes已经过版本控制,将对所有开发人员可见/使用。

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

.gitattributes

因为这是一个local设置,所有开发人员都需要重复此设置,所以这可能不是理想的选择,但仍然适合您自己的个人设置。

脚本可以是简单的git config filter.xxx.clean 'script' ,它可以删除任何sed节,即使在执行后,从Git的角度看,文件也保持不变。


0
投票

[否,无法让Git忽略对跟踪文件的更改。您可以跟踪一个文件,在这种情况下,无论它有多小,或者没有跟踪,Git都会注意对该文件的任何更改,而Git不会对此进行任何处理。

[有时人们建议使用+RESULT:欺骗Git忽略对文件的更改,但是git update-index解释了为什么它不起作用。

您可能会发现,如果没有将结果保存在同一文件中,您会做得更好,因为结果似乎与您的实际代码无关。将任何类型的生成的输出放入版本控制中通常不是一个好主意,因此,最好找到另一个放置该数据的位置。

如果您无法执行此操作,也可以使用污迹和干净的过滤器从文件中删除结果输出(请参见the documentation),但这可能很棘手,并且您将无法实际保留现有更改,请仅删除那些部分。

© www.soinside.com 2019 - 2024. All rights reserved.