<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Diff tasks on Mergeway</title><link>https://mergewayhq.github.io/docs/how-to/diff/</link><description>Recent content in Diff tasks on Mergeway</description><generator>Hugo</generator><language>en</language><atom:link href="https://mergewayhq.github.io/docs/how-to/diff/index.xml" rel="self" type="application/rss+xml"/><item><title>Compare the working tree with HEAD</title><link>https://mergewayhq.github.io/docs/how-to/diff/working-tree/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/diff/working-tree/</guid><description>&lt;h1 id="compare-the-working-tree-with-head"&gt;Compare the working tree with &lt;code&gt;HEAD&lt;/code&gt;&lt;a class="anchor" href="#compare-the-working-tree-with-head"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Run validation and inspect Git state first:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-cli validate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git status --short&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To review unstaged tracked changes and untracked data while excluding staged-only content, use zero arguments:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-diff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This mode compares &lt;code&gt;HEAD&lt;/code&gt; with an unstaged working-tree view. It is useful while continuing to edit after staging a known baseline. Untracked, non-ignored records matching configured includes are part of the view.&lt;/p&gt;
&lt;p&gt;To review everything currently on disk against &lt;code&gt;HEAD&lt;/code&gt;, pass &lt;code&gt;HEAD&lt;/code&gt; explicitly:&lt;/p&gt;</description></item><item><title>Compare two Git revisions</title><link>https://mergewayhq.github.io/docs/how-to/diff/revisions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/diff/revisions/</guid><description>&lt;h1 id="compare-two-git-revisions"&gt;Compare two Git revisions&lt;a class="anchor" href="#compare-two-git-revisions"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Resolve the comparison endpoints, then pass both to Diff:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LEFT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;git rev-parse HEAD~1&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RIGHT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;git rev-parse HEAD&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-diff &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$LEFT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$RIGHT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Both arguments must resolve to commits. Tags, branches, hashes, and Git revision expressions work. The command reads configuration and data from those commits and ignores every current staged, unstaged, and untracked file, making the result reproducible from the same repository history.&lt;/p&gt;
&lt;p&gt;To compare a pull-request range locally, use the merge base rather than assuming the branch point:&lt;/p&gt;</description></item><item><title>Publish a semantic change summary</title><link>https://mergewayhq.github.io/docs/how-to/diff/publish-summary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/diff/publish-summary/</guid><description>&lt;h1 id="publish-a-semantic-change-summary"&gt;Publish a semantic change summary&lt;a class="anchor" href="#publish-a-semantic-change-summary"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Choose the most recent commit before the reporting window and verify that it exists:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BASELINE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;git log -1 --before&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;7 days ago&amp;#34;&lt;/span&gt; --format&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;%H&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;test -n &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$BASELINE&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;No baseline commit found&amp;#34;&lt;/span&gt; &amp;gt;&amp;amp;2; exit 1; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CURRENT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;git rev-parse HEAD&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Compare two explicit revisions so local work cannot leak into a published report:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-diff &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$BASELINE&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$CURRENT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then assemble the result with its reproducible endpoints:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;# Weekly semantic data update&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Baseline: &lt;/span&gt;$BASELINE&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Current: &lt;/span&gt;$CURRENT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#39;```text&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mergeway-diff &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$BASELINE&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$CURRENT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#39;```&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt; &amp;gt; weekly-data-update.md&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Review &lt;code&gt;weekly-data-update.md&lt;/code&gt; before publishing it. The report describes record additions, removals, modifications, and relocations; it deliberately omits commit authorship and configuration-only edits. Pair it with your normal Git review when those details matter.&lt;/p&gt;</description></item><item><title>Consume JSON diff output in automation</title><link>https://mergewayhq.github.io/docs/how-to/diff/json-automation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/diff/json-automation/</guid><description>&lt;h1 id="consume-json-diff-output-in-automation"&gt;Consume JSON diff output in automation&lt;a class="anchor" href="#consume-json-diff-output-in-automation"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Capture a committed comparison as JSON:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-diff --format json HEAD~1 HEAD &amp;gt; semantic-diff.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check the schema version before consuming entries. With &lt;code&gt;jq&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;jq -e &lt;span style="color:#e6db74"&gt;&amp;#39;.version == 1&amp;#39;&lt;/span&gt; semantic-diff.json &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;jq -r &lt;span style="color:#e6db74"&gt;&amp;#39;.entries[] | [.kind, .type, .object_id] | @tsv&amp;#39;&lt;/span&gt; semantic-diff.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Diff exits &lt;code&gt;0&lt;/code&gt; for both empty and non-empty comparisons. Test the array when a workflow needs to branch:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; jq -e &lt;span style="color:#e6db74"&gt;&amp;#39;.entries | length &amp;gt; 0&amp;#39;&lt;/span&gt; semantic-diff.json &amp;gt;/dev/null; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Semantic changes found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;No semantic changes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Keep command failure separate from a non-empty result:&lt;/p&gt;</description></item><item><title>Troubleshoot semantic diff</title><link>https://mergewayhq.github.io/docs/how-to/diff/troubleshoot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/diff/troubleshoot/</guid><description>&lt;h1 id="troubleshoot-semantic-diff"&gt;Troubleshoot semantic diff&lt;a class="anchor" href="#troubleshoot-semantic-diff"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="a-revision-cannot-be-resolved"&gt;A revision cannot be resolved&lt;a class="anchor" href="#a-revision-cannot-be-resolved"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run &lt;code&gt;git rev-parse &amp;lt;revision&amp;gt;&lt;/code&gt; in the same repository. &lt;code&gt;mergeway-diff&lt;/code&gt; accepts Git revisions and the working-tree sentinel documented in the &lt;a href="../../../reference/diff/"&gt;reference&lt;/a&gt;; it does not interpret arbitrary filesystem paths as revisions.&lt;/p&gt;
&lt;h2 id="a-snapshot-cannot-be-loaded"&gt;A snapshot cannot be loaded&lt;a class="anchor" href="#a-snapshot-cannot-be-loaded"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Validate the relevant checked-out state with &lt;code&gt;mergeway-cli validate&lt;/code&gt;. Diff must load configuration and records at both endpoints before comparing them. Missing configuration, malformed sources, or an invalid identifier can prevent snapshot construction.&lt;/p&gt;</description></item></channel></rss>