我从Git Attributes文档中设置了以下过滤器:
git config filter.dater.smudge expand_date
git config filter.dater.clean 'perl -pe s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"'
Run Code Online (Sandbox Code Playgroud)
现在我运行以下命令:
touch nfile.txt
git add --all
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
error: copy-fd: read returned Bad file descriptor
error: cannot feed the input to external filter perl -pe "s/\\\$DATE[^\\\$]*\\\$/\\\$DATE\\\$/"
error: external filter perl -pe "s/\\\$DATE[^\\\$]*\\\$/\\\$DATE\\\$/" failed
Run Code Online (Sandbox Code Playgroud)
该错误似乎与我的脚本无关,因为如果我运行此错误,则不会出现错误:
cat nfile.txt | perl -pe "s/\\\$DATE[^\\\$]*\\\$/\\\$DATE\\\$/"
Run Code Online (Sandbox Code Playgroud)
此外,这个旧线程提到错误可能是由于"从apply_filter调用的代码中的copy_fd",并建议修补filter_buffer_or_fdgit核心文件convert.c中的函数.就个人而言,如果我可以避免修补核心Git代码,我会非常高兴.
我需要清理错误消息,因为我不希望用户在提交的暂存阶段看到这种丑陋的输出.有办法避免这种情况吗?或者正确处理这种情况的方法?
如果之前已经回答过,我道歉.我在交换或互联网上找不到相同的文章.
当由 clean/smudge 内容过滤器驱动程序处理时,Git 2.5+ 应该对空文件变得更加健壮。
请参阅Jim Hill ( )提交的f6a1e1e,2015 年 5 月 18 日。(由Junio C Hamano 合并 -- --提交152722f,2015 年 6 月 1 日)jthill
gitster
sha1_file: 将空缓冲区传递给索引空文件
git add带有过滤器的空文件会弹出有关copy_fd错误文件描述符的投诉。
评论很简洁:
当过滤空内容时,clean/smudge 接口不能很好地工作(失败,然后通过空输入)。
可以说,对于空输入生成除空之外的任何内容的过滤器是无稽之谈,但如果用户想做奇怪的事情,那为什么不呢?
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |