如何自定义diff git以忽略码日期生成
我正在使用生成项目的文档。即使文档可以生成,因此不需要进行版本连接,我们还是决定这样做,因为这样可以更容易地看到实际文档中代码(注释)更改的影响 问题是每次生成文档时,它都会更改每个文件开头的日期,从而导致所有文件都被视为已更改 有没有一种方法可以告诉git忽略这些行以检测文件是否已更改,或者配置yard以在文件相同时不重新生成文件 谢谢 更新 我知道我可以做一个脚本或者其他任何事情,只要日期改变就可以清理文件。 所以我的问题是有一个Git方法可以做到,即我应该阅读关于diff驱动程序的文章,还是应该编写干净的脚本 如果我正在走向清理路径,那么使用git钩子或者将其集成到文档生成中会更好吗 最后,我对跟踪由于生成的文档中的特定提交而引起的更改的任何其他方法感兴趣 我还没有真正解释我的问题是什么(以及为什么我试图对不需要的东西进行版本化),所以我们就开始了 有时,代码中的一点修改会破坏文档,因此我可以看到提交对文档的影响 例如: 我将modeline用于vim(文件第一行的注释告诉vim不同的信息) 我知道我有一个包含模块文档的文件如何自定义diff git以忽略码日期生成,git,yard,Git,Yard,我正在使用生成项目的文档。即使文档可以生成,因此不需要进行版本连接,我们还是决定这样做,因为这样可以更容易地看到实际文档中代码(注释)更改的影响 问题是每次生成文档时,它都会更改每个文件开头的日期,从而导致所有文件都被视为已更改 有没有一种方法可以告诉git忽略这些行以检测文件是否已更改,或者配置yard以在文件相同时不重新生成文件 谢谢 更新 我知道我可以做一个脚本或者其他任何事情,只要日期改变就可以清理文件。 所以我的问题是有一个Git方法可以做到,即我应该阅读关于diff驱动程序的文章,还
#vi: my vim setting
# Documentation of module A
module A
.... some code
end
我在别的地方用这个模块
#vi : my vim setting
( 2 blank lines)
module A
.... some different code
end
此时,一切正常,A的文档将是模块A的文档
。但是,如果有人(比如我)删除了最后一个文件中的一个空行,只留下一行(是的,我在模型线和代码之间留了两行空行),那么我认为模型线是模块a的文档,它将是vi:my vim setting
问题是,除了查看每一页之外,没有办法检测出文档是否出错。使用git,我可以快速查看和检查更改的内容,甚至可以找到更改的时间(这很重要,因为这样我可以找出更改的原因)。我不熟悉yard,但无法让git忽略文件的某些部分 最简单的解决方案是修改构建过程以运行自定义脚本,该脚本从生成的文件中删除数据,或者在仅更改日期时检查git diff,在这种情况下恢复日期更改
但是,根本不控制任何生成的代码/文件的版本会更干净。不是直接的答案,只有元素:
具有git diff
选项,仅保留与特定regexp匹配的修补程序。似乎没有一个标志来排除与日期行匹配的行,但也许您会有足够的想象力来构建一个regexp,它可以保留除日期行以外的任何内容-G
有这样一个选项(diff
),因此,如果您能够找到一种方法将git生成的diff馈送给diff,您就可以开始了diff-I
- 是一个图形化的差异查看器,它可以很好地与git配合使用——例如,在项目的目录上调用
,会打开一个窗口,显示与meld dir/
不同的所有文件,并且可能需要regexp忽略某些行(编辑>首选项>文本过滤器)。它是为linux发行版(至少是Ubuntu)打包的,该网站声称它也在MacOS X和Windows上运行(我还没有试过)HEAD
- 我还没有尝试所有与git集成的difftools,但它们可能提供类似的功能
- 我几乎也有同样的问题。不是文档,而是IDE设置更改日期和时间的源文件。每次都是节省
要求在提交之前将此日期和时间设置为“漂亮”,这意味着没有秒,分钟应四舍五入到15
我认为最好的方法是创建小型git命令,以便在提交之前清理代码。插件。将其命名为
git cleanup
,并将其放置在c:\Program Files(x86)\git\libexec\git core
(我正在使用Windows)
所以现在在执行git commit
之前,我正在运行git cleanup
,它完成了所有的工作。实际上,我甚至认为可以一次性运行它,比如git cleanup&&git commit-a-m“commit message”
。或为此命令创建自定义别名
我使用了ruby
来创建这个小脚本。但是你可以使用你选择的语言。Git允许这样做。不要这样做
可以从源重新生成的资产不应进行版本控制。这是一个坏主意,原因正是你所经历的:
# Tested with: GNU findutils 4.4.2, GNU sed 4.2.1
find doc -type f -iname \*html -exec sed -i '/id="footer"/,/\/div/ d' {} +
这将去掉YARD文档中的所有页脚,这样您就不会将这些行提交到历史记录中。这应该可以解决您的具体问题。文件中没有日期就足够了吗 特定于码的解决方案(但不是特定于git的),如果您没有实际使用这些日期,那么首先让码不生成这些日期: 在
customtemplates/default/layout/html/footer.erb
中创建一个空文件,然后将其包含在模板中:
- 使用命令行
yardoc --template-path ./customtemplates
- u
YARD::Rake::YardocTask.new do |yardoc| yardoc.options = ["--template-path", "./customtemplates"] end
<div id="footer"> Generated by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>. </div>
sed -r '/^#[[:space:]]+vim?:/ {N; /\n[^\n]/q1}'