Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > 67810d03ada515381702f7b70888f800 > files > 512

tortoisehg-4.9.1-1.mga7.noarch.rpm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>7. Patches &#8212; TortoiseHg 4.7.0 documentation</title>
    <link rel="stylesheet" href="_static/tortoisehg.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <script type="text/javascript" src="_static/language_data.js"></script>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="8. Extensions" href="extensions.html" />
    <link rel="prev" title="6. Settings" href="settings.html" />
   
  <link rel="stylesheet" href="_static/custom.css" type="text/css" />
  
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />

  </head><body>
  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  <div class="section" id="module-patches">
<span id="patches"></span><h1>7. Patches<a class="headerlink" href="#module-patches" title="Permalink to this headline">¶</a></h1>
<div class="section" id="defining-a-patch">
<h2>7.1. Defining a patch<a class="headerlink" href="#defining-a-patch" title="Permalink to this headline">¶</a></h2>
<p>These links are recommended reading for understanding the history and nature
of patches and how they can be used with Mercurial.</p>
<ul class="simple">
<li><a class="reference external" href="https://tortoisehg.bitbucket.io/hgbook/1.7/managing-change-with-mercurial-queues.html#sec:mq:patch-mgmt">The patch management problem</a></li>
<li><a class="reference external" href="https://tortoisehg.bitbucket.io/hgbook/1.7/managing-change-with-mercurial-queues.html#sec:mq:patch">Understanding patches</a></li>
<li><a class="reference external" href="https://tortoisehg.bitbucket.io/hgbook/1.7/managing-change-with-mercurial-queues.html#sec:mq:adv-patch">More about patches</a></li>
</ul>
</div>
<div class="section" id="pitfalls">
<h2>7.2. Pitfalls<a class="headerlink" href="#pitfalls" title="Permalink to this headline">¶</a></h2>
<p>The standard patch format cannot describe binary files, renames, copies,
or permission changes.  If your patch needs to record any of those
things, you will need to enable <strong>git</strong> patches via:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">diff</span><span class="p">]</span>
<span class="n">git</span><span class="o">=</span><span class="kc">True</span>
</pre></div>
</div>
<p>Mercurial 1.5 improves its behavior in this regard.  It will warn you
when git diffs are required, or sometimes upgrade to the git format
automatically.  See also the
<a class="reference external" href="https://www.mercurial-scm.org/doc/hgrc.5.html#diff">diff section</a> of
the hgrc documentation.</p>
<p>Mercurial’s patch routines do not deal well with mixed EOLN between
source files and patches.  The <strong>patch.eol</strong> setting was introduced in
1.3 to improve this situation:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">patch</span><span class="p">]</span>
<span class="n">eol</span> <span class="o">=</span> <span class="n">auto</span> <span class="c1">#strict, lf, or crlf</span>
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">When eol is set to <em>auto</em>, the patching engine will preserve the line
endings of the patched file regardless of the line endings in the
patch itself.  You almost always want eol to be configured to <em>auto</em>.
The only downside is that you cannot make a patch that changes the
line endings of a source file.</p>
</div>
<p>See also the <a class="reference external" href="https://www.mercurial-scm.org/doc/hgrc.5.html#patch">patch section</a>
of the hgrc documentation.</p>
<p>Applying a patch is not a foolproof operation.  If the source file has
diverged from the file that was used to create the patch, there may be
conflicts during the patch application.  These are written to a file
with an .rej extension.  TortoiseHg 2.0 includes a <strong class="command">thg
rejects</strong> command that can aid in the merging of the rejected chunks into
the source file.</p>
</div>
<div class="section" id="export-patches">
<h2>7.3. Export Patches<a class="headerlink" href="#export-patches" title="Permalink to this headline">¶</a></h2>
<div class="section" id="changeset">
<h3>7.3.1. Changeset<a class="headerlink" href="#changeset" title="Permalink to this headline">¶</a></h3>
<p>To export a changeset as a patch file, use the changeset context menu of
the Workbench to select <span class="menuselection">Export ‣ Export Patch</span>.  It
writes the changeset to a file in the repository root folder.</p>
</div>
<div class="section" id="changeset-ranges">
<h3>7.3.2. Changeset Ranges<a class="headerlink" href="#changeset-ranges" title="Permalink to this headline">¶</a></h3>
<p>Select the start and end of a range of changesets in the Workbench and
open the special revision range context menu.  From this menu you can
generate patches, generate a bundle, send emails, or visually diff the
accumulated changes.</p>
<p>This is a very powerful feature and there is no restriction on the base
and target changesets you can select.</p>
</div>
<div class="section" id="email">
<h3>7.3.3. Email<a class="headerlink" href="#email" title="Permalink to this headline">¶</a></h3>
<div class="figure" id="id1">
<img alt="Email dialog" src="_images/email.png" />
<p class="caption"><span class="caption-text">Email dialog of Workbench</span></p>
</div>
<p>To send a changeset as an email, use the changeset context menu of the
Workbench. <span class="menuselection">Export ‣ Email Patch</span>.  This opens the
e-mail dialog for this single changeset.</p>
<p>To send a changeset range, use the changeset range selection feature of
the Workbench and select <span class="menuselection">Email selected…</span> or
<span class="menuselection">Email DAG range…</span>.</p>
<p>Lastly, you can use the <span class="guilabel">Email</span> button on the sync tab of the
Workbench to email all outgoing changes to the selected remote
repository.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">You must configure
<a class="reference external" href="https://www.mercurial-scm.org/doc/hgrc.5.html#smtp">SMTP</a>
to send patches via email</p>
</div>
</div>
</div>
<div class="section" id="import-patches">
<h2>7.4. Import Patches<a class="headerlink" href="#import-patches" title="Permalink to this headline">¶</a></h2>
<div class="figure" id="id2">
<img alt="Import tool" src="_images/import.png" />
<p class="caption"><span class="caption-text">Import dialog of the WorkBench</span></p>
</div>
<p>The import dialog can be opened from the <span class="guilabel">Repository</span> menu of
the Workbench, or via <strong class="command">thg import</strong>.  The dialog supports file
and directory drag and drop.</p>
<p>You have the choice of importing directly into the repository, the
working folder, a shelf file, or your patch queue.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Importing a patch requires a clean working directory state.  You
must commit, revert, or shelve changes before importing a patch.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If a patch does not import itself cleanly into the repository, the
recommended recourse is to import the patch into your patch queue
(qimport) and then qpush the patch.  This uses TortoiseHg patch
rejection dialog and preserves the meta-data in the patch header.
Do not forget to qrefresh after resolving the rejected chunks.</p>
</div>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">If the patch you are importing does not have a commit
message, Mercurial will try to launch your editor, just as if you
had tried to import the patch from the command line.  Your ui.editor
needs to be a GUI app to make this work correctly.</p>
</div>
</div>
<div class="section" id="patch-queues">
<h2>7.5. Patch Queues<a class="headerlink" href="#patch-queues" title="Permalink to this headline">¶</a></h2>
<div class="figure" id="id3">
<img alt="Patch Queue in Workbench" src="_images/patchqueue.png" />
<p class="caption"><span class="caption-text">A patch queue in the repository graph</span></p>
</div>
<p>When MQ is enabled, several Workbench features are exposed. Context menu
options are exposed in the changeset menus, your patch queue is graphed
together with your repository’s history, and a Patch Queue is activated.</p>
<p>Double clicking on an unapplied patch, an applied patch other than the
current qtip, or the qparent triggers a qgoto command; making the double
clicked revision the current patch.  Double clicking on any other
revision will trigger a visual diff of that revision.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The Workbench must be restarted after enabling or disabling the MQ
extension in a repository.  This is true of most extensions.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">It is recommended to learn the MQ extension before using the MQ
features of the Workbench.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified">Changed in version 2.10: </span>The <span class="guilabel">Patch Queue</span> task tab has been superseded by the
<span class="guilabel">Commit</span> task tab and the <span class="guilabel">Patch Queue</span> dock.</p>
</div>
</div>
<div class="section" id="patch-rejects">
<h2>7.6. Patch Rejects<a class="headerlink" href="#patch-rejects" title="Permalink to this headline">¶</a></h2>
<p>As explained previously, patches are not guaranteed to apply cleanly to
their intended source files.  Prior to TortoiseHg 2.0, the only recourse
available when patch chunks were rejected was to open the source file
and the rejects file in an editor and manually fixup the rejected
chunks.</p>
<p>TortoiseHg 2.0 introduces a dialog that makes this a little bit easier.
If the shelve tool detects chunk rejections, it offers to open the
rejected chunks in the rejects editor.  The MQ tool also does this for
qpush commands.</p>
<div class="figure" id="id4">
<img alt="Patch Rejects Editor" src="_images/rejects.png" />
<p class="caption"><span class="caption-text">Resolve rejected patch chunks</span></p>
</div>
<p>The rejects editor is very basic.  Your source file is opened in a
QScintilla2 window for edit.  Below the source file is the list of
chunks that failed to apply to this file.  When you click on a chunk in
the list the editor jumps to the line where the chunk context was
supposed to match.  It is up to you to figure out why the chunk did not
apply and to resolve it (perhaps even by ignoring the chunk).  The
resolved/unresolved states are for your own book keeping, so you know
when all of the chunks have been dealt with.  Once you have marked all
of the chunks resolved, the <span class="guilabel">Save</span> button will become
sensitive.</p>
</div>
</div>


          </div>
          
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="index.html">
              <img class="logo" src="_static/thg_logo_92x50.png" alt="Logo"/>
            </a></p>
<h1 class="logo"><a href="index.html">TortoiseHg</a></h1>








<h3>Navigation</h3>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="preface.html">1. Preface</a></li>
<li class="toctree-l1"><a class="reference internal" href="intro.html">2. Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="whatsnew.html">3. What’s New</a></li>
<li class="toctree-l1"><a class="reference internal" href="quick.html">4. A Quick Start Guide to TortoiseHg</a></li>
<li class="toctree-l1"><a class="reference internal" href="daily.html">5. TortoiseHg in daily use</a></li>
<li class="toctree-l1"><a class="reference internal" href="settings.html">6. Settings</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">7. Patches</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#defining-a-patch">7.1. Defining a patch</a></li>
<li class="toctree-l2"><a class="reference internal" href="#pitfalls">7.2. Pitfalls</a></li>
<li class="toctree-l2"><a class="reference internal" href="#export-patches">7.3. Export Patches</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#changeset">7.3.1. Changeset</a></li>
<li class="toctree-l3"><a class="reference internal" href="#changeset-ranges">7.3.2. Changeset Ranges</a></li>
<li class="toctree-l3"><a class="reference internal" href="#email">7.3.3. Email</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#import-patches">7.4. Import Patches</a></li>
<li class="toctree-l2"><a class="reference internal" href="#patch-queues">7.5. Patch Queues</a></li>
<li class="toctree-l2"><a class="reference internal" href="#patch-rejects">7.6. Patch Rejects</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="extensions.html">8. Extensions</a></li>
<li class="toctree-l1"><a class="reference internal" href="nonhg.html">9. Use with other VCS systems</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">10. Frequently Asked Questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="debugging.html">11. Debugging</a></li>
</ul>

<div class="relations">
<h3>Related Topics</h3>
<ul>
  <li><a href="index.html">Documentation overview</a><ul>
      <li>Previous: <a href="settings.html" title="previous chapter">6. Settings</a></li>
      <li>Next: <a href="extensions.html" title="next chapter">8. Extensions</a></li>
  </ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>








        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="footer">
      &copy;2010-2019, Steve Borho and others.
      
      |
      Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.4</a>
      &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
      
      |
      <a href="_sources/patches.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>