{"id":5776,"date":"2022-11-21T11:42:26","date_gmt":"2022-11-21T17:42:26","guid":{"rendered":"https:\/\/www.logikalsolutions.com\/wordpress\/?p=5776"},"modified":"2023-11-27T17:53:05","modified_gmt":"2023-11-27T23:53:05","slug":"mercurial-2","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/","title":{"rendered":"I Hate Mercurial"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.mercurial-scm.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mercurial<\/a> is one of those source control management systems that a token few people like and the vast majority of the world shuns. Most of us shun it for good reason. Git, on the other hand, is one of those source control management systems than many people like, and it is for no good reason. <\/p>\n\n\n\n<p>Git is not a good SCM, it&#8217;s a wild wild west SCM. To use it for a medical device project (and pass audit) you have to have it so locked down the only way to utilize it is via <a href=\"https:\/\/www.gitkraken.com\" target=\"_blank\" rel=\"noreferrer noopener\">GitKraken<\/a> or some other GUI front end. People hate <a href=\"https:\/\/www.perforce.com\/p\/vcs\/free-version-control?utm_leadsource=cpc-googleadwords&amp;utm_source=googleadwords&amp;utm_medium=cpc&amp;utm_campaign=Branded-NA&amp;utm_adgroup=Perforce&amp;gclid=EAIaIQobChMI4qPa7MO_-wIVDhitBh0ZMQhzEAAYASAAEgJTHvD_BwE\" target=\"_blank\" rel=\"noreferrer noopener\">Perforce<\/a> products because they aren&#8217;t the wild wild west of SCM. When you work in the medical device world you will find Perforce products everywhere. <\/p>\n\n\n\n<p>No, this is not the first time I&#8217;ve written about Mercurial on this blog. There have been <a href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial\/\" target=\"_blank\" rel=\"noreferrer noopener\">other &#8220;instructive&#8221; posts<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Marketing<\/h2>\n\n\n\n<p>Hopefully you will all live long enough to learn this truth about marketing.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"497\" height=\"138\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-marketing.png\" alt=\"\" class=\"wp-image-5778\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-marketing.png 497w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-marketing-300x83.png 300w\" sizes=\"(max-width: 497px) 100vw, 497px\" \/><\/figure>\n<\/div>\n\n\n<p>If something actually is easy and intuitive you don&#8217;t have to put it in your marketing literature. I&#8217;ve worked in advertising, this is a stupidity hook. Apple and Microsoft use stupidity hooks all of the time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Branches by Any Other Name<\/h2>\n\n\n\n<p>I don&#8217;t care what you are working on, there will come a time when you need to reset <em>way<\/em> back to a prior known working version. The wild wild west of Git tends to fork into a separate repository and then have you issue a pull request. At the point in time you do this you have failed your FDA audit. You took code outside of primary source control into some other unregulated source control. When the auditors get done with you don&#8217;t plan on being able to sit down for days.<\/p>\n\n\n\n<p>Mercurial has branches and revisions and many other things. What it doesn&#8217;t like is multiple heads. It also gets very difficult to tell what is actually in the HEAD based on the visual tools. Most other SCM products allow you to cleanly branch\/fork\/whatever within the primary SCM from a long ago point in time. Even the text based utilities will show you a proper revision tree. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Situation<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" width=\"1017\" height=\"622\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-sf-1.png\" alt=\"\" class=\"wp-image-5779\" style=\"width:966px;height:591px\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-sf-1.png 1017w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-sf-1-300x183.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-sf-1-768x470.png 768w\" sizes=\"(max-width: 1017px) 100vw, 1017px\" \/><figcaption class=\"wp-element-caption\">SourceForge Commit History<\/figcaption><\/figure>\n\n\n\n<p>My fork of Scintilla to support CopperSpice had hummed along nicely with the older version of Scintilla. In fact, a project unrelated to mine, named <a href=\"https:\/\/github.com\/dail8859\/NotepadNext\" target=\"_blank\" rel=\"noreferrer noopener\">NotepadNext<\/a> which used Qt and Scintilla had also hummed along nicely using basically the same version of Scintilla. Big dummy me decided to update to the latest version of Scintilla because a new release of <a href=\"https:\/\/sourceforge.net\/projects\/reddiamond\/\" target=\"_blank\" rel=\"noreferrer noopener\">RedDiamond<\/a> was close to finished.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The longest distance between any two points is a shortcut. The largest disasters in software are caused by an upgrade.<\/p>\n<cite>Roland Hughes<\/cite><\/blockquote>\n\n\n\n<p>That&#8217;s a mantra to live by boys and girls. Before I merged in the code the print preview functionality worked like this.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"708\" height=\"768\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-print-prev-001.png\" alt=\"\" class=\"wp-image-5780\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-print-prev-001.png 708w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-print-prev-001-277x300.png 277w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure>\n<\/div>\n\n\n<p>After the upgrade.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"708\" height=\"775\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-prev-1.png\" alt=\"\" class=\"wp-image-5781\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-prev-1.png 708w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-prev-1-274x300.png 274w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure>\n<\/div>\n\n\n<p>If your color scheme\/theme used a white background by default you would not see this.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"708\" height=\"775\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-prev-2.png\" alt=\"\" class=\"wp-image-5782\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-prev-2.png 708w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/scintilla-prev-2-274x300.png 274w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure>\n<\/div>\n\n\n<p>I&#8217;m not dissing Neil or the Scintilla project. Shit like this happens in an AGILE world. He&#8217;s done a phenom job creating the Scintilla editor module and it is the <a href=\"https:\/\/www.texteditors.org\/cgi-bin\/wiki.pl?ScintillaEditorFamily\" target=\"_blank\" rel=\"noreferrer noopener\">core of many editors<\/a> both free and commercial.<\/p>\n\n\n\n<p>I am dumping on Mercurial and it&#8217;s &#8220;intuitive&#8221; nature. This was one big merge as I was several full releases behind. I had also done other coding before this particular oopsie got noticed. Getting back to good is not a Mercurial strong suit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Back to Good<\/h2>\n\n\n\n<p>You know me, I came up via computer operations so I made a safety copy of the entire directory tree on a different disk drive. Then I tried every documented method of &#8220;getting back to a very old rev&#8221; <strong>and none of them worked.<\/strong> Mercurial kept complaining about multiple heads and other things. You see via the image labeled &#8220;SourceForge Commit History&#8221; that I needed to get back to rev 065115. Once I verified that was good, check it in, then start applying the history of changes one by one. Once you do something like<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"hg revert -a -C -r 065115\nhg branch print-issue\nhg addremove\nhg commit\nhg push --new-branch\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #FFCB6B\">hg<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">revert<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">-a<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">-C<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">-r<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #F78C6C\">065115<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">hg<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">branch<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">print-issue<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">hg<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">addremove<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">hg<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">commit<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">hg<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">push<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">--new-branch<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>That&#8217;s it, you are screwed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"889\" height=\"251\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-merge-001.png\" alt=\"\" class=\"wp-image-5783\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-merge-001.png 889w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-merge-001-300x85.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-merge-001-768x217.png 768w\" sizes=\"(max-width: 889px) 100vw, 889px\" \/><\/figure>\n\n\n\n<p>Am I going to spend 3+ days reading through Mercurial documentation to become one with the Mercurial &#8220;flows&#8221; to understand this? No. Neither are you! This is a common (*&amp;^)(*&amp;ing problem and the solution ought to be straight forward. If the syntax is &#8220;expert friendly&#8221; you should have a GUI. This not liking multiple heads leads Mercurial to get really discombobulated.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"968\" height=\"623\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-flow-bug-001.png\" alt=\"\" class=\"wp-image-5784\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-flow-bug-001.png 968w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-flow-bug-001-300x193.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-flow-bug-001-768x494.png 768w\" sizes=\"(max-width: 968px) 100vw, 968px\" \/><figcaption class=\"wp-element-caption\">After push of new branch<\/figcaption><\/figure>\n\n\n\n<p>That&#8217;s right, Mercurial put my change at the tip and the tree GUI makes you believe my header\/footer changes and all the stuff below are merged in safe and sound. <strong>Nope!<\/strong> Most definitely not in the local code. I&#8217;m back at 065115 with one more check-in to take out the compiler warning about no default on switch statements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Searching for Tools<\/h2>\n\n\n\n<p>One of the more humiliating kicks to the crotch with Mercurial is that every tool you want to use appears to be DEPRECATED. Fine. Then give us something that actually works! Don&#8217;t just pull a Republican &#8220;Defund ObamaCare&#8221; without actually having something to replace it with. Today we still have ObamaCare and the Open Enrollment period is going on right now. Today we still have the DEPRECATED tools and that is what everyone is using.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">hg view<\/h3>\n\n\n\n<p>The first deprecated tool you need is also one of the most useful, hg view. It is installed by default but not activated because they don&#8217;t want to add tk toolkit as a dependency. Your first step is to install tk 8.5 or higher.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"898\" height=\"78\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/install-tk-8-5.png\" alt=\"\" class=\"wp-image-5785\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/install-tk-8-5.png 898w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/install-tk-8-5-300x26.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/install-tk-8-5-768x67.png 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/figure>\n\n\n\n<p>Then you have to do some work in a terminal<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"616\" height=\"182\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/find-hgk.png\" alt=\"\" class=\"wp-image-5786\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/find-hgk.png 616w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/find-hgk-300x89.png 300w\" sizes=\"(max-width: 616px) 100vw, 616px\" \/><\/figure>\n<\/div>\n\n\n<p>Even though the extension is packaged with the hg command line tool, the tool doesn&#8217;t really know where it put the thing. While you are at it, find the histedit package as well.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"633\" height=\"164\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/find-histedit.png\" alt=\"\" class=\"wp-image-5787\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/find-histedit.png 633w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/find-histedit-300x78.png 300w\" sizes=\"(max-width: 633px) 100vw, 633px\" \/><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"cd \njed .hgrc\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #82AAFF\">cd<\/span><span style=\"color: #BABED8\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">jed<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">.hgrc<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>You need to uncomment the lines and add full path to the packages to &#8220;enable&#8221; them for the hg command line. If you don&#8217;t have jed use nano or your other favorite terminal editor. After editing your file should look like this.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# example user config (see 'hg help config' for more info)\n[ui]\n# name and email, e.g.\n# username = Jane Doe <jdoe@example.com&gt;\nusername = roland_hughes\n\n# We recommend enabling tweakdefaults to get slight improvements to\n# the UI over time. Make sure to set HGPLAIN in the environment when\n# writing scripts!\n# tweakdefaults = True\n\n# uncomment to disable color in command output\n# (see 'hg help color' for details)\n# color = never\n\n# uncomment to disable command output pagination\n# (see 'hg help pager' for details)\n# paginate = never\n\n[extensions]\n# uncomment the lines below to enable some popular extensions\n# (see 'hg help extensions' for more info)\n#\nhistedit = \/usr\/lib\/python2.7\/dist-packages\/hgext\/histedit.py\n# rebase =\n# uncommit =\nhgk = \/usr\/lib\/python2.7\/dist-packages\/hgext\/hgk.py\n\n\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># example user config (see &#39;hg help config&#39; for more info)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #BABED8\">ui<\/span><span style=\"color: #89DDFF\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># name and email, e.g.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># username = Jane Doe &lt;jdoe@example.com&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">username<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">roland_hughes<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># We recommend enabling tweakdefaults to get slight improvements to<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># the UI over time. Make sure to set HGPLAIN in the environment when<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># writing scripts!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># tweakdefaults = True<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># uncomment to disable color in command output<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># (see &#39;hg help color&#39; for details)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># color = never<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># uncomment to disable command output pagination<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># (see &#39;hg help pager&#39; for details)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># paginate = never<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #BABED8\">extensions<\/span><span style=\"color: #89DDFF\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># uncomment the lines below to enable some popular extensions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># (see &#39;hg help extensions&#39; for more info)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\">#<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">histedit<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">\/usr\/lib\/python2.7\/dist-packages\/hgext\/histedit.py<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># rebase =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #464B5D; font-style: italic\"># uncommit =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">hgk<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">=<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">\/usr\/lib\/python2.7\/dist-packages\/hgext\/hgk.py<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>After that (possibly needing to log out\/in) you should be able to type<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"cd ~\/sf_projects\/csscintilla-csscintilla\nhg view\" style=\"color:#babed8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #82AAFF\">cd<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">~\/sf_projects\/csscintilla-csscintilla<\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">hg<\/span><span style=\"color: #BABED8\"> <\/span><span style=\"color: #C3E88D\">view<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>You need to cd to the root of your repo clone so view knows what to view.<\/p>\n\n\n\n<p>This tool has much the same misleading information in the tree<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1016\" height=\"550\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-1.png\" alt=\"\" class=\"wp-image-5788\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-1.png 1016w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-1-300x162.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-1-768x416.png 768w\" sizes=\"(max-width: 1016px) 100vw, 1016px\" \/><\/figure>\n<\/div>\n\n\n<p>It has one, possibly unique, feature that is &#8220;expert friendly.&#8221;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"938\" height=\"791\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-2.png\" alt=\"\" class=\"wp-image-5789\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-2.png 938w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-2-300x253.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-view-2-768x648.png 768w\" sizes=\"(max-width: 938px) 100vw, 938px\" \/><\/figure>\n<\/div>\n\n\n<p>Right click on a revision that&#8217;s not in your tree, no matter what Mercurial believes, gives you a menu where you can &#8220;write commit to file.&#8221; You will note it creates a .diff file and writes it to the root of your project directory.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"971\" height=\"135\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-import-1.png\" alt=\"\" class=\"wp-image-5790\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-import-1.png 971w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-import-1-300x42.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-import-1-768x107.png 768w\" sizes=\"(max-width: 971px) 100vw, 971px\" \/><\/figure>\n<\/div>\n\n\n<p>We still have ObamaCare because, despite all its warts and short-comings, it works. We still have this DEPRECATED tool because, once somebody shows you the expert friendly tricks, you can dig yourself out of a very deep hole. One by one you write the .diff files and import them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">TortoiseHg<\/h3>\n\n\n\n<p><a href=\"https:\/\/tortoisehg.bitbucket.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">TortoiseHg<\/a> gets dumped on and deservedly so. On Ubuntu it is distributed via the Snap store. It isn&#8217;t properly packaged. You don&#8217;t get a nice desktop entry in &#8220;Activities&#8221; and if you try to launch it from a non-repo directory File-Open won&#8217;t let you open the file you need. This is due to Snap&#8217;s &#8220;portals.&#8221; Snap packaged tools don&#8217;t get to have their own file browser. Apparently they cannot communicate with the portal file browser well enough to tell it what to stop on. When you navigate to the &#8220;.hg&#8221; file in your repo directory and click &#8220;open&#8221; the file browser goes into the directory rather than returning the path to the .hg file.<\/p>\n\n\n\n<p>You have to be in a terminal, cd to your repo root directory then type <strong>thg<\/strong>. You will then be greeted by lots of ugly messages and finally a GUI.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"135\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-2-1024x135.png\" alt=\"\" class=\"wp-image-5791\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-2-1024x135.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-2-300x39.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-2-768x101.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-2-1536x202.png 1536w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-2.png 1840w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"605\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-1-1024x605.png\" alt=\"\" class=\"wp-image-5792\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-1-1024x605.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-1-300x177.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-1-768x454.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-1-1536x907.png 1536w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-1.png 1556w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Note that SourceForge has completely different revision numbers than either hg view or TortoiseHg. At least these two programs show the same numbers. When you are working from the command line using <strong>-r<\/strong> the revision number needs to match what SourceForge has.<\/p>\n\n\n\n<p>Careful viewers will note I opened TortoiseHg <em>after<\/em> I imported the commit diff file. The display looks nicer and it is a bit easier to identify what you want. You can right click on an entry and navigate the menu to create a patch file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"791\" height=\"526\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-6.png\" alt=\"\" class=\"wp-image-5794\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-6.png 791w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-6-300x199.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/tortoisehg-6-768x511.png 768w\" sizes=\"(max-width: 791px) 100vw, 791px\" \/><\/figure>\n\n\n\n<p>Given the &#8220;Diff&#8221; menu entries above &#8220;Patch&#8221; might be confusing. Here again you get burned by the Snap packaging. A &#8220;portal&#8221; window opens and you may not see it at all. When I did this it opened behind everything else on the screen. I had to scroll the Ubuntu &#8220;favorites and active&#8221; menu on the left down quite a bit to find a gear icon I didn&#8217;t recognize. The other thing that burns you is it doesn&#8217;t default the name. Hg view uses commit-somenumber.diff. The number matches the rev. This is a logical file name. When users are required to come up with names you will find they are all a.diff. I chose abc.diff just to be different.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Patch vs. Diff<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"420\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-1-1024x420.png\" alt=\"\" class=\"wp-image-5795\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-1-1024x420.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-1-300x123.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-1-768x315.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-1.png 1294w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>You will notice our first .diff looks much the same as the second despite the term &#8220;patch.&#8221;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"342\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-2-1024x342.png\" alt=\"\" class=\"wp-image-5796\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-2-1024x342.png 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-2-300x100.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-2-768x257.png 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-2.png 1149w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Applying the diff is interesting.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"871\" height=\"69\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-3.png\" alt=\"\" class=\"wp-image-5797\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-3.png 871w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-3-300x24.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-3-768x61.png 768w\" sizes=\"(max-width: 871px) 100vw, 871px\" \/><\/figure>\n<\/div>\n\n\n<p>The TortoiseHg window immediately jumps to the revision we just imported. If you scroll back to the top though<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1015\" height=\"178\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-6.png\" alt=\"\" class=\"wp-image-5798\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-6.png 1015w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-6-300x53.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/hg-diff-6-768x135.png 768w\" sizes=\"(max-width: 1015px) 100vw, 1015px\" \/><\/figure>\n\n\n\n<p>It live updates the description so you can keep track of what you last imported.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>If you need to go way back to see where something went wrong Mercurial has a convoluted way to go about it. You really need to have both <strong>hg view<\/strong> and <strong>TortoiseHg<\/strong> due to the most unfortunate packaging choice of TortoiseHg. Had TotoiseHg been packaged for native install it would be the one tool you needed <em>after<\/em> you learned the expert friendly method of creating a branch from an old rev.<\/p>\n\n\n\n<p>One thing that is missing is the GitKraken &#8220;Branch Here&#8221; capability. Maybe it exists, but it isn&#8217;t obvious. Another thing of note is that after I closed the one development branch, hg view would no longer show me the revision I needed to start with. Both SourceForge and tortoiseHg show it to me, they just use different revision numbers. This is why so many medical device companies buy a Perforce product, no matter how you access the repo, you get the same interface with the same revision information.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns. Most of us shun it for good reason. Git, on the other hand, is one of those source control management systems than many people like, and it is for no good reason. Git is not a good SCM, it&#8217;s a wild wild west SCM. To use it for a medical device project &hellip; <a title=\"I Hate Mercurial\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/\"><span class=\"screen-reader-text\">I Hate Mercurial<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":5777,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[2038,1838,2100,2037,256,2099,2102,2101],"class_list":["post-5776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-information-technology","tag-git","tag-gitkraken","tag-hg-view","tag-mercurial","tag-obamacare","tag-perforce","tag-snap-store","tag-tortoisehg","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>I Hate Mercurial &#8211; Logikal Blog<\/title>\n<meta name=\"description\" content=\"Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I Hate Mercurial &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-21T17:42:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-27T23:53:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"180\" \/>\n\t<meta property=\"og:image:height\" content=\"66\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"I Hate Mercurial\",\"datePublished\":\"2022-11-21T17:42:26+00:00\",\"dateModified\":\"2023-11-27T23:53:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/\"},\"wordCount\":1762,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/mercurial-logo.png\",\"keywords\":[\"Git\",\"GitKraken\",\"hg view\",\"Mercurial\",\"Obamacare\",\"Perforce\",\"Snap store\",\"TortoiseHg\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/\",\"name\":\"I Hate Mercurial &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/mercurial-logo.png\",\"datePublished\":\"2022-11-21T17:42:26+00:00\",\"dateModified\":\"2023-11-27T23:53:05+00:00\",\"description\":\"Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/mercurial-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2022\\\/11\\\/mercurial-logo.png\",\"width\":180,\"height\":66,\"caption\":\"Mercurial logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/mercurial-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I Hate Mercurial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans longer than a Tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I Hate Mercurial &#8211; Logikal Blog","description":"Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/","og_locale":"en_US","og_type":"article","og_title":"I Hate Mercurial &#8211; Logikal Blog","og_description":"Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns.","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/","og_site_name":"Logikal Blog","article_published_time":"2022-11-21T17:42:26+00:00","article_modified_time":"2023-11-27T23:53:05+00:00","og_image":[{"width":180,"height":66,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-logo.png","type":"image\/png"}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"I Hate Mercurial","datePublished":"2022-11-21T17:42:26+00:00","dateModified":"2023-11-27T23:53:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/"},"wordCount":1762,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-logo.png","keywords":["Git","GitKraken","hg view","Mercurial","Obamacare","Perforce","Snap store","TortoiseHg"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/","name":"I Hate Mercurial &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-logo.png","datePublished":"2022-11-21T17:42:26+00:00","dateModified":"2023-11-27T23:53:05+00:00","description":"Mercurial is one of those source control management systems that a token few people like and the vast majority of the world shuns.","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-logo.png","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2022\/11\/mercurial-logo.png","width":180,"height":66,"caption":"Mercurial logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/mercurial-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"I Hate Mercurial"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans longer than a Tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/5776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=5776"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/5776\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/5777"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=5776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=5776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=5776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}