title: What is git staging and why does Hg *ostensibly* not support it?
body: <p>The <a href="https://www.mercurial-scm.org/wiki/GitConcepts#Git.27s_staging_area" rel="noreferrer">Hg docs</a> state that <code>hg</code> doesn't support an equivalent to git's index out of the box and suggests using extensions (record or mq) for similar behaviour.</p>
  
  <p>First, I have very little field experience with <code>git</code>, so let me state my understanding of the concept of staging in git: </p>
  
  <ul>
  <li>There's the working copy, containing a number of changed files, each having a number of changed chunks.</li>
  <li>The user then (maybe repeatedly) uses <code>git add</code> to select which files will be committed. </li>
  <li>Alternatively, use <code>git add -p</code> to select only some of the chunks in a file to later be committed.</li>
  <li>Do a <code>git commit</code> to add the previously selected changes to the repository.</li>
  </ul>
  
  <p>So the whole <code>staging area</code>, to me, is a pompous name for a selection of which of the changes in the working copy will make it in the next commit.</p>
  
  <p>If I'm not completely off on that, then, why does everyone, including the official documentation, state that Mercurial does not support this? </p>
  
  <p>I'm asking, because the exact workflow above is <em>trivial</em> in TortoiseHg:</p>
  
  <p><img src="https://i.stack.imgur.com/zmRKR.png" alt="enter image description here"></p>
  
  <ul>
  <li>in the left pane - select whole files to include in the commit</li>
  <li>in the right bottom pane - select single chunks to include</li>
  <li>hit 'Commit'. </li>
  </ul>
  
  <p>I don't know what <code>hg</code> commands TortoiseHg uses, but then again, <em>I never needed to care</em>. (It doesn't make use of any extension for this AFAICT)</p>
  
  <p>Is there more to the <code>git</code> concept of staging that I'm missing?</p>