<!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="Content-Type" content="text/html; charset=utf-8" /> <title>3. What’s New — 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"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', VERSION: '4.7.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </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> <link rel="index" title="Index" href="genindex.html" /> <link rel="search" title="Search" href="search.html" /> <link rel="top" title="TortoiseHg 4.7.0 documentation" href="index.html" /> <link rel="next" title="4. A Quick Start Guide to TortoiseHg" href="quick.html" /> <link rel="prev" title="2. Introduction" href="intro.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 role="document"> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <div class="section" id="module-whatsnew.dialog"> <span id="what-s-new"></span><h1>3. What’s New<a class="headerlink" href="#module-whatsnew.dialog" title="Permalink to this headline">¶</a></h1> <div class="section" id="tortoisehg-2-0"> <h2>3.1. TortoiseHg 2.0<a class="headerlink" href="#tortoisehg-2-0" title="Permalink to this headline">¶</a></h2> <div class="section" id="philosophy"> <h3>3.1.1. Philosophy<a class="headerlink" href="#philosophy" title="Permalink to this headline">¶</a></h3> <p>The following philosophical changes were made between TortoiseHg 1.0 and TortoiseHg 2.0.</p> <div class="section" id="workbench"> <h4>3.1.1.1. Workbench<a class="headerlink" href="#workbench" title="Permalink to this headline">¶</a></h4> <p>We wanted a single ‘TortoiseHg’ application which can access nearly all TortoiseHg (and Mercurial) functionality and that could be launched by a desktop or start menu shortcut. So we developed the Workbench application.</p> <p>The Workbench can support multiple repositories open at a time via “Repo Tabs” across the top of the main window.</p> <p>Each repository tab supports multiple “Task Tabs” beneath its graph splitter. These task tabs are switchable via icons on the side of the Workbench or via application menus. Available task tabs include a changeset browser, a commit tool, a history search widget, and a sync widget.</p> <p>Also available are two dockable widgets - a <em>Repository Registry</em> which lists all known repositories on your local machine and an <em>Output Log Window</em> which displays running command lines and their output and can also function as a minimal shell.</p> </div> <div class="section" id="showing-mercurial-command-lines"> <h4>3.1.1.2. Showing Mercurial command lines<a class="headerlink" href="#showing-mercurial-command-lines" title="Permalink to this headline">¶</a></h4> <p>In an effort to educate users on Mercurial’s command interface, nearly all commands are executed in the log window, displaying the full command line and Mercurial’s output (progress indication is provided by progress bars inside the Workbench status bar). The few tools that do not use a command log window will generally display the command line they execute.</p> </div> <div class="section" id="resolve-tool-deliberate-merges"> <h4>3.1.1.3. Resolve tool, deliberate merges<a class="headerlink" href="#resolve-tool-deliberate-merges" title="Permalink to this headline">¶</a></h4> <p>TortoiseHg 2.0 introduces a resolve dialog for resolving conflicted file merges. It shows the users all the files that require resolution and those files that have been resolved, allowing merges to be verified.</p> <p>As supported by Mercurial’s resolve command, individual file merges may be restarted as many times as necessary to get the merge correctly completed.</p> <p>By default, TortoiseHg will use the resolve dialog to resolve all conflicts, including trivial conflicts. It instructs Mercurial to never merge files automatically, deferring their resolution until the resolve dialog can be launched. This is true for merges, update commands that require content merges, rebases, and backouts.</p> </div> <div class="section" id="shelve-improved"> <h4>3.1.1.4. Shelve Improved<a class="headerlink" href="#shelve-improved" title="Permalink to this headline">¶</a></h4> <p>TortoiseHg 2.0 includes a new shelve tool which is capable of moving changes between your working directory, a shelf file, or an unapplied MQ patch.</p> </div> <div class="section" id="revision-sets"> <h4>3.1.1.5. Revision Sets<a class="headerlink" href="#revision-sets" title="Permalink to this headline">¶</a></h4> <p>We have replaced the filter bar of the Repository Explorer with a revision set bar in the Workbench. Revision sets were introduced in Mercurial 1.6 and have been integrated with an increasing number of commands in each subsequent release. They are a powerful query language for finding and specifying revisions in your repository.</p> <p>The Workbench also includes a revision set editor which both teaches the user the available keywords and their arguments, and offers brace matching, auto-completions, and other editing amenities.</p> <p>In TortoiseHg 2.0, incoming and outgoing changesets are visualized as revision sets. In previous versions they were represented by graph annotations.</p> </div> </div> <div class="section" id="technology"> <h3>3.1.2. Technology<a class="headerlink" href="#technology" title="Permalink to this headline">¶</a></h3> <div class="section" id="qt-and-pyqt"> <h4>3.1.2.1. Qt and PyQt<a class="headerlink" href="#qt-and-pyqt" title="Permalink to this headline">¶</a></h4> <p>TortoiseHg 2.0 has been a near rewrite of all of the tools and dialogs taking advantage of Digia’s excellent <a class="reference external" href="https://www.qt.io/">Qt</a> UI framework and Riverbank Computing’s fine <a class="reference external" href="https://www.riverbankcomputing.com/software/pyqt/intro">PyQt</a> Python bindings.</p> </div> <div class="section" id="qscintilla2"> <h4>3.1.2.2. QScintilla2<a class="headerlink" href="#qscintilla2" title="Permalink to this headline">¶</a></h4> <p>TortoiseHg uses the <a class="reference external" href="http://pyqt.sourceforge.net/Docs/QScintilla2/">QScintilla2</a> editing component extensively to:</p> <ul class="simple"> <li>display file contents and diffs with syntax highlighting</li> <li>display annotations with syntax highlighting</li> <li>edit commit messages with auto-completion of filenames and source symbols</li> <li>edit revision set strings with brace matching and auto-completion</li> </ul> <p>One can configure the QScintilla2 tab stop parameter using the settings tool, while white space visibility and wrap are controlled by context menus.</p> </div> <div class="section" id="polling-of-repository-state-and-config"> <h4>3.1.2.3. Polling of repository state and config<a class="headerlink" href="#polling-of-repository-state-and-config" title="Permalink to this headline">¶</a></h4> <p>The Workbench and other applications like the commit tool will poll repositories on your local machine to detect changes made to either the repository or their configuration files, and automatically update running applications as necessary. Nearly all configuration changes are effective immediately, with the notable exception of enabling or disabling Mercurial extensions. Changes to extension configuration generally require application restarts before they take effect.</p> </div> <div class="section" id="immediate-bug-report-dialogs"> <h4>3.1.2.4. Immediate bug report dialogs<a class="headerlink" href="#immediate-bug-report-dialogs" title="Permalink to this headline">¶</a></h4> <p>Prior to TortoiseHg 2.0, bug reports were written to stderr as they occured and stderr was captured and scanned at exit to report those errors to the user. While we gained many valuable bug reports via this mechanism, there was rarely any context on what operations caused these bugs.</p> <p>In TortoiseHg 2.0, we have created a generic exception handler that catches all Python exceptions that are otherwise unhandled by application code. This allows us to display exception tracebacks almost immediately after they occur (after a short timeout to collect consecutive exceptions together). The hope is that future bug reports will contain better reproduction instructions, or at least context for the tracebacks.</p> </div> <div class="section" id="demand-loaded-graph"> <h4>3.1.2.5. Demand loaded graph<a class="headerlink" href="#demand-loaded-graph" title="Permalink to this headline">¶</a></h4> <p>To keep refreshes as efficient as possible, the graphing algorithm will only load a couple hundred revisions initially during a refresh, and then load further revisions only when those revisions are required to be displayed. You will notice scrolling through the graph is jerky, these are bulk loads of revisions into the graph. To avoid this jerkiness you can force TortoiseHg to load all revisions in the graph via the <span class="guilabel">Load all revisions</span> option from the <span class="guilabel">View</span> menu.</p> </div> </div> </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> <h3><a href="index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">3. What’s New</a><ul> <li><a class="reference internal" href="#tortoisehg-2-0">3.1. TortoiseHg 2.0</a><ul> <li><a class="reference internal" href="#philosophy">3.1.1. Philosophy</a><ul> <li><a class="reference internal" href="#workbench">3.1.1.1. Workbench</a></li> <li><a class="reference internal" href="#showing-mercurial-command-lines">3.1.1.2. Showing Mercurial command lines</a></li> <li><a class="reference internal" href="#resolve-tool-deliberate-merges">3.1.1.3. Resolve tool, deliberate merges</a></li> <li><a class="reference internal" href="#shelve-improved">3.1.1.4. Shelve Improved</a></li> <li><a class="reference internal" href="#revision-sets">3.1.1.5. Revision Sets</a></li> </ul> </li> <li><a class="reference internal" href="#technology">3.1.2. Technology</a><ul> <li><a class="reference internal" href="#qt-and-pyqt">3.1.2.1. Qt and PyQt</a></li> <li><a class="reference internal" href="#qscintilla2">3.1.2.2. QScintilla2</a></li> <li><a class="reference internal" href="#polling-of-repository-state-and-config">3.1.2.3. Polling of repository state and config</a></li> <li><a class="reference internal" href="#immediate-bug-report-dialogs">3.1.2.4. Immediate bug report dialogs</a></li> <li><a class="reference internal" href="#demand-loaded-graph">3.1.2.5. Demand loaded graph</a></li> </ul> </li> </ul> </li> </ul> </li> </ul> <div class="relations"> <h3>Related Topics</h3> <ul> <li><a href="index.html">Documentation overview</a><ul> <li>Previous: <a href="intro.html" title="previous chapter">2. Introduction</a></li> <li>Next: <a href="quick.html" title="next chapter">4. A Quick Start Guide to TortoiseHg</a></li> </ul></li> </ul> </div> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="_sources/whatsnew.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3>Quick search</h3> <form class="search" action="search.html" method="get"> <div><input type="text" name="q" /></div> <div><input type="submit" value="Go" /></div> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="footer"> ©2010-2018, Steve Borho and others. | Powered by <a href="http://sphinx-doc.org/">Sphinx 1.4.9</a> & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a> | <a href="_sources/whatsnew.txt" rel="nofollow">Page source</a> </div> </body> </html>