我正在尝试着色补丁的输出。设置color.diff
配置(通过我的.gitconfig)似乎没有这样做。
repo = Rugged::Repository.new('/some/path')
repo.config = Rugged::Config.new("#{ENV['HOME']}/.gitconfig")
log.info repo.config['color.diff']
INFO color.diff:总是
我正在执行以下操作以显示未分级的更改:
repo.index.diff.each do |patch|
puts patch
end
我可以获得更漂亮的彩色差异吗?
答案 0 :(得分:2)
以下是我使用colorize gem:
的方法def diff
diff = @repo.index
.diff
.each_patch
.to_a
diff.each do |patch|
patch.to_s.split("\n").each do |line|
puts colorize_diff(line)
end
end
end
def colorize_diff(line)
color =
case line[0, 1]
when "+"
:green
when "-"
:red
when "@"
:cyan
end
color ? line.send(color) : line
end
答案 1 :(得分:1)
color.diff
是git面向用户工具的一个选项,可以在终端上添加颜色。坚固/ libgit2没有等价物,因为它们不处理用户界面或打印到终端而是生成数据。
如何在终端(或其他设备)上生成颜色是它自己的复杂问题,需要自己的库和常见问题的解决方法,它完全不在坚固/ libgit2的范围之内。
我建议在https://rubygems.org查找一个知道如何处理您感兴趣的终端的宝石。