You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

130 lines
8.2 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>YBlog - A more convenient diff</title>
<meta name="keywords" content="diff, git, colors" />
<link rel="shortcut icon" type="image/x-icon" href="../../../../Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/css/y.css" />
<link rel="stylesheet" type="text/css" href="/css/legacy.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="apple-touch-icon" href="../../../../Scratch/img/about/FlatAvatar@2x.png" />
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- IndieAuth -->
<link href="https://twitter.com/yogsototh" rel="me">
<link href="https://github.com/yogsototh" rel="me">
<link href="mailto:yann.esposito@gmail.com" rel="me">
<link rel="pgpkey" href="../../../../pubkey.txt">
</head>
<body lang="en" class="article">
<div id="content">
<div id="header">
<div id="choix">
<span id="choixlang">
<a href="../../../../Scratch/fr/blog/A-more-convenient-diff/">French</a>
</span>
<span class="tomenu"><a href="#navigation">↓ Menu ↓</a></span>
<span class="flush"></span>
</div>
</div>
<div id="titre">
<h1>A more convenient diff</h1>
</div>
<div class="flush"></div>
<div id="afterheader" class="article">
<div class="corps">
<p>Diff is a very useful tool. But it is not so easy to read for us, simple mortal.</p>
<p>This is why, when you use <code>git</code> it will use a better formatting and colorize it.</p>
<p>Here is the script I use when I want to use human readable <code>diff</code> à la git.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode zsh"><code class="sourceCode zsh"><a class="sourceLine" id="cb1-1" title="1"><span class="co">#!/usr/bin/env zsh</span></a>
<a class="sourceLine" id="cb1-2" title="2"></a>
<a class="sourceLine" id="cb1-3" title="3"><span class="co"># Load colors helpers</span></a>
<a class="sourceLine" id="cb1-4" title="4"><span class="kw">autoload</span> -U colors <span class="kw">&amp;&amp;</span> colors</a>
<a class="sourceLine" id="cb1-5" title="5"></a>
<a class="sourceLine" id="cb1-6" title="6"><span class="kw">function</span><span class="fu"> colorize_diff</span> <span class="kw">{</span></a>
<a class="sourceLine" id="cb1-7" title="7"> <span class="kw">while</span> <span class="kw">read</span> <span class="ot">line</span>; <span class="kw">do</span></a>
<a class="sourceLine" id="cb1-8" title="8"> <span class="kw">case</span> <span class="ot">${line[0]}</span><span class="kw"> in</span></a>
<a class="sourceLine" id="cb1-9" title="9"> +<span class="kw">)</span> <span class="kw">print</span> -n <span class="ot">$fg[green]</span><span class="kw">;;</span></a>
<a class="sourceLine" id="cb1-10" title="10"> -<span class="kw">)</span> <span class="kw">print</span> -n <span class="ot">$fg[red]</span><span class="kw">;;</span></a>
<a class="sourceLine" id="cb1-11" title="11"> @<span class="kw">)</span> <span class="co"># Display in cyan the @@ positions @@</span></a>
<a class="sourceLine" id="cb1-12" title="12"> <span class="kw">if [[</span> <span class="ot">${line[1]}</span> <span class="ot">=</span> <span class="st">'@'</span><span class="kw"> ]]</span>; <span class="kw">then</span></a>
<a class="sourceLine" id="cb1-13" title="13"> <span class="ot">line=$(</span><span class="kw">print</span> <span class="ot">$line</span> <span class="kw">|</span> <span class="kw">perl</span> -pe <span class="st">'s#(\@\@[^\@]*\@\@)(.*)$#'</span><span class="ot">$fg[cyan]</span><span class="st">'$1'</span><span class="ot">$reset_color</span><span class="st">'$2#'</span><span class="ot">)</span></a>
<a class="sourceLine" id="cb1-14" title="14"> <span class="kw">fi;;</span></a>
<a class="sourceLine" id="cb1-15" title="15"></a>
<a class="sourceLine" id="cb1-16" title="16"> <span class="kw">esac</span></a>
<a class="sourceLine" id="cb1-17" title="17"> <span class="kw">print</span> -- <span class="ot">$line</span></a>
<a class="sourceLine" id="cb1-18" title="18"> <span class="kw">print</span> -n <span class="ot">$reset_color</span></a>
<a class="sourceLine" id="cb1-19" title="19"> <span class="kw">done</span></a>
<a class="sourceLine" id="cb1-20" title="20"><span class="kw">}</span></a>
<a class="sourceLine" id="cb1-21" title="21"></a>
<a class="sourceLine" id="cb1-22" title="22"><span class="kw">diff</span> -u <span class="ot">$*</span> <span class="kw">|</span> colorize_diff</a></code></pre></div>
</div>
<div id="afterarticle">
<div id="social">
<a href="/rss.xml" target="_blank" rel="noopener noreferrer nofollow" class="social">RSS</a>
·
<a href="https://twitter.com/home?status=http%3A%2F%2Fyannesposito.com/Scratch/en/blog/A-more-convenient-diff/%20via%20@yogsototh" target="_blank" rel="noopener noreferrer nofollow" class="social">Tweet</a>
·
<a href="http://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fyannesposito.com/Scratch/en/blog/A-more-convenient-diff/" target="_blank" rel="noopener noreferrer nofollow" class="social">FB</a>
<br />
<a class="message" href="../../../../Scratch/en/blog/Social-link-the-right-way/">These social sharing links preserve your privacy</a>
</div>
<div id="navigation">
<a href="../../../../">Home</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/en/blog">Blog</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/en/softwares">Softwares</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/en/about">About</a>
</div>
<div id="totop"><a href="#header">↑ Top ↑</a></div>
<div id="bottom">
<div>
Published on 2011-08-17
</div>
<div>
<a href="https://twitter.com/yogsototh">Follow @yogsototh</a>
</div>
<div>
<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US">Yann Esposito©</a>
</div>
<div>
Done with
<a href="http://www.vim.org" target="_blank" rel="noopener noreferrer nofollow"><strike>Vim</strike></a>
<a href="http://spacemacs.org" target="_blank" rel="noopener noreferrer nofollow">spacemacs</a>
<span class="pala">&amp;</span>
<a href="http://nanoc.ws" target="_blank" rel="noopener noreferrer nofollow"><strike>nanoc</strike></a>
<a href="http://jaspervdj.be/hakyll" target="_blank" rel="noopener noreferrer nofollow">Hakyll</a>
</div>
<hr />
<div style="max-width: 100%">
<a href="https://cardanohub.org">
<img src="../../../../Scratch/img/ada-logo.png" class="simple" style="height: 16px;
border-radius: 50%;
vertical-align:middle;
display:inline-block;" />
ADA:
</a>
<code style="display:inline-block;
word-wrap:break-word;
text-align: left;
vertical-align: top;
max-width: 85%;">
DdzFFzCqrhtAvdkmATx5Fm8NPJViDy85ZBw13p4XcNzVzvQg8e3vWLXq23JQWFxPEXK6Kvhaxxe7oJt4VMYHxpA2vtCFiP8fziohN6Yp
</code>
</div>
</div>
</div>
</div>
</div>
</body>
</html>