<?xml version="1.0" encoding="UTF-8"?>
<feed
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:thr="http://purl.org/syndication/thread/1.0"
  xml:lang="en"
   >
  <title type="text">byronc bits</title>
  <subtitle type="text">breaking old technology, one bit at a time</subtitle>

  <updated>2012-01-11T04:59:47Z</updated>
  <generator uri="http://blogofile.com/">Blogofile</generator>

  <link rel="alternate" type="text/html" href="http://byron.theclarkfamily.name/blog" />
  <id>http://byron.theclarkfamily.name/blog/feed/atom/</id>
  <link rel="self" type="application/atom+xml" href="http://byron.theclarkfamily.name/blog/feed/atom/" />
  <entry>
    <author>
      <name></name>
      <uri>http://byron.theclarkfamily.name/blog</uri>
    </author>
    <title type="html"><![CDATA[_hg_ps1()]]></title>
    <link rel="alternate" type="text/html" href="http://byron.theclarkfamily.name/blog/2009/03/31/_hg_ps1()" />
    <id>http://byron.theclarkfamily.name/blog/2009/03/31/_hg_ps1()</id>
    <updated>2009-03-31T21:23:53Z</updated>
    <published>2009-03-31T21:23:53Z</published>
    <category scheme="http://byron.theclarkfamily.name/blog" term="mercurial" />
    <category scheme="http://byron.theclarkfamily.name/blog" term="bash" />
    <summary type="html"><![CDATA[_hg_ps1()]]></summary>
    <content type="html" xml:base="http://byron.theclarkfamily.name/blog/2009/03/31/_hg_ps1()"><![CDATA[
<p>In honor of the <a href="http://mail.python.org/pipermail/python-dev/2009-March/087931.html">decision</a>
to move Python development to <a href="http://www.selenic.com/mercurial">Mercurial</a>, I
decided to write something helpful.  I've found <code>__git_ps1()</code> to be incredibly
useful, so, here's my take on <code>_hg_ps1()</code>:</p>


<div class="pygments_tomorrow-night"><pre>_hg_root<span class="o">()</span>
<span class="o">{</span>
    <span class="nb">local </span><span class="nv">basedir</span><span class="o">=</span><span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>

    <span class="k">while</span> <span class="o">[</span> <span class="s1">&#39;/&#39;</span> !<span class="o">=</span> <span class="s2">&quot;${basedir}&quot;</span> <span class="o">]</span>; <span class="k">do</span>
<span class="k">        if</span> <span class="o">[</span> -d <span class="s2">&quot;${basedir}/.hg&quot;</span> <span class="o">]</span>; <span class="k">then</span>
<span class="k">            </span><span class="nb">break</span>;
        <span class="k">fi</span>

<span class="k">        </span><span class="nv">basedir</span><span class="o">=</span><span class="s2">&quot;$(readlink -f &quot;</span><span class="k">${</span><span class="nv">basedir</span><span class="k">}</span>/..<span class="s2">&quot;)&quot;</span>
    <span class="k">done</span>

    <span class="o">[</span> <span class="s1">&#39;/&#39;</span> <span class="o">==</span> <span class="s2">&quot;${basedir}&quot;</span> <span class="o">]</span> <span class="o">||</span> <span class="nb">echo</span> -n <span class="s2">&quot;${basedir}&quot;</span>
<span class="o">}</span>

_hg_ps1<span class="o">()</span>
<span class="o">{</span>
    <span class="nb">local </span><span class="nv">g</span><span class="o">=</span><span class="k">$(</span>_hg_root<span class="k">)</span>
    <span class="k">if</span> <span class="o">[</span> -n <span class="s2">&quot;${g}&quot;</span> <span class="o">]</span>; <span class="k">then</span>
<span class="k">        </span><span class="nb">local </span>branch

        <span class="nv">branch</span><span class="o">=</span><span class="k">$(</span>hg branch<span class="k">)</span>
        <span class="k">if</span> <span class="o">[</span> -f <span class="s2">&quot;${g}/.hg/bookmarks.current&quot;</span> <span class="o">]</span>; <span class="k">then</span>
<span class="k">            </span><span class="nv">branch</span><span class="o">=</span><span class="s2">&quot;$(&lt; &quot;</span><span class="k">${</span><span class="nv">g</span><span class="k">}</span>/.hg/bookmarks.current<span class="s2">&quot;):${branch}&quot;</span>
        <span class="k">fi</span>

<span class="k">        if</span> <span class="o">[</span> -n <span class="s2">&quot;${1-}&quot;</span> <span class="o">]</span>; <span class="k">then</span>
<span class="k">            </span><span class="nb">printf</span> <span class="s2">&quot;$1&quot;</span> <span class="s2">&quot;${branch}&quot;</span>
        <span class="k">else</span>
<span class="k">            </span><span class="nb">printf</span> <span class="s2">&quot; (%s)&quot;</span> <span class="s2">&quot;${branch}&quot;</span>
        <span class="k">fi</span>
<span class="k">    fi</span>
<span class="o">}</span>
</pre></div>




<p>Yes, I know that the <code>hg root</code> command does the same thing as my <code>_hg_root()</code>,
but it felt slow running mercurial before printing each prompt.  The only
thing that's missing is showing when merges are in progress. I'll try to add
that the next time I need to do a manual merge.</p>

<p><em>Update:</em> It seems that some of my repositories don't have a <code>.hg/branch</code> file
so I'm calling <code>hg branch</code> for that info.  Also, the <code>readlink</code> line in
<code>_hg_root()</code> did not properly handle spaces.</p>
]]></content>
  </entry>
</feed>

