<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CLI tasks on Mergeway</title><link>https://mergewayhq.github.io/docs/how-to/cli/</link><description>Recent content in CLI tasks on Mergeway</description><generator>Hugo</generator><language>en</language><atom:link href="https://mergewayhq.github.io/docs/how-to/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>Create, inspect, update, and delete records</title><link>https://mergewayhq.github.io/docs/how-to/cli/manage-records/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/manage-records/</guid><description>&lt;h1 id="create-inspect-update-and-delete-records"&gt;Create, inspect, update, and delete records&lt;a class="anchor" href="#create-inspect-update-and-delete-records"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Work in a clean Git branch and confirm the target entity has a writable one-record-per-file include. This example uses &lt;code&gt;User&lt;/code&gt; in &lt;code&gt;examples/full&lt;/code&gt;; use a copy so the destructive final step cannot affect source data.&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;cp -R examples/full /tmp/mergeway-records
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-cli --root /tmp/mergeway-records create --type User --id user-carol &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;&amp;#39;YAML&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;name: Carol Example
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;email: carol@example.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;roles: [author]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;YAML&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The command prints &lt;code&gt;User user-carol created&lt;/code&gt; and writes &lt;code&gt;data/users/user-carol.yaml&lt;/code&gt;. Inspect it:&lt;/p&gt;</description></item><item><title>Validate configuration or a repository</title><link>https://mergewayhq.github.io/docs/how-to/cli/choose-validation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/choose-validation/</guid><description>&lt;h1 id="validate-configuration-or-a-repository"&gt;Validate configuration or a repository&lt;a class="anchor" href="#validate-configuration-or-a-repository"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use configuration lint for fast feedback while editing &lt;code&gt;mergeway.yaml&lt;/code&gt; or included entity files:&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 config lint&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It proves that configuration parses and normalizes, but it does not open record files. Before review or export, validate the full repository:&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For machine-readable diagnostics and an early stop:&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 --format json --fail-fast validate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To isolate a problem, repeat &lt;code&gt;--phase&lt;/code&gt; as needed:&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 --phase format
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-cli validate --phase schema --phase references&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Reference validation automatically includes schema validation. Any reported validation error exits &lt;code&gt;1&lt;/code&gt;, so CI can use the command directly. See the &lt;a href="../../../explanation/validation-model/"&gt;validation model&lt;/a&gt; and &lt;a href="../../../reference/cli/validate/"&gt;&lt;code&gt;validate&lt;/code&gt; reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Split schemas and records across files</title><link>https://mergewayhq.github.io/docs/how-to/cli/split-files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/split-files/</guid><description>&lt;h1 id="split-schemas-and-records-across-files"&gt;Split schemas and records across files&lt;a class="anchor" href="#split-schemas-and-records-across-files"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Create predictable directories from the repository root:&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;mkdir -p entities data/users&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Move each entity into a v1 configuration fragment such as &lt;code&gt;entities/User.yaml&lt;/code&gt;, and make the entry file include those fragments:&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-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;mergeway&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;include&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;entities/*.yaml&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the &lt;code&gt;User&lt;/code&gt; fragment, point the entity at its record files:&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-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;mergeway&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;entities&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;User&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;identifier&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;include&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;data/users/*.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;fields&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;id&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;type: string, required&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;type: string, required&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Write one record per file, for example &lt;code&gt;data/users/user-alice.yaml&lt;/code&gt;, then verify both layers:&lt;/p&gt;</description></item><item><title>Validate a repository in GitHub Actions</title><link>https://mergewayhq.github.io/docs/how-to/cli/github-actions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/github-actions/</guid><description>&lt;h1 id="validate-a-repository-in-github-actions"&gt;Validate a repository in GitHub Actions&lt;a class="anchor" href="#validate-a-repository-in-github-actions"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Commit this workflow as &lt;code&gt;.github/workflows/mergeway.yml&lt;/code&gt;. It pins v0.10.0 rather than following &lt;code&gt;latest&lt;/code&gt; and verifies the downloaded archive before running validation.&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-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Mergeway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;on&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;pull_request&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;push&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;branches&lt;/span&gt;: [&lt;span style="color:#ae81ff"&gt;main]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;jobs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;validate&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;runs-on&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ubuntu-latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;steps&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;uses&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;actions/checkout@v4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Install Mergeway CLI v0.10.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;shell&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;run&lt;/span&gt;: |&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; curl -fsSLO https://github.com/mergewayhq/mergeway-cli/releases/download/v0.10.0/mergeway-cli_Linux_x86_64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; tar -xzf mergeway-cli_Linux_x86_64.tar.gz mergeway-cli
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; sudo install -m 0755 mergeway-cli /usr/local/bin/mergeway-cli
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; mergeway-cli version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Validate configuration and repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;run&lt;/span&gt;: |&lt;span style="color:#e6db74"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; mergeway-cli config lint
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; mergeway-cli validate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For stronger supply-chain controls, add the release checksum published by your release process and verify it before extraction. Update the pinned version deliberately and review its release notes. Validation exits &lt;code&gt;1&lt;/code&gt; for repository errors, so no output parsing is needed. Add &lt;a href="../format-ci/"&gt;&lt;code&gt;fmt --lint&lt;/code&gt;&lt;/a&gt; when canonical formatting is also required.&lt;/p&gt;</description></item><item><title>Enforce canonical formatting with pre-commit</title><link>https://mergewayhq.github.io/docs/how-to/cli/pre-commit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/pre-commit/</guid><description>&lt;h1 id="enforce-canonical-formatting-with-pre-commit"&gt;Enforce canonical formatting with pre-commit&lt;a class="anchor" href="#enforce-canonical-formatting-with-pre-commit"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Install &lt;code&gt;mergeway-cli&lt;/code&gt; and &lt;a href="https://pre-commit.com/"&gt;pre-commit&lt;/a&gt;, then add &lt;code&gt;.pre-commit-config.yaml&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-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;repos&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;repo&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;hooks&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;id&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;mergeway-fmt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Canonicalize Mergeway records&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;entry&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;mergeway-cli fmt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;language&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;pass_filenames&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;files&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;^data/.*\.(ya?ml)$&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;pass_filenames: false&lt;/code&gt; lets Mergeway derive its complete configured data set instead of receiving an arbitrary staged subset. Install and test the hook:&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;pre-commit install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pre-commit run mergeway-fmt --all-files
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git diff --check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The default formatter rewrites files; review and stage those changes. If a non-mutating local policy is preferred, set &lt;code&gt;entry: mergeway-cli fmt --lint&lt;/code&gt;. See the &lt;a href="../../../reference/cli/fmt/"&gt;&lt;code&gt;fmt&lt;/code&gt; modes&lt;/a&gt; and &lt;a href="../format-ci/"&gt;CI formatting guide&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Export repository data</title><link>https://mergewayhq.github.io/docs/how-to/cli/export-data/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/export-data/</guid><description>&lt;h1 id="export-repository-data"&gt;Export repository data&lt;a class="anchor" href="#export-repository-data"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Validate first so the snapshot is not built from known-invalid records:&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;mergeway-cli --format json export --output repository.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To limit the output, list entity names after &lt;code&gt;export&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;mergeway-cli --format json export User Post --output authors-and-posts.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The document maps each entity to an ID-sorted record array. Entity ordering in JSON objects is not a semantic contract; consumers should address keys by name. &lt;code&gt;--output&lt;/code&gt; replaces an existing destination, so use a temporary path when reviewing:&lt;/p&gt;</description></item><item><title>Generate an entity-relationship diagram</title><link>https://mergewayhq.github.io/docs/how-to/cli/generate-erd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/generate-erd/</guid><description>&lt;h1 id="generate-an-entity-relationship-diagram"&gt;Generate an entity-relationship diagram&lt;a class="anchor" href="#generate-an-entity-relationship-diagram"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Install Graphviz so its &lt;code&gt;dot&lt;/code&gt; executable is on &lt;code&gt;PATH&lt;/code&gt;, then validate and render an SVG:&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;dot -V
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-cli config lint
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-cli gen-erd --path schema.svg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The extension controls Graphviz&amp;rsquo;s output format. SVG works well in documentation and code review; PNG is convenient for presentations. Regenerate the file whenever definitions change.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://mergewayhq.github.io/images/cli/erd-example-full.svg" alt="Entity-relationship diagram for the full example, showing Comment, Post, Tag, and User with their reference arrows." /&gt;&lt;/p&gt;
&lt;p&gt;The diagram shows normalized entities, direct fields, configured data paths, reference edges, and inheritance. It does not show individual records or validate them. Consult &lt;a href="../../../reference/cli/gen-erd/"&gt;&lt;code&gt;gen-erd&lt;/code&gt;&lt;/a&gt; for errors and the &lt;a href="../../../reference/specification/entities/"&gt;entity specification&lt;/a&gt; for model semantics.&lt;/p&gt;</description></item><item><title>Format safely in CI</title><link>https://mergewayhq.github.io/docs/how-to/cli/format-ci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/format-ci/</guid><description>&lt;h1 id="format-safely-in-ci"&gt;Format safely in CI&lt;a class="anchor" href="#format-safely-in-ci"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use lint mode in automation; plain &lt;code&gt;fmt&lt;/code&gt; rewrites files and can conceal the failure you meant to detect.&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 fmt --lint&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A clean repository exits &lt;code&gt;0&lt;/code&gt; without output. When files differ, their paths are printed and the command exits &lt;code&gt;1&lt;/code&gt; without modifying them. Contributors can fix the same failure locally:&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 fmt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git diff --check
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mergeway-cli fmt --lint&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To inspect a single file without writing it, use &lt;code&gt;--stdout&lt;/code&gt; and do not combine it with &lt;code&gt;--lint&lt;/code&gt; or &lt;code&gt;--in-place&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Troubleshoot the CLI</title><link>https://mergewayhq.github.io/docs/how-to/cli/troubleshoot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mergewayhq.github.io/docs/how-to/cli/troubleshoot/</guid><description>&lt;h1 id="troubleshoot-the-cli"&gt;Troubleshoot the CLI&lt;a class="anchor" href="#troubleshoot-the-cli"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-repository-is-not-found"&gt;The repository is not found&lt;a class="anchor" href="#the-repository-is-not-found"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run commands from the directory containing &lt;code&gt;mergeway.yaml&lt;/code&gt;, or pass &lt;code&gt;--root&lt;/code&gt; before the command. Use &lt;code&gt;--config&lt;/code&gt; when the entry file has another path. The CLI does not use the LSP client&amp;rsquo;s workspace-folder negotiation.&lt;/p&gt;
&lt;h2 id="configuration-does-not-load"&gt;Configuration does not load&lt;a class="anchor" href="#configuration-does-not-load"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run &lt;a href="../../../reference/cli/config-lint/"&gt;&lt;code&gt;mergeway-cli config lint&lt;/code&gt;&lt;/a&gt; before full validation. Check include paths relative to the file that declares them, entity names, inheritance cycles, and mutually exclusive &lt;code&gt;fields&lt;/code&gt;/&lt;code&gt;json_schema&lt;/code&gt; members.&lt;/p&gt;
&lt;h2 id="validation-fails"&gt;Validation fails&lt;a class="anchor" href="#validation-fails"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run &lt;a href="../../../reference/cli/validate/"&gt;&lt;code&gt;mergeway-cli validate&lt;/code&gt;&lt;/a&gt; without &lt;code&gt;--fail-fast&lt;/code&gt; to collect all errors, then isolate &lt;code&gt;format&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, or &lt;code&gt;references&lt;/code&gt; with repeated &lt;code&gt;--phase&lt;/code&gt; flags. The &lt;a href="../../../explanation/validation-model/"&gt;validation model&lt;/a&gt; explains why a later phase waits for earlier phases.&lt;/p&gt;</description></item></channel></rss>