mirror of
https://github.com/martinvonz/jj.git
synced 2025-05-05 15:32:49 +00:00
Deployed 32d2a85 to v0.24.0 with MkDocs 1.6.1 and mike 2.1.3
This commit is contained in:
parent
83d9ac7f61
commit
f8713719c3
@ -1143,27 +1143,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/jj/latest/roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/jj/latest/design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1291,6 +1270,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="/jj/latest/roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -468,6 +468,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#can-i-monitor-how-jj-log-evolves" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Can I monitor how jj log evolves?
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -549,6 +558,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#why-are-most-merge-commits-marked-as-empty" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Why are most merge commits marked as "(empty)"?
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1347,27 +1365,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1495,6 +1492,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1555,6 +1572,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#can-i-monitor-how-jj-log-evolves" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Can I monitor how jj log evolves?
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1636,6 +1662,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#why-are-most-merge-commits-marked-as-empty" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Why are most merge commits marked as "(empty)"?
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1716,6 +1751,16 @@ revision visible again.</p>
|
||||
<p>See <a href="../revsets/">revsets</a> and <a href="../templates/">templates</a> for further guidance.</p>
|
||||
<h3 id="how-can-i-get-jj-log-to-show-me-what-git-log-would-show-me">How can I get <code>jj log</code> to show me what <code>git log</code> would show me?<a class="headerlink" href="#how-can-i-get-jj-log-to-show-me-what-git-log-would-show-me" title="Permanent link">¶</a></h3>
|
||||
<p>Use <code>jj log -r ..</code>. The <code>..</code> <a href="../revsets/#operators">operator</a> lists all visible commits in the repo, excluding the root (which is never interesting and is shared by all repos).</p>
|
||||
<h3 id="can-i-monitor-how-jj-log-evolves">Can I monitor how <code>jj log</code> evolves?<a class="headerlink" href="#can-i-monitor-how-jj-log-evolves" title="Permanent link">¶</a></h3>
|
||||
<p>The simplest way to monitor how the history as shown by <code>jj log</code> evolves is by using the <a href="https://man7.org/linux/man-pages/man1/watch.1.html">watch(1)</a> command (or <a href="https://github.com/blacknon/hwatch?tab=readme-ov-file#configuration">hwatch</a> or <a href="https://github.com/sachaos/viddy">viddy</a>).
|
||||
For example:</p>
|
||||
<div class="highlight"><pre><span></span><code>watch<span class="w"> </span>--color<span class="w"> </span>jj<span class="w"> </span>--ignore-working-copy<span class="w"> </span>log<span class="w"> </span>--color<span class="o">=</span>always
|
||||
</code></pre></div>
|
||||
<p>This will continuously update the (colored) log output in the terminal.
|
||||
The <code>--ignore-working-copy</code> option avoids conflicts with manual operations during the creation of snapshots.
|
||||
Martin used watch in a <a href="https://github.com/tmux/tmux/wiki">tmux</a> pane during his presentation <a href="https://www.youtube.com/watch?v=LV0JzI8IcCY">Jujutsu - A Git-compatible VCS</a>.</p>
|
||||
<p>Alternatively, you can use <a href="https://github.com/tim-janik/jj-fzf">jj-fzf</a>, where the central piece is the <code>jj log</code> view and common operations can be carried out via key bindings while the log view updates.</p>
|
||||
<p>The wiki lists additional TUIs and GUIs beyond the terminal: <a href="https://github.com/martinvonz/jj/wiki/GUI-and-TUI">GUI-and-TUI</a></p>
|
||||
<h3 id="should-i-co-locate-my-repository">Should I co-locate my repository?<a class="headerlink" href="#should-i-co-locate-my-repository" title="Permanent link">¶</a></h3>
|
||||
<p>Co-locating a Jujutsu repository allows you to use both Jujutsu and Git in the
|
||||
same working copy. The benefits of doing so are:</p>
|
||||
@ -1904,6 +1949,21 @@ your state without realising.</p>
|
||||
your edits, then use <code>jj squash</code> to update the earlier revision with those edits.
|
||||
For when you would use git stashing, use <code>jj edit <rev></code> for expected behaviour.
|
||||
Other workflows may prefer <code>jj edit</code> as well.</p>
|
||||
<h3 id="why-are-most-merge-commits-marked-as-empty">Why are most merge commits marked as "(empty)"?<a class="headerlink" href="#why-are-most-merge-commits-marked-as-empty" title="Permanent link">¶</a></h3>
|
||||
<p>Jujutsu, like Git, is a snapshot-based VCS. That means that each commit
|
||||
logically records the state of all current files in the repo. The changes in a
|
||||
commit are not recorded but are instead calculated when needed by comparing the
|
||||
commit's state to the parent commit's state. Jujutsu defines the changes in a
|
||||
commit to be relative to the auto-merged parents (if there's only one parent,
|
||||
then that merge is trivial - it's the parent commit's state). As a result, a
|
||||
merge commit that was a clean merge (no conflict resolution, no additional
|
||||
changes) is considered empty. Conversely, if the merge commit contains conflict
|
||||
resolutions or additional changes, then it will be considered non-empty.</p>
|
||||
<p>This definition of the changes in a commit is used throughout Jujutsu. It's
|
||||
used by <code>jj diff -r</code> and <code>jj log -p</code> to show the changes in a commit. It's used
|
||||
by <code>jj rebase</code> to rebase the changes in a commit. It's used in <code>jj log</code> to
|
||||
indicate which commits are empty. It's used in the <code>files()</code> revset function
|
||||
(and by <code>jj log <path></code>) to find commits that modify a certain path. And so on.</p>
|
||||
<h3 id="how-do-i-deal-with-divergent-changes-after-the-change-id">How do I deal with divergent changes ('??' after the <a href="../glossary/#change-id">change ID</a>)?<a class="headerlink" href="#how-do-i-deal-with-divergent-changes-after-the-change-id" title="Permanent link">¶</a></h3>
|
||||
<p>A <a href="../glossary/#divergent-change">divergent change</a> represents a change that has two
|
||||
or more visible commits associated with it. To refer to such commits, you must
|
||||
@ -1938,7 +1998,7 @@ directory.</p>
|
||||
<li>Using <code>jj-lib</code> avoids parsing command output and makes error handling easier.</li>
|
||||
<li><code>jj-lib</code> is not a stable API, so you may have to make changes to your tool
|
||||
when the API changes.</li>
|
||||
<li>The CLI is not stable either, so you may need to make your tool detect the
|
||||
<li>The CLI is not stable either, so you may need to make your tool detect the
|
||||
different versions and call the right command.</li>
|
||||
<li>Using the CLI means that your tool will work with custom-built <code>jj</code> binaries,
|
||||
like the one at Google (if you're using the library, you will not be able to
|
||||
|
@ -1310,27 +1310,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1458,6 +1437,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1663,7 +1662,7 @@ remote. If a local bookmark also exists on some remote but points to a different
|
||||
target there, <code>jj log</code> will show the bookmark name with an asterisk suffix (e.g.
|
||||
<code>main*</code>). That is meant to remind you that you may want to push the bookmark to
|
||||
some remote.</p>
|
||||
<p>If you want to know the internals of bookmark tracking, consult the
|
||||
<p>If you want to know the internals of bookmark tracking, consult the
|
||||
<a href="../design/tracking-branches/">Design Doc</a>.</p>
|
||||
<h3 id="terminology-summary">Terminology summary<a class="headerlink" href="#terminology-summary" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
@ -1686,9 +1685,9 @@ some remote.</p>
|
||||
bookmarks on multiple remotes, and the names of the local and remote bookmarks
|
||||
must match.</p>
|
||||
<h3 id="manually-tracking-a-bookmark">Manually tracking a bookmark<a class="headerlink" href="#manually-tracking-a-bookmark" title="Permanent link">¶</a></h3>
|
||||
<p>To track a bookmark permanently use <code>jj bookmark track <bookmark name>@<remote name></code>.
|
||||
<p>To track a bookmark permanently use <code>jj bookmark track <bookmark name>@<remote name></code>.
|
||||
It will now be imported as a local bookmark until you untrack it or it is deleted
|
||||
on the remote. </p>
|
||||
on the remote.</p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span><span class="c1"># List all available bookmarks, as we want our colleague's bookmark.</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>bookmark<span class="w"> </span>list<span class="w"> </span>--all
|
||||
@ -1705,7 +1704,7 @@ $<span class="w"> </span>jj<span class="w"> </span>new<span class="w"> </span>&l
|
||||
<p>To stop following a remote bookmark, you can <code>jj bookmark untrack</code> it. After that,
|
||||
subsequent fetches of that remote will no longer move the local bookmark to match
|
||||
the position of the remote bookmark.</p>
|
||||
<p>Example: </p>
|
||||
<p>Example:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span><span class="c1"># List all local and remote bookmarks.</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>bookmark<span class="w"> </span>list<span class="w"> </span>--all
|
||||
$<span class="w"> </span><span class="c1"># Find the bookmark we no longer want to track.</span>
|
||||
@ -1727,7 +1726,7 @@ tracked. When you push a local bookmark, the newly created bookmark on the remot
|
||||
marked as tracked.</p>
|
||||
<p>By default, every other remote bookmark is marked as "not tracked" when it's
|
||||
fetched. If desired, you need to manually <code>jj bookmark track</code> them. This works
|
||||
well for repositories where multiple people work on a large number of bookmarks. </p>
|
||||
well for repositories where multiple people work on a large number of bookmarks.</p>
|
||||
<p>The default can be changed by setting the config <code>git.auto-local-bookmark = true</code>.
|
||||
Then, <code>jj git fetch</code> tracks every <em>newly fetched</em> bookmark with a local bookmark.
|
||||
Branches that already existed before the <code>jj git fetch</code> are not affected. This
|
||||
@ -1737,13 +1736,13 @@ bookmarks) by default.</p>
|
||||
<p>Currently Jujutsu automatically moves local bookmarks when these conditions are
|
||||
met:</p>
|
||||
<ul>
|
||||
<li>When a commit has been rewritten (e.g, when you rebase) bookmarks and the<br />
|
||||
<li>When a commit has been rewritten (e.g, when you rebase) bookmarks and the
|
||||
working-copy will move along with it.</li>
|
||||
<li>When a commit has been abandoned, all associated bookmarks will be moved
|
||||
<li>When a commit has been abandoned, all associated bookmarks will be moved
|
||||
to its parent(s). If a working copy was pointing to the abandoned commit,
|
||||
then a new working-copy commit will be created on top of the parent(s).</li>
|
||||
</ul>
|
||||
<p>You could describe the movement as following along the change-id of the
|
||||
<p>You could describe the movement as following along the change-id of the
|
||||
current bookmark commit, even if it isn't entirely accurate.</p>
|
||||
<h2 id="pushing-bookmarks-safety-checks">Pushing bookmarks: Safety checks<a class="headerlink" href="#pushing-bookmarks-safety-checks" title="Permanent link">¶</a></h2>
|
||||
<p>Before <code>jj git push</code> actually moves, creates, or deletes a remote bookmark, it
|
||||
@ -1775,8 +1774,8 @@ makes several safety checks.</p>
|
||||
<li>
|
||||
<p>If the remote bookmark already exists on the remote, it must be
|
||||
<a href="#remotes-and-tracked-bookmarks">tracked</a>. If the bookmark does not already
|
||||
exist on the remote, there is no problem; <code>jj git push</code> will create the
|
||||
remote bookmark and mark it as tracked.</p>
|
||||
exist on the remote, there is no problem; <code>jj git push --allow-new</code> will
|
||||
create the remote bookmark and mark it as tracked.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<h2 id="conflicts">Conflicts<a class="headerlink" href="#conflicts" title="Permanent link">¶</a></h2>
|
||||
|
@ -5,11 +5,10 @@
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting...</title>
|
||||
<link rel="canonical" href="../bookmarks/">
|
||||
<meta name="robots" content="noindex">
|
||||
<script>var anchor=window.location.hash.substr(1);location.href="../bookmarks/"+(anchor?"#"+anchor:"")</script>
|
||||
<meta http-equiv="refresh" content="0; url=../bookmarks/">
|
||||
</head>
|
||||
<body>
|
||||
Redirecting...
|
||||
You're being redirected to a <a href="../bookmarks/">new destination</a>.
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1301,27 +1301,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1449,6 +1428,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -522,9 +522,9 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#lazyjj" class="md-nav__link">
|
||||
<a href="#jj-fzf" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
LazyJJ
|
||||
JJ-FZF
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@ -537,6 +537,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#lazyjj" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
LazyJJ
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1266,27 +1275,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1414,6 +1402,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1468,9 +1476,9 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#lazyjj" class="md-nav__link">
|
||||
<a href="#jj-fzf" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
LazyJJ
|
||||
JJ-FZF
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@ -1483,6 +1491,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#lazyjj" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
LazyJJ
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1542,13 +1559,18 @@ workflows quite easy. Take a look at its README.md as it quite descriptive.</p>
|
||||
<p>Hunk.nvim is a Neovim based diff-editor for Jujutsu which can be used as an
|
||||
alternative to the default <code>:builtin</code> diff-editor.</p>
|
||||
<p>Find it <a href="https://github.com/julienvincent/hunk.nvim">here</a>.</p>
|
||||
<h2 id="lazyjj">LazyJJ<a class="headerlink" href="#lazyjj" title="Permanent link">¶</a></h2>
|
||||
<p>lazyjj is a lazygit inspired TUI for Jujutsu.</p>
|
||||
<p>Find it <a href="https://github.com/Cretezy/lazyjj">here</a>.</p>
|
||||
<h2 id="jj-fzf">JJ-FZF<a class="headerlink" href="#jj-fzf" title="Permanent link">¶</a></h2>
|
||||
<p>Centered around the <code>jj log</code> graph view, jj-fzf provides previews of diffs, the
|
||||
evolution-log, browses the op log and offers a large number of key bindings for
|
||||
commonly used <code>jj</code> operations from rebase to undo, and helps with divergent commits.</p>
|
||||
<p>Find it <a href="https://github.com/tim-janik/jj-fzf">here</a>.</p>
|
||||
<h2 id="jj-tui">JJ TUI<a class="headerlink" href="#jj-tui" title="Permanent link">¶</a></h2>
|
||||
<p>This is TUI for Jujutsu built in Ocaml, it is unopiniated and its creator is
|
||||
open to feedback.</p>
|
||||
<p>Find it <a href="https://github.com/faldor20/jj_tui">here</a>.</p>
|
||||
<h2 id="lazyjj">LazyJJ<a class="headerlink" href="#lazyjj" title="Permanent link">¶</a></h2>
|
||||
<p>lazyjj is a lazygit inspired TUI for Jujutsu.</p>
|
||||
<p>Find it <a href="https://github.com/Cretezy/lazyjj">here</a>.</p>
|
||||
<h2 id="visual-jujutsu">Visual Jujutsu<a class="headerlink" href="#visual-jujutsu" title="Permanent link">¶</a></h2>
|
||||
<p>VJJ is a fzf (fuzzy finder) wrapper for Jujutsu, which is meant to be used
|
||||
interactively in the terminal.</p>
|
||||
|
@ -826,6 +826,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#conflict-marker-style" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Conflict marker style
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1784,27 +1793,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1932,6 +1920,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -2086,6 +2094,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#conflict-marker-style" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Conflict marker style
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -2609,15 +2626,16 @@ right of the <code>=</code> sign) should be surrounded in quotes if it's a strin
|
||||
<span class="k">[colors]</span>
|
||||
<span class="s2">"commit_id prefix"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">bold</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p>Jujutsu favors the dotted style in these instructions, if only because it's
|
||||
easier to write down in an unconfusing way. If you are confident with TOML
|
||||
<p>The docs below refer to keys in text using dotted notation, but example
|
||||
blocks will use heading notation to be unambiguous. If you are confident with TOML
|
||||
then use whichever suits you in your config. If you mix dotted keys and headings,
|
||||
<strong>put the dotted keys before the first heading</strong>.</p>
|
||||
<strong>you must put the dotted keys before the first heading</strong>.</p>
|
||||
<p>That's probably enough TOML to keep you out of trouble but the <a href="https://toml.io/en/v1.0.0">syntax guide</a> is
|
||||
very short if you ever need to check.</p>
|
||||
<h2 id="user-settings">User settings<a class="headerlink" href="#user-settings" title="Permanent link">¶</a></h2>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">user</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"YOUR NAME"</span>
|
||||
<span class="n">user</span><span class="p">.</span><span class="n">email</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"YOUR_EMAIL@example.com"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[user]</span>
|
||||
<span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"YOUR NAME"</span>
|
||||
<span class="n">email</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"YOUR_EMAIL@example.com"</span>
|
||||
</code></pre></div>
|
||||
<p>Don't forget to change these to your own details!</p>
|
||||
<h2 id="ui-settings">UI settings<a class="headerlink" href="#ui-settings" title="Permanent link">¶</a></h2>
|
||||
@ -2626,11 +2644,13 @@ very short if you ever need to check.</p>
|
||||
<code>auto</code> will use color only when writing to a terminal. <code>debug</code> will print the
|
||||
active labels alongside the regular colorized output.</p>
|
||||
<p>This setting overrides the <code>NO_COLOR</code> environment variable (if set).</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"never"</span><span class="w"> </span><span class="c1"># Turn off color</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"never"</span><span class="w"> </span><span class="c1"># Turn off color</span>
|
||||
</code></pre></div>
|
||||
<h3 id="custom-colors-and-styles">Custom colors and styles<a class="headerlink" href="#custom-colors-and-styles" title="Permanent link">¶</a></h3>
|
||||
<p>You can customize the colors used for various elements of the UI. For example:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">colors</span><span class="p">.</span><span class="n">commit_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"green"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[colors]</span>
|
||||
<span class="n">commit_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"green"</span>
|
||||
</code></pre></div>
|
||||
<p>The following colors are available:</p>
|
||||
<ul>
|
||||
@ -2648,20 +2668,23 @@ active labels alongside the regular colorized output.</p>
|
||||
"default" color can be used to override a color defined by a parent style
|
||||
(explained below).</p>
|
||||
<p>You can also use a 6-digit hex code for more control over the exact color used:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">colors</span><span class="p">.</span><span class="n">change_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"#ff1525"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[colors]</span>
|
||||
<span class="n">change_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"#ff1525"</span>
|
||||
</code></pre></div>
|
||||
<p>If you use a string value for a color, as in the examples above, it will be used
|
||||
for the foreground color. You can also set the background color, or make the
|
||||
text bold or underlined. For that, you need to use a table:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">colors</span><span class="p">.</span><span class="n">commit_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">fg</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s2">"green"</span><span class="p">,</span><span class="w"> </span><span class="n">bg</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s2">"#ff1525"</span><span class="p">,</span><span class="w"> </span><span class="n">bold</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="n">underline</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">}</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[colors]</span>
|
||||
<span class="n">commit_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">fg</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s2">"green"</span><span class="p">,</span><span class="w"> </span><span class="n">bg</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s2">"#ff1525"</span><span class="p">,</span><span class="w"> </span><span class="n">bold</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="n">underline</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p>The key names are called "labels". The above used <code>commit_id</code> as label. You can
|
||||
also create rules combining multiple labels. The rules work a bit like CSS
|
||||
selectors. For example, if you want to color commit IDs green in general but
|
||||
make the commit ID of the working-copy commit also be underlined, you can do
|
||||
this:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">colors</span><span class="p">.</span><span class="n">commit_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"green"</span>
|
||||
<span class="n">colors</span><span class="p">.</span><span class="s2">"working_copy commit_id"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">underline</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">}</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[colors]</span>
|
||||
<span class="n">commit_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"green"</span>
|
||||
<span class="s2">"working_copy commit_id"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">underline</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<p>Parts of the style that are not overridden - such as the foreground color in the
|
||||
example above - are inherited from the parent style.</p>
|
||||
@ -2672,7 +2695,8 @@ for some examples of what's possible.</p>
|
||||
<p>When <code>jj</code> is run with no explicit subcommand, the value of the
|
||||
<code>ui.default-command</code> setting will be used instead. Possible values are any valid
|
||||
subcommand name, subcommand alias, or user-defined alias (defaults to <code>"log"</code>).</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">default-command</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"log"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--reversed"</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">default-command</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"log"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--reversed"</span><span class="p">]</span>
|
||||
</code></pre></div>
|
||||
<h3 id="default-description">Default description<a class="headerlink" href="#default-description" title="Permanent link">¶</a></h3>
|
||||
<p>The editor content of a commit description can be populated by the
|
||||
@ -2690,7 +2714,8 @@ subcommand name, subcommand alias, or user-defined alias (defaults to <code>"log
|
||||
</code></pre></div>
|
||||
<p>The value of the <code>ui.default-description</code> setting can also be used in order to
|
||||
fill in things like BUG=, TESTED= etc.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">default-description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">TESTED=TODO"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">default-description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">TESTED=TODO"</span>
|
||||
</code></pre></div>
|
||||
<h3 id="diff-colors-and-styles">Diff colors and styles<a class="headerlink" href="#diff-colors-and-styles" title="Permanent link">¶</a></h3>
|
||||
<p>In color-words and git diffs, word-level hunks are rendered with underline. You
|
||||
@ -2701,8 +2726,9 @@ can override the default style with the following keys:</p>
|
||||
<span class="s2">"diff added token"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">bg</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s2">"#002200"</span><span class="p">,</span><span class="w"> </span><span class="n">underline</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<h3 id="diff-format">Diff format<a class="headerlink" href="#diff-format" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Possible values: "color-words" (default), "git", "summary"</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">diff</span><span class="p">.</span><span class="n">format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"git"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Possible values: "color-words" (default), "git", "summary"</span>
|
||||
<span class="n">diff</span><span class="p">.</span><span class="n">format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"git"</span>
|
||||
</code></pre></div>
|
||||
<h4 id="color-words-diff-options">Color-words diff options<a class="headerlink" href="#color-words-diff-options" title="Permanent link">¶</a></h4>
|
||||
<p>In color-words diffs, changed words are displayed inline by default. Because
|
||||
@ -2768,26 +2794,42 @@ invocations as follows:</p>
|
||||
<span class="k">[merge-tools.vimdiff]</span>
|
||||
<span class="n">diff-invocation-mode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"file-by-file"</span>
|
||||
</code></pre></div>
|
||||
<h3 id="conflict-marker-style">Conflict marker style<a class="headerlink" href="#conflict-marker-style" title="Permanent link">¶</a></h3>
|
||||
<p>You can configure which style of conflict markers to use when materializing
|
||||
conflicts:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Shows a single snapshot and one or more diffs to apply to it</span>
|
||||
<span class="n">conflict-marker-style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"diff"</span>
|
||||
<span class="c1"># Shows a snapshot for each side and base of the conflict</span>
|
||||
<span class="n">conflict-marker-style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"snapshot"</span>
|
||||
<span class="c1"># Uses Git's "diff3" conflict markers to support tools that depend on it</span>
|
||||
<span class="n">conflict-marker-style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"git"</span>
|
||||
</code></pre></div>
|
||||
<p>For more details about these conflict marker styles, see the <a href="../conflicts/#conflict-markers">conflicts
|
||||
page</a>.</p>
|
||||
<h3 id="set-of-immutable-commits">Set of immutable commits<a class="headerlink" href="#set-of-immutable-commits" title="Permanent link">¶</a></h3>
|
||||
<p>You can configure the set of immutable commits via
|
||||
<code>revset-aliases."immutable_heads()"</code>. The default set of immutable heads is
|
||||
<code>builtin_immutable_heads()</code>, which in turn is defined as
|
||||
<code>present(trunk()) | tags() | untracked_remote_bookmarks()</code>. For example, to
|
||||
also consider the <code>release@origin</code> bookmark immutable:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">revset-aliases</span><span class="p">.</span><span class="s2">"immutable_heads()"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"builtin_immutable_heads() | release@origin"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[revset-aliases]</span>
|
||||
<span class="s2">"immutable_heads()"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"builtin_immutable_heads() | release@origin"</span>
|
||||
</code></pre></div>
|
||||
<p>To prevent rewriting commits authored by other users:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># The `trunk().. &` bit is an optimization to scan for non-`mine()` commits</span>
|
||||
<span class="c1"># only among commits that are not in `trunk()`.</span>
|
||||
<span class="n">revset-aliases</span><span class="p">.</span><span class="s2">"immutable_heads()"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"builtin_immutable_heads() | (trunk().. & ~mine())"</span>
|
||||
<span class="k">[revset-aliases]</span>
|
||||
<span class="s2">"immutable_heads()"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"builtin_immutable_heads() | (trunk().. & ~mine())"</span>
|
||||
</code></pre></div>
|
||||
<p>Ancestors of the configured set are also immutable. The root commit is always
|
||||
immutable even if the set is empty.</p>
|
||||
<h2 id="log">Log<a class="headerlink" href="#log" title="Permanent link">¶</a></h2>
|
||||
<h3 id="default-revisions">Default revisions<a class="headerlink" href="#default-revisions" title="Permanent link">¶</a></h3>
|
||||
<p>You can configure the revisions <code>jj log</code> would show when neither <code>-r</code> nor any paths are specified.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Show commits that are not in `main@origin`</span>
|
||||
<span class="n">revsets</span><span class="p">.</span><span class="n">log</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"main@origin.."</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[revsets]</span>
|
||||
<span class="c1"># Show commits that are not in `main@origin`</span>
|
||||
<span class="n">log</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"main@origin.."</span>
|
||||
</code></pre></div>
|
||||
<p>The default value for <code>revsets.log</code> is
|
||||
<code>'present(@) | ancestors(immutable_heads().., 2) | present(trunk())'</code>.</p>
|
||||
@ -2812,8 +2854,9 @@ your config:</p>
|
||||
<span class="n">log</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"builtin_log_compact_full_description"</span>
|
||||
</code></pre></div>
|
||||
<h3 id="graph-style">Graph style<a class="headerlink" href="#graph-style" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Possible values: "curved" (default), "square", "ascii", "ascii-large"</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">graph</span><span class="p">.</span><span class="n">style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"square"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Possible values: "curved" (default), "square", "ascii", "ascii-large"</span>
|
||||
<span class="n">graph</span><span class="p">.</span><span class="n">style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"square"</span>
|
||||
</code></pre></div>
|
||||
<h4 id="node-style">Node style<a class="headerlink" href="#node-style" title="Permanent link">¶</a></h4>
|
||||
<p>The symbols used to represent commits or operations can be customized via
|
||||
@ -2837,7 +2880,8 @@ templates.</p>
|
||||
<h3 id="wrap-log-content">Wrap log content<a class="headerlink" href="#wrap-log-content" title="Permanent link">¶</a></h3>
|
||||
<p>If enabled, <code>log</code>/<code>evolog</code>/<code>op log</code> content will be wrapped based on
|
||||
the terminal width.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">log-word-wrap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">log-word-wrap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||||
</code></pre></div>
|
||||
<h3 id="display-of-commit-and-change-ids">Display of commit and change ids<a class="headerlink" href="#display-of-commit-and-change-ids" title="Permanent link">¶</a></h3>
|
||||
<p>Can be customized by the <code>format_short_id()</code> template alias.</p>
|
||||
@ -2858,8 +2902,9 @@ the terminal width.</p>
|
||||
<span class="s1">'format_short_change_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'format_short_id(id).upper()'</span>
|
||||
</code></pre></div>
|
||||
<p>To get shorter prefixes for certain revisions, set <code>revsets.short-prefixes</code>:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Prioritize the current bookmark</span>
|
||||
<span class="n">revsets</span><span class="p">.</span><span class="n">short-prefixes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"(main..@)::"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[revsets]</span>
|
||||
<span class="c1"># Prioritize the current bookmark</span>
|
||||
<span class="n">short-prefixes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"(main..@)::"</span>
|
||||
</code></pre></div>
|
||||
<h3 id="relative-timestamps">Relative timestamps<a class="headerlink" href="#relative-timestamps" title="Permanent link">¶</a></h3>
|
||||
<p>Can be customized by the <code>format_timestamp()</code> template alias.</p>
|
||||
@ -2893,8 +2938,9 @@ modifier</a>.</p>
|
||||
<p>Another way you can override this check is by setting
|
||||
<code>ui.always-allow-large-revsets</code> to <code>true</code>. Then, <code>jj</code> will allow every one of
|
||||
the revset arguments of such commands to expand to any number of revisions.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Assume `all:` prefix before revsets whenever it would make a difference</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">always-allow-large-revsets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Assume `all:` prefix before revsets whenever it would make a difference</span>
|
||||
<span class="n">always-allow-large-revsets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||||
</code></pre></div>
|
||||
<h2 id="pager">Pager<a class="headerlink" href="#pager" title="Permanent link">¶</a></h2>
|
||||
<p>The default pager is can be set via <code>ui.pager</code> or the <code>PAGER</code> environment
|
||||
@ -2914,17 +2960,19 @@ bindings and some more details.</p>
|
||||
<p>It is possible the default will change to <code>:builtin</code> for all platforms in the
|
||||
future.</p>
|
||||
<p>Additionally, paging behavior can be toggled via <code>ui.paginate</code> like so:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Enable pagination for commands that support it (default)</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">paginate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"auto"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Enable pagination for commands that support it (default)</span>
|
||||
<span class="n">paginate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"auto"</span>
|
||||
<span class="c1"># Disable all pagination, equivalent to using --no-pager</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">paginate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"never"</span>
|
||||
<span class="n">paginate</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"never"</span>
|
||||
</code></pre></div>
|
||||
<h3 id="processing-contents-to-be-paged">Processing contents to be paged<a class="headerlink" href="#processing-contents-to-be-paged" title="Permanent link">¶</a></h3>
|
||||
<p>If you'd like to pass the output through a formatter e.g.
|
||||
<a href="https://github.com/so-fancy/diff-so-fancy"><code>diff-so-fancy</code></a> before piping it
|
||||
through a pager you must do it using a subshell as, unlike <code>git</code> or <code>hg</code>, the
|
||||
command will be executed directly. For example:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">pager</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"sh"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s2">"diff-so-fancy | less -RFX"</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">pager</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"sh"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s2">"diff-so-fancy | less -RFX"</span><span class="p">]</span>
|
||||
</code></pre></div>
|
||||
<p>Some formatters (like <a href="https://github.com/dandavison/delta"><code>delta</code></a>) require
|
||||
git style diffs for formatting. You can configure this style of
|
||||
@ -2937,9 +2985,40 @@ diff as the default with the <code>ui.diff</code> setting. For example:</p>
|
||||
</code></pre></div>
|
||||
<h2 id="aliases">Aliases<a class="headerlink" href="#aliases" title="Permanent link">¶</a></h2>
|
||||
<p>You can define aliases for commands, including their arguments. For example:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># `jj l` shows commits on the working-copy commit's (anonymous) bookmark</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[aliases]</span>
|
||||
<span class="c1"># `jj l` shows commits on the working-copy commit's (anonymous) bookmark</span>
|
||||
<span class="c1"># compared to the `main` bookmark</span>
|
||||
<span class="n">aliases</span><span class="p">.</span><span class="n">l</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"log"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-r"</span><span class="p">,</span><span class="w"> </span><span class="s2">"(main..@):: | (main..@)-"</span><span class="p">]</span>
|
||||
<span class="n">l</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"log"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-r"</span><span class="p">,</span><span class="w"> </span><span class="s2">"(main..@):: | (main..@)-"</span><span class="p">]</span>
|
||||
</code></pre></div>
|
||||
<p>This alias syntax can only run a single jj command. However, you may want to
|
||||
execute multiple jj commands with a single alias, or run arbitrary scripts that
|
||||
complement your version control workflow. This can be done, but be aware of the
|
||||
danger:</p>
|
||||
<div class="admonition warning">
|
||||
<p class="admonition-title">Warning</p>
|
||||
<p>The following technique just provides a convenient syntax for running
|
||||
arbitrary code on your system. Using it irresponsibly may cause damage
|
||||
ranging from breaking the behavior of <code>jj undo</code> to wiping your file system.
|
||||
Exercise the same amount of caution while writing these aliases as you would
|
||||
when typing commands into the terminal!</p>
|
||||
<p>This feature may be removed or replaced by an embedded scripting language in
|
||||
the future.</p>
|
||||
</div>
|
||||
<p>The command <code>jj util exec</code> will simply run any command you pass to it as an
|
||||
argument. Additional arguments are passed through. Here are some examples:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[aliases]</span>
|
||||
<span class="n">my-script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"util"</span><span class="p">,</span><span class="w"> </span><span class="s2">"exec"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--"</span><span class="p">,</span><span class="w"> </span><span class="s2">"my-jj-script"</span><span class="p">]</span>
|
||||
<span class="c1"># ^^^^</span>
|
||||
<span class="c1"># This makes sure that flags are passed to your script instead of parsed by jj.</span>
|
||||
<span class="n">my-inline-script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"util"</span><span class="p">,</span><span class="w"> </span><span class="s2">"exec"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--"</span><span class="p">,</span><span class="w"> </span><span class="s2">"bash"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s2">"""</span>
|
||||
<span class="s2">#!/usr/bin/env bash</span>
|
||||
<span class="s2">set -euo pipefail</span>
|
||||
<span class="s2">echo "Look Ma, everything in one file!"</span>
|
||||
<span class="s2">echo "args: $@"</span>
|
||||
<span class="s2">"""</span><span class="p">,</span><span class="w"> </span><span class="s2">""</span><span class="p">]</span>
|
||||
<span class="c1"># ^^</span>
|
||||
<span class="c1"># This last empty string will become "$0" in bash, so your actual arguments</span>
|
||||
<span class="c1"># are all included in "$@" and start at "$1" as expected.</span>
|
||||
</code></pre></div>
|
||||
<h2 id="editor">Editor<a class="headerlink" href="#editor" title="Permanent link">¶</a></h2>
|
||||
<p>The default editor is set via <code>ui.editor</code>, though there are several places to
|
||||
@ -2948,20 +3027,23 @@ a <code>$</code>):</p>
|
||||
<p><code>$JJ_EDITOR</code> > <code>ui.editor</code> > <code>$VISUAL</code> > <code>$EDITOR</code></p>
|
||||
<p>Pico is the default editor (Notepad on Windows) in the absence of any other
|
||||
setting, but you could set it explicitly too.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"pico"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"pico"</span>
|
||||
</code></pre></div>
|
||||
<p>To use NeoVim instead:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"nvim"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"nvim"</span>
|
||||
</code></pre></div>
|
||||
<p>For GUI editors you possibly need to use a <code>-w</code> or <code>--wait</code>. Some examples:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"code -w"</span><span class="w"> </span><span class="c1"># VS Code</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"code.cmd -w"</span><span class="w"> </span><span class="c1"># VS Code on Windows</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"bbedit -w"</span><span class="w"> </span><span class="c1"># BBEdit</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"subl -n -w"</span><span class="w"> </span><span class="c1"># Sublime Text</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"mate -w"</span><span class="w"> </span><span class="c1"># TextMate</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"C:/Program Files/Notepad++/notepad++.exe"</span><span class="p">,</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"code -w"</span><span class="w"> </span><span class="c1"># VS Code</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"code.cmd -w"</span><span class="w"> </span><span class="c1"># VS Code on Windows</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"bbedit -w"</span><span class="w"> </span><span class="c1"># BBEdit</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"subl -n -w"</span><span class="w"> </span><span class="c1"># Sublime Text</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"mate -w"</span><span class="w"> </span><span class="c1"># TextMate</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"C:/Program Files/Notepad++/notepad++.exe"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"-multiInst"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-notabbar"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-nosession"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-noPlugin"</span><span class="p">]</span><span class="w"> </span><span class="c1"># Notepad++</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"idea --temp-project --wait"</span><span class="w"> </span><span class="c1">#IntelliJ</span>
|
||||
<span class="n">editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"idea --temp-project --wait"</span><span class="w"> </span><span class="c1">#IntelliJ</span>
|
||||
</code></pre></div>
|
||||
<p>Obviously, you would only set one line, don't copy them all in!</p>
|
||||
<h2 id="editing-diffs">Editing diffs<a class="headerlink" href="#editing-diffs" title="Permanent link">¶</a></h2>
|
||||
@ -2983,9 +3065,10 @@ portions of lines from the diff or even arbitrarily editing the text of the
|
||||
files.</p>
|
||||
<p>If <code>ui.diff-editor</code> is a string, e.g. <code>"meld"</code>, the arguments will be read from
|
||||
the following config keys.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># merge-tools.meld.program = "meld" # Defaults to the name of the tool if not specified</span>
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">meld</span><span class="p">.</span><span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"/path/to/meld"</span><span class="w"> </span><span class="c1"># May be necessary if `meld` is not in the PATH</span>
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">meld</span><span class="p">.</span><span class="n">edit-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"--newtab"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[merge-tools.meld]</span>
|
||||
<span class="c1"># program = "meld" # Defaults to the name of the tool if not specified</span>
|
||||
<span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"/path/to/meld"</span><span class="w"> </span><span class="c1"># May be necessary if `meld` is not in the PATH</span>
|
||||
<span class="n">edit-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"--newtab"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">]</span>
|
||||
</code></pre></div>
|
||||
<p><code>jj</code> makes the following substitutions:</p>
|
||||
<ul>
|
||||
@ -2999,12 +3082,13 @@ the following config keys.</p>
|
||||
</ul>
|
||||
<p>Finally, <code>ui.diff-editor</code> can be a list that specifies a command and its arguments.</p>
|
||||
<p>Some examples:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Use merge-tools.meld.edit-args</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">diff-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"meld"</span><span class="w"> </span><span class="c1"># Or `kdiff3`, or `diffedit3`, ...</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Use merge-tools.meld.edit-args</span>
|
||||
<span class="n">diff-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"meld"</span><span class="w"> </span><span class="c1"># Or `kdiff3`, or `diffedit3`, ...</span>
|
||||
<span class="c1"># Specify edit-args inline</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">diff-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"/path/to/binary"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--be-helpful"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">]</span>
|
||||
<span class="n">diff-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"/path/to/binary"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--be-helpful"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">]</span>
|
||||
<span class="c1"># Equivalent to ["binary", "$left", "$right"] arguments by default</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">diff-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"binary"</span>
|
||||
<span class="n">diff-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"binary"</span>
|
||||
</code></pre></div>
|
||||
<h3 id="experimental-3-pane-diff-editing">Experimental 3-pane diff editing<a class="headerlink" href="#experimental-3-pane-diff-editing" title="Permanent link">¶</a></h3>
|
||||
<p>We offer two special "3-pane" diff editor configs:</p>
|
||||
@ -3080,10 +3164,11 @@ experience, you can follow <a href="https://github.com/martinvonz/jj/wiki/Vim#us
|
||||
<h2 id="3-way-merge-tools-for-conflict-resolution">3-way merge tools for conflict resolution<a class="headerlink" href="#3-way-merge-tools-for-conflict-resolution" title="Permanent link">¶</a></h2>
|
||||
<p>The <code>ui.merge-editor</code> key specifies the tool used for three-way merge tools
|
||||
by <code>jj resolve</code>. For example:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Use merge-tools.meld.merge-args</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">merge-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"meld"</span><span class="w"> </span><span class="c1"># Or "vscode" or "vscodium" or "kdiff3" or "vimdiff"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[ui]</span>
|
||||
<span class="c1"># Use merge-tools.meld.merge-args</span>
|
||||
<span class="n">merge-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"meld"</span><span class="w"> </span><span class="c1"># Or "vscode" or "vscodium" or "kdiff3" or "vimdiff"</span>
|
||||
<span class="c1"># Specify merge-args inline</span>
|
||||
<span class="n">ui</span><span class="p">.</span><span class="n">merge-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"meld"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">]</span>
|
||||
<span class="n">merge-editor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"meld"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">]</span>
|
||||
</code></pre></div>
|
||||
<p>The "vscode", "vscodium", "meld", "kdiff3", and "vimdiff" tools can be used out of the box,
|
||||
as long as they are installed.</p>
|
||||
@ -3096,16 +3181,19 @@ specified either inline or in the <code>merge-tools.TOOL.merge-args</code> key.
|
||||
example of how to set this key and other tool configuration options, here is
|
||||
the out-of-the-box configuration of the three default tools. (There is no need
|
||||
to copy it to your config file verbatim, but you are welcome to customize it.)</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># merge-tools.kdiff3.program = "kdiff3" # Defaults to the name of the tool if not specified</span>
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">kdiff3</span><span class="p">.</span><span class="n">merge-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--auto"</span><span class="p">]</span>
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">meld</span><span class="p">.</span><span class="n">merge-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--auto-merge"</span><span class="p">]</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[merge-tools.kdiff3]</span>
|
||||
<span class="c1"># program = "kdiff3" # Defaults to the name of the tool if not specified</span>
|
||||
<span class="n">merge-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--auto"</span><span class="p">]</span>
|
||||
<span class="k">[merge-tools.meld]</span>
|
||||
<span class="n">merge-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--auto-merge"</span><span class="p">]</span>
|
||||
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">vimdiff</span><span class="p">.</span><span class="n">merge-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"-f"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-d"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-M"</span><span class="p">,</span>
|
||||
<span class="k">[merge-tools.vimdiff]</span>
|
||||
<span class="n">merge-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s2">"-f"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-d"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-M"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s2">"$right"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s2">"wincmd J"</span><span class="p">,</span><span class="w"> </span><span class="s2">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s2">"set modifiable"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s2">"set write"</span><span class="p">]</span>
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">vimdiff</span><span class="p">.</span><span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"vim"</span>
|
||||
<span class="n">merge-tools</span><span class="p">.</span><span class="n">vimdiff</span><span class="p">.</span><span class="n">merge-tool-edits-conflict-markers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c1"># See below for an explanation</span>
|
||||
<span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"vim"</span>
|
||||
<span class="n">merge-tool-edits-conflict-markers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c1"># See below for an explanation</span>
|
||||
</code></pre></div>
|
||||
<p><code>jj</code> makes the following substitutions:</p>
|
||||
<ul>
|
||||
@ -3124,9 +3212,19 @@ to copy it to your config file verbatim, but you are welcome to customize it.)</
|
||||
</ul>
|
||||
<h3 id="editing-conflict-markers-with-a-tool-or-a-text-editor">Editing conflict markers with a tool or a text editor<a class="headerlink" href="#editing-conflict-markers-with-a-tool-or-a-text-editor" title="Permanent link">¶</a></h3>
|
||||
<p>By default, the merge tool starts with an empty output file. If the tool puts
|
||||
anything into the output file, and exits with the 0 exit code,
|
||||
<code>jj</code> assumes that the conflict is fully resolved. This is appropriate for most
|
||||
graphical merge tools.</p>
|
||||
anything into the output file and exits with the 0 exit code,
|
||||
<code>jj</code> assumes that the conflict is fully resolved, while if the tool exits with
|
||||
a non-zero exit code, <code>jj</code> assumes that the merge should be cancelled.
|
||||
This is appropriate for most graphical merge tools.</p>
|
||||
<p>For merge tools which try to automatically resolve conflicts without user input,
|
||||
this behavior may not be desired. For instance, some automatic merge tools use
|
||||
an exit code of 1 to indicate that some conflicts were unable to be resolved and
|
||||
that the output file should contain conflict markers. In that case, you could
|
||||
set the config option <code>merge-tools.TOOL.merge-conflict-exit-codes = [1]</code> to tell
|
||||
<code>jj</code> to expect conflict markers in the output file if the exit code is 1. If a
|
||||
merge tool produces output using Git's "diff3" conflict style, <code>jj</code> should be
|
||||
able to parse it correctly, so many Git merge drivers should be usable with <code>jj</code>
|
||||
as well.</p>
|
||||
<p>Some tools (e.g. <code>vimdiff</code>) can present a multi-way diff but don't resolve
|
||||
conflict themselves. When using such tools, <code>jj</code>
|
||||
can help you by populating the output file with conflict markers before starting
|
||||
@ -3136,7 +3234,10 @@ tool fill it in). To do that, set the
|
||||
<p>With this option set, if the output file still contains conflict markers after
|
||||
the conflict is done, <code>jj</code> assumes that the conflict was only partially resolved
|
||||
and parses the conflict markers to get the new state of the conflict. The
|
||||
conflict is considered fully resolved when there are no conflict markers left.</p>
|
||||
conflict is considered fully resolved when there are no conflict markers left.
|
||||
The conflict marker style can also be customized per tool using the
|
||||
<code>merge-tools.TOOL.conflict-marker-style</code> option, which takes the same values as
|
||||
<a href="#conflict-marker-style"><code>ui.conflict-marker-style</code></a>.</p>
|
||||
<h2 id="code-formatting-and-other-file-content-transformations">Code formatting and other file content transformations<a class="headerlink" href="#code-formatting-and-other-file-content-transformations" title="Permanent link">¶</a></h2>
|
||||
<p>The <code>jj fix</code> command allows you to efficiently rewrite files in complex commit
|
||||
graphs with no risk of introducing conflicts, using tools like <code>clang-format</code> or
|
||||
@ -3195,11 +3296,13 @@ GnuPG or SSH signing keys.</p>
|
||||
</code></pre></div>
|
||||
<p>By default the gpg backend will look for a <code>gpg</code> binary on your path. If you want
|
||||
to change the program used or specify a path to <code>gpg</code> explicitly you can set:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">signing</span><span class="p">.</span><span class="n">backends</span><span class="p">.</span><span class="n">gpg</span><span class="p">.</span><span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"gpg2"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[signing]</span>
|
||||
<span class="n">backends</span><span class="p">.</span><span class="n">gpg</span><span class="p">.</span><span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"gpg2"</span>
|
||||
</code></pre></div>
|
||||
<p>Also by default the gpg backend will ignore key expiry when verifying commit signatures.
|
||||
To consider expired keys as invalid you can set:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">signing</span><span class="p">.</span><span class="n">backends</span><span class="p">.</span><span class="n">gpg</span><span class="p">.</span><span class="n">allow-expired-keys</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[signing]</span>
|
||||
<span class="n">backends</span><span class="p">.</span><span class="n">gpg</span><span class="p">.</span><span class="n">allow-expired-keys</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span>
|
||||
</code></pre></div>
|
||||
<h3 id="ssh-signing">SSH Signing<a class="headerlink" href="#ssh-signing" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[signing]</span>
|
||||
@ -3211,14 +3314,16 @@ To consider expired keys as invalid you can set:</p>
|
||||
</code></pre></div>
|
||||
<p>By default the ssh backend will look for a <code>ssh-keygen</code> binary on your path. If you want
|
||||
to change the program used or specify a path to <code>ssh-keygen</code> explicitly you can set:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">signing</span><span class="p">.</span><span class="n">backends</span><span class="p">.</span><span class="n">ssh</span><span class="p">.</span><span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"/path/to/ssh-keygen"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[signing]</span>
|
||||
<span class="n">backends</span><span class="p">.</span><span class="n">ssh</span><span class="p">.</span><span class="n">program</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"/path/to/ssh-keygen"</span>
|
||||
</code></pre></div>
|
||||
<p>When verifying commit signatures the ssh backend needs to be provided with an allowed-signers
|
||||
file containing the public keys of authors whose signatures you want to be able to verify.</p>
|
||||
<p>You can find the format for this file in the
|
||||
<a href="https://man.openbsd.org/ssh-keygen#ALLOWED_SIGNERS">ssh-keygen man page</a>. This can be provided
|
||||
as follows:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">signing</span><span class="p">.</span><span class="n">backends</span><span class="p">.</span><span class="n">ssh</span><span class="p">.</span><span class="n">allowed-signers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"/path/to/allowed-signers"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[signing]</span>
|
||||
<span class="n">backends</span><span class="p">.</span><span class="n">ssh</span><span class="p">.</span><span class="n">allowed-signers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"/path/to/allowed-signers"</span>
|
||||
</code></pre></div>
|
||||
<h2 id="git-settings">Git settings<a class="headerlink" href="#git-settings" title="Permanent link">¶</a></h2>
|
||||
<h3 id="default-remotes-for-jj-git-fetch-and-jj-git-push">Default remotes for <code>jj git fetch</code> and <code>jj git push</code><a class="headerlink" href="#default-remotes-for-jj-git-fetch-and-jj-git-push" title="Permanent link">¶</a></h3>
|
||||
@ -3250,7 +3355,8 @@ may be undesirable in some repositories, e.g.:</p>
|
||||
resulting in an unhelpful conflicted state.</li>
|
||||
</ul>
|
||||
<p>You can enable this behavior by setting <code>git.auto-local-bookmark</code> like so,</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">git</span><span class="p">.</span><span class="n">auto-local-bookmark</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[git]</span>
|
||||
<span class="n">auto-local-bookmark</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
||||
</code></pre></div>
|
||||
<p>This setting is applied only to new remote bookmarks. Existing remote bookmarks
|
||||
can be tracked individually by using <code>jj bookmark track</code>/<code>untrack</code> commands.</p>
|
||||
@ -3266,21 +3372,23 @@ to be <a href="https://git-scm.com/docs/gitglossary/#Documentation/gitglossary.t
|
||||
then be abandoned, and any descendant commits will be rebased off of them (as
|
||||
usual when commits are abandoned). You can disable this behavior and instead
|
||||
leave the Git-unreachable commits in your repo by setting:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">git</span><span class="p">.</span><span class="n">abandon-unreachable-commits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[git]</span>
|
||||
<span class="n">abandon-unreachable-commits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span>
|
||||
</code></pre></div>
|
||||
<h3 id="prefix-for-generated-bookmarks-on-push">Prefix for generated bookmarks on push<a class="headerlink" href="#prefix-for-generated-bookmarks-on-push" title="Permanent link">¶</a></h3>
|
||||
<p><code>jj git push --change</code> generates bookmark names with a prefix of "push-" by
|
||||
default. You can pick a different prefix by setting <code>git.push-bookmark-prefix</code>. For
|
||||
example:</p>
|
||||
<div class="codehilite"><pre><span></span><code>git.push-bookmark-prefix = "martinvonz/push-"
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[git]</span>
|
||||
<span class="n">push-bookmark-prefix</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"martinvonz/push-"</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3 id="set-of-private-commits">Set of private commits<a class="headerlink" href="#set-of-private-commits" title="Permanent link">¶</a></h3>
|
||||
<p>You can configure the set of private commits by setting <code>git.private-commits</code> to
|
||||
a revset. The value is a revset of commits that Jujutsu will refuse to push. If
|
||||
unset, all commits are eligible to be pushed.</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Prevent pushing work in progress or anything explicitly labeled "private"</span>
|
||||
<span class="n">git</span><span class="p">.</span><span class="n">private-commits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"description(glob:'wip:*') | description(glob:'private:*')"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[git]</span>
|
||||
<span class="c1"># Prevent pushing work in progress or anything explicitly labeled "private"</span>
|
||||
<span class="n">private-commits</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"description(glob:'wip:*') | description(glob:'private:*')"</span>
|
||||
</code></pre></div>
|
||||
<p>If a commit is in <code>git.private-commits</code> but is already on the remote, then it is
|
||||
not considered a private commit. Commits that are immutable are also excluded
|
||||
@ -3318,9 +3426,10 @@ tracked again.</p>
|
||||
snapshot that are larger than a certain size; the default is 1MiB. This can be
|
||||
changed by setting <code>snapshot.max-new-file-size</code> to a different value. For
|
||||
example:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="n">snapshot</span><span class="p">.</span><span class="n">max-new-file-size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"10MiB"</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="k">[snapshot]</span>
|
||||
<span class="n">max-new-file-size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"10MiB"</span>
|
||||
<span class="c1"># the following is equivalent</span>
|
||||
<span class="n">snapshot</span><span class="p">.</span><span class="n">max-new-file-size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10485760</span>
|
||||
<span class="n">max-new-file-size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10485760</span>
|
||||
</code></pre></div>
|
||||
<p>The value can be specified using a human readable string with typical suffixes;
|
||||
<code>B</code>, <code>MiB</code>, <code>GB</code>, etc. By default, if no suffix is provided, or the value is a
|
||||
|
@ -618,6 +618,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#alternative-conflict-marker-styles" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Alternative conflict marker styles
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1223,27 +1232,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1371,6 +1359,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1422,6 +1430,15 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#alternative-conflict-marker-styles" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Alternative conflict marker styles
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1441,6 +1458,11 @@
|
||||
|
||||
<h1 id="first-class-conflicts">First-class conflicts<a class="headerlink" href="#first-class-conflicts" title="Permanent link">¶</a></h1>
|
||||
<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2>
|
||||
<p>Conflicts happen when Jujutsu can't figure out how to merge different changes
|
||||
made to the same file. For instance, this can happen if two people are working
|
||||
on the same file and make different changes to the same part of the file, and
|
||||
then their commits are merged together with <code>jj new</code> (or one is rebased onto the
|
||||
other with <code>jj rebase</code>).</p>
|
||||
<p>Unlike most other VCSs, Jujutsu can record conflicted states in commits. For
|
||||
example, if you rebase a commit and it results in a conflict, the conflict will
|
||||
be recorded in the rebased commit and the rebase operation will succeed. You can
|
||||
@ -1483,55 +1505,94 @@ conflict doesn't result in a nested conflict markers (see
|
||||
<a href="../working-copy/#conflicts">here</a>.</p>
|
||||
<h2 id="conflict-markers">Conflict markers<a class="headerlink" href="#conflict-markers" title="Permanent link">¶</a></h2>
|
||||
<p>Conflicts are "materialized" using <em>conflict markers</em> in various contexts. For
|
||||
example, when you run <code>jj edit</code> on a commit with a conflict, it will be
|
||||
materialized in the working copy. Conflicts are also materialized when they are
|
||||
part of diff output (e.g. <code>jj show</code> on a commit that introduces or resolves a
|
||||
conflict). Here's an example of how Git can render a conflict using <a href="https://git-scm.com/docs/git-merge#_how_conflicts_are_presented">its "diff3"
|
||||
style</a>:</p>
|
||||
<div class="highlight"><pre><span></span><code> <<<<<<< left
|
||||
apple
|
||||
grapefruit
|
||||
orange
|
||||
||||||| base
|
||||
apple
|
||||
grape
|
||||
orange
|
||||
=======
|
||||
APPLE
|
||||
GRAPE
|
||||
ORANGE
|
||||
>>>>>>> right
|
||||
example, when you run <code>jj new</code> or <code>jj edit</code> on a commit with a conflict, it will
|
||||
be materialized in the working copy. Conflicts are also materialized when they
|
||||
are part of diff output (e.g. <code>jj show</code> on a commit that introduces or resolves
|
||||
a conflict).</p>
|
||||
<p>As an example, imagine that you have a file which contains the following text,
|
||||
all in lowercase:</p>
|
||||
<div class="highlight"><pre><span></span><code>apple
|
||||
grape
|
||||
orange
|
||||
</code></pre></div>
|
||||
<p>In this example, the left side changed "grape" to "grapefruit", and the right
|
||||
side made all lines uppercase. To resolve the conflict, we would presumably keep
|
||||
the right side (the third section) and replace "GRAPE" by "GRAPEFRUIT". This way
|
||||
of visually finding the changes between the base and one side and then applying
|
||||
them to the other side is a common way of resolving conflicts when using Git's
|
||||
"diff3" style.</p>
|
||||
<p>Jujutsu helps you by combining the base and one side into a unified diff for
|
||||
you, making it easier to spot the differences to apply to the other side. Here's
|
||||
how that would look for the same example as above:</p>
|
||||
<div class="highlight"><pre><span></span><code> <<<<<<<
|
||||
%%%%%%%
|
||||
apple
|
||||
-grape
|
||||
+grapefruit
|
||||
orange
|
||||
+++++++
|
||||
APPLE
|
||||
GRAPE
|
||||
ORANGE
|
||||
>>>>>>>
|
||||
<p>One person replaces the word "grape" with "grapefruit" in commit A, while
|
||||
another person changes every line to uppercase in commit B. If you merge the
|
||||
changes together with <code>jj new A B</code>, the resulting commit will have a conflict
|
||||
since Jujutsu can't figure out how to combine these changes. Therefore, Jujutsu
|
||||
will materialize the conflict in the working copy using conflict markers, which
|
||||
would look like this:</p>
|
||||
<div class="highlight"><pre><span></span><code><<<<<<< Conflict 1 of 1
|
||||
%%%%%%% Changes from base to side #1
|
||||
apple
|
||||
-grape
|
||||
+grapefruit
|
||||
orange
|
||||
+++++++ Contents of side #2
|
||||
APPLE
|
||||
GRAPE
|
||||
ORANGE
|
||||
>>>>>>> Conflict 1 of 1 ends
|
||||
</code></pre></div>
|
||||
<p>As in Git, the <code><<<<<<<</code> and <code>>>>>>>></code> lines mark the start and end of the
|
||||
conflict. The <code>%%%%%%%</code> line indicates the start of a diff. The <code>+++++++</code>
|
||||
line indicates the start of a snapshot (not a diff).</p>
|
||||
<p>There is another reason for this format (in addition to helping you spot the
|
||||
differences): The format supports more complex conflicts involving more than 3
|
||||
inputs. Such conflicts can arise when you merge more than 2 commits. They would
|
||||
typically be rendered as a single snapshot (as above) but with more than one
|
||||
unified diffs. The process for resolving them is similar: Manually apply each
|
||||
diff onto the snapshot.</p>
|
||||
<p>The markers <code><<<<<<<</code> and <code>>>>>>>></code> indicate the start and end of a conflict
|
||||
respectively. The marker <code>+++++++</code> indicates the start of a snapshot, while the
|
||||
marker <code>%%%%%%%</code> indicates the start of a diff to apply to the snapshot.
|
||||
Therefore, to resolve this conflict, you would apply the diff (changing "grape"
|
||||
to "grapefruit") to the snapshot (the side with every line in uppercase),
|
||||
editing the file to look like this:</p>
|
||||
<div class="highlight"><pre><span></span><code>APPLE
|
||||
GRAPEFRUIT
|
||||
ORANGE
|
||||
</code></pre></div>
|
||||
<p>In practice, conflicts are usually 2-sided, meaning that there's only 2
|
||||
conflicting changes being merged together at a time, but Jujutsu supports
|
||||
conflicts with arbitrarily many sides, which can happen when merging 3 or more
|
||||
commits at once. In that case, you would see a single snapshot section and
|
||||
multiple diff sections.</p>
|
||||
<p>Compared to just showing the content of each side of the conflict, the main
|
||||
benefit of Jujutsu's style of conflict markers is that you don't need to spend
|
||||
time manually comparing the sides to spot the differences between them. This is
|
||||
especially beneficial for many-sided conflicts, since resolving them just
|
||||
requires applying each diff to the snapshot one-by-one.</p>
|
||||
<h2 id="alternative-conflict-marker-styles">Alternative conflict marker styles<a class="headerlink" href="#alternative-conflict-marker-styles" title="Permanent link">¶</a></h2>
|
||||
<p>If you prefer to just see the contents of each side of the conflict without the
|
||||
diff, Jujutsu also supports a "snapshot" style, which can be enabled by setting
|
||||
the <code>ui.conflict-marker-style</code> config option to "snapshot":</p>
|
||||
<div class="highlight"><pre><span></span><code><<<<<<< Conflict 1 of 1
|
||||
+++++++ Contents of side #1
|
||||
apple
|
||||
grapefruit
|
||||
orange
|
||||
------- Contents of base
|
||||
apple
|
||||
grape
|
||||
orange
|
||||
+++++++ Contents of side #2
|
||||
APPLE
|
||||
GRAPE
|
||||
ORANGE
|
||||
>>>>>>> Conflict 1 of 1 ends
|
||||
</code></pre></div>
|
||||
<p>Some tools expect Git-style conflict markers, so Jujutsu also supports <a href="https://git-scm.com/docs/git-merge#_how_conflicts_are_presented">Git's
|
||||
"diff3" style</a>
|
||||
conflict markers by setting the <code>ui.conflict-marker-style</code> config option to
|
||||
"git":</p>
|
||||
<div class="highlight"><pre><span></span><code><<<<<<< Side #1 (Conflict 1 of 1)
|
||||
apple
|
||||
grapefruit
|
||||
orange
|
||||
||||||| Base
|
||||
apple
|
||||
grape
|
||||
orange
|
||||
=======
|
||||
APPLE
|
||||
GRAPE
|
||||
ORANGE
|
||||
>>>>>>> Side #2 (Conflict 1 of 1 ends)
|
||||
</code></pre></div>
|
||||
<p>This conflict marker style only supports 2-sided conflicts though, so it falls
|
||||
back to the similar "snapshot" conflict markers if there are more than 2 sides
|
||||
to the conflict.</p>
|
||||
|
||||
|
||||
|
||||
|
@ -1159,6 +1159,39 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#editor-setup" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Editor setup
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Editor setup">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#visual-studio-code" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Visual Studio Code
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#zed" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Zed
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1177,31 +1210,36 @@
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#setting-up-the-prerequisites" class="md-nav__link">
|
||||
<a href="#install-uv" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Setting up the prerequisites
|
||||
Install uv
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#building-the-html-docs-locally-with-live-reload" class="md-nav__link">
|
||||
<a href="#build-the-docs" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Building the HTML docs locally (with live reload)
|
||||
Build the docs
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#how-to-build-the-entire-website-not-usually-necessary" class="md-nav__link">
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#building-the-entire-website" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
How to build the entire website (not usually necessary)
|
||||
Building the entire website
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="How to build the entire website (not usually necessary)">
|
||||
<nav class="md-nav" aria-label="Building the entire website">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1216,11 +1254,6 @@
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1382,27 +1415,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1530,6 +1542,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1660,6 +1692,39 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#editor-setup" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Editor setup
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Editor setup">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#visual-studio-code" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Visual Studio Code
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#zed" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Zed
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1678,31 +1743,36 @@
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#setting-up-the-prerequisites" class="md-nav__link">
|
||||
<a href="#install-uv" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Setting up the prerequisites
|
||||
Install uv
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#building-the-html-docs-locally-with-live-reload" class="md-nav__link">
|
||||
<a href="#build-the-docs" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Building the HTML docs locally (with live reload)
|
||||
Build the docs
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#how-to-build-the-entire-website-not-usually-necessary" class="md-nav__link">
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#building-the-entire-website" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
How to build the entire website (not usually necessary)
|
||||
Building the entire website
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="How to build the entire website (not usually necessary)">
|
||||
<nav class="md-nav" aria-label="Building the entire website">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1717,11 +1787,6 @@
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1790,7 +1855,7 @@ test and document.</p>
|
||||
the PR description can even be empty, but feel free to include a personal
|
||||
message. We start the commit message with <code><topic>:</code> and don't use
|
||||
<a href="https://www.conventionalcommits.org/en/v1.0.0/">conventional commits</a>. This means if
|
||||
you modified a command in the CLI, use its name as the topic, e.g
|
||||
you modified a command in the CLI, use its name as the topic, e.g.
|
||||
<code>next/prev: <your-modification></code> or <code>conflicts: <your-modification></code>. We don't
|
||||
currently have a specific guidelines on what to write in the topic field, but
|
||||
the reviewers will help you provide a topic if you have difficulties choosing
|
||||
@ -1939,45 +2004,113 @@ can verify that <code>mold</code> was indeed used by running
|
||||
to use" instructions</a>.</p>
|
||||
<p>On recent versions of MacOS, the default linker Rust uses is already
|
||||
multi-threaded. It should use all the CPU cores without any configuration.</p>
|
||||
<h3 id="editor-setup">Editor setup<a class="headerlink" href="#editor-setup" title="Permanent link">¶</a></h3>
|
||||
<h4 id="visual-studio-code">Visual Studio Code<a class="headerlink" href="#visual-studio-code" title="Permanent link">¶</a></h4>
|
||||
<p>We recommend at least these settings:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
||||
<span class="w"> </span><span class="s2">"files.insertFinalNewline"</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"files.trimTrailingWhitespace"</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"[rust]"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="s2">"files.trimTrailingWhitespace"</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<h4 id="zed">Zed<a class="headerlink" href="#zed" title="Permanent link">¶</a></h4>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1">// .zed/settings.json</span>
|
||||
<span class="p">{</span>
|
||||
<span class="w"> </span><span class="s2">"ensure_final_newline_on_save"</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="s2">"remove_trailing_whitespace_on_save"</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
||||
|
||||
<span class="w"> </span><span class="s2">"languages"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="c1">// We don't use a formatter for Markdown files, so format_on_save would just</span>
|
||||
<span class="w"> </span><span class="c1">// mess with others' docs</span>
|
||||
<span class="w"> </span><span class="s2">"Markdown"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s2">"format_on_save"</span><span class="o">:</span><span class="w"> </span><span class="s2">"off"</span><span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="s2">"Rust"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="s2">"format_on_save"</span><span class="o">:</span><span class="w"> </span><span class="s2">"on"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="c1">// Avoid removing trailing spaces within multi-line string literals</span>
|
||||
<span class="w"> </span><span class="s2">"remove_trailing_whitespace_on_save"</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">},</span>
|
||||
|
||||
<span class="w"> </span><span class="s2">"lsp"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="s2">"rust-analyzer"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="s2">"initialization_options"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
||||
<span class="w"> </span><span class="c1">// If you are working on docs and don't need `cargo check`, uncomment</span>
|
||||
<span class="w"> </span><span class="c1">// this option:</span>
|
||||
<span class="w"> </span><span class="c1">//</span>
|
||||
<span class="w"> </span><span class="c1">// "checkOnSave": false,</span>
|
||||
|
||||
<span class="w"> </span><span class="c1">// Use nightly `rustfmt`, equivalent to `cargo +nightly fmt`</span>
|
||||
<span class="w"> </span><span class="s2">"rustfmt"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s2">"extraArgs"</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"+nightly"</span><span class="p">]</span><span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="w"> </span><span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
<h2 id="previewing-the-html-documentation">Previewing the HTML documentation<a class="headerlink" href="#previewing-the-html-documentation" title="Permanent link">¶</a></h2>
|
||||
<p>The documentation for <code>jj</code> is automatically published to the website at
|
||||
<p>The documentation for <code>jj</code> is automatically published online at
|
||||
<a href="https://martinvonz.github.io/jj/">https://martinvonz.github.io/jj/</a>.</p>
|
||||
<p>When editing documentation, we'd appreciate it if you checked that the
|
||||
result will look as expected when published to the website.</p>
|
||||
<h3 id="setting-up-the-prerequisites">Setting up the prerequisites<a class="headerlink" href="#setting-up-the-prerequisites" title="Permanent link">¶</a></h3>
|
||||
<p>To build the website, you must have Python and <code>poetry 1.8+</code> installed (the
|
||||
latest version is recommended). It is easiest to install <code>poetry</code> via <code>pipx</code>, as
|
||||
explained in the <a href="https://python-poetry.org/docs/#installation">Poetry installation instructions</a>. A few helpful points from
|
||||
the instructions: <code>pipx</code> can often be installed from your distribution, e.g.
|
||||
<code>sudo apt install pipx</code>; this will usually also install Python for you if
|
||||
necessary. Any version of <code>pipx</code> will do. If you are installing <code>pipx</code> manually,
|
||||
you may first need to follow the <a href="https://docs.python.org/3/using/index.html">Python installation instructions</a>.</p>
|
||||
<p>Once you have <code>poetry</code> installed, you should ask it to install the rest
|
||||
of the required tools into a virtual environment as follows:</p>
|
||||
<div class="highlight"><pre><span></span><code>poetry<span class="w"> </span>install
|
||||
<p>When editing documentation, you should check your changes locally — especially
|
||||
if you are adding a new page, or doing a major rewrite.</p>
|
||||
<h3 id="install-uv">Install <code>uv</code><a class="headerlink" href="#install-uv" title="Permanent link">¶</a></h3>
|
||||
<p>The only thing you need is <a href="https://docs.astral.sh/uv/"><code>uv</code></a> (version 0.5.1 or newer).</p>
|
||||
<p><code>uv</code> is a Python project manager written in Rust. It will fetch the right Python
|
||||
version and the dependencies needed to build the docs. Install it like so:</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">macOS/Linux</label><label for="__tabbed_1_2">Windows</label><label for="__tabbed_1_3">Homebrew</label><label for="__tabbed_1_4">Cargo</label><label for="__tabbed_1_5">Other options</label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
<div class="copy highlight"><pre><span></span><code>curl<span class="w"> </span>-LsSf<span class="w"> </span>https://astral.sh/uv/install.sh<span class="w"> </span><span class="p">|</span><span class="w"> </span>sh
|
||||
</code></pre></div>
|
||||
<p>You may get requests to "unlock a keyring", <a href="https://github.com/python-poetry/poetry/issues/1917">an error messages about failing to
|
||||
do so</a>, or Poetry may
|
||||
<a href="https://github.com/python-poetry/poetry/issues/8623">simply hang indefinitely</a>.
|
||||
The workaround is to either to unlock the keyring or to run the following, and
|
||||
then to try <code>poetry install</code> again:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># For sh-compatible shells or recent versions of `fish`</span>
|
||||
<span class="nb">export</span><span class="w"> </span><span class="nv">PYTHON_KEYRING_BACKEND</span><span class="o">=</span>keyring.backends.fail.Keyring
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>If you don't have <code>~/.local/bin</code> in your <code>PATH</code>, the installer will
|
||||
modify your shell profile. To avoid it:</p>
|
||||
<div class="copy highlight"><pre><span></span><code>curl<span class="w"> </span>-LsSf<span class="w"> </span>https://astral.sh/uv/install.sh<span class="w"> </span><span class="p">|</span><span class="w"> </span>env<span class="w"> </span><span class="nv">INSTALLER_NO_MODIFY_PATH</span><span class="o">=</span><span class="m">1</span><span class="w"> </span>sh
|
||||
</code></pre></div>
|
||||
<h3 id="building-the-html-docs-locally-with-live-reload">Building the HTML docs locally (with live reload)<a class="headerlink" href="#building-the-html-docs-locally-with-live-reload" title="Permanent link">¶</a></h3>
|
||||
<p>The HTML docs are built with <a href="https://github.com/mkdocs/mkdocs">MkDocs</a>. After
|
||||
following the above steps, you should be able to view the docs by running</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Note: this and all the commands below should be run from the root of</span>
|
||||
<span class="c1"># the `jj` source tree.</span>
|
||||
poetry<span class="w"> </span>run<span class="w"> </span>--<span class="w"> </span>mkdocs<span class="w"> </span>serve
|
||||
</div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="copy highlight"><pre><span></span><code>powershell<span class="w"> </span>-ExecutionPolicy<span class="w"> </span>ByPass<span class="w"> </span>-c<span class="w"> </span><span class="s2">"irm https://astral.sh/uv/install.ps1 | iex"</span>
|
||||
</code></pre></div>
|
||||
<p>and opening <a href="http://127.0.0.1:8000">http://127.0.0.1:8000</a> in your browser.</p>
|
||||
<p>As you edit the <code>md</code> files, the website should be rebuilt and reloaded in your
|
||||
browser automatically, unless build errors occur.</p>
|
||||
<p>You should occasionally check the terminal from which you ran <code>mkdocs serve</code> for
|
||||
any build errors or warnings. Warnings about <code>"GET /versions.json HTTP/1.1" code
|
||||
404</code> are expected and harmless.</p>
|
||||
<h3 id="how-to-build-the-entire-website-not-usually-necessary">How to build the entire website (not usually necessary)<a class="headerlink" href="#how-to-build-the-entire-website-not-usually-necessary" title="Permanent link">¶</a></h3>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="copy highlight"><pre><span></span><code>brew<span class="w"> </span>install<span class="w"> </span>uv
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="copy highlight"><pre><span></span><code><span class="c1"># This might take a while</span>
|
||||
cargo<span class="w"> </span>install<span class="w"> </span>--git<span class="w"> </span>https://github.com/astral-sh/uv<span class="w"> </span>uv
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<ul>
|
||||
<li>Directly download the binaries from GitHub: <a href="https://github.com/astral-sh/uv/releases">uv releases</a>.</li>
|
||||
<li>Even more options: <a href="https://docs.astral.sh/uv/getting-started/installation/">Installing uv</a>.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h3 id="build-the-docs">Build the docs<a class="headerlink" href="#build-the-docs" title="Permanent link">¶</a></h3>
|
||||
<p>To build the docs, run from the root of the <code>jj</code> repository:</p>
|
||||
<div class="copy highlight"><pre><span></span><code>uv<span class="w"> </span>run<span class="w"> </span>mkdocs<span class="w"> </span>serve
|
||||
</code></pre></div>
|
||||
<p>Open <a href="http://127.0.0.1:8000">http://127.0.0.1:8000</a> in your browser to see the docs.</p>
|
||||
<p>As you edit the <code>.md</code> files in <code>docs/</code>, the website should be rebuilt and
|
||||
reloaded in your browser automatically.</p>
|
||||
<div class="admonition note">
|
||||
<p class="admonition-title">If the docs are not updating</p>
|
||||
<p>Check the terminal from which you ran <code>uv run mkdocs serve</code> for any build
|
||||
errors or warnings. Warnings about <code>"GET /versions.json HTTP/1.1" code 404</code>
|
||||
are expected and harmless.</p>
|
||||
</div>
|
||||
<h2 id="building-the-entire-website">Building the entire website<a class="headerlink" href="#building-the-entire-website" title="Permanent link">¶</a></h2>
|
||||
<div class="admonition tip">
|
||||
<p class="admonition-title">Tip</p>
|
||||
<p>Building the entire website is not usually necessary. If you are editing
|
||||
documentation, the previous section is enough.</p>
|
||||
<p>These instructions are relevant if you are working on the versioning of the
|
||||
documentation that we currently do with <code>mike</code>.</p>
|
||||
</div>
|
||||
<p>The full <code>jj</code> website includes the documentation for several <code>jj</code> versions
|
||||
(<code>prerelease</code>, latest release, and the older releases). The top-level
|
||||
URL <a href="https://martinvonz.github.io/jj">https://martinvonz.github.io/jj</a> redirects to
|
||||
@ -1985,17 +2118,17 @@ URL <a href="https://martinvonz.github.io/jj">https://martinvonz.github.io/jj</a
|
||||
the docs for the last stable version.</p>
|
||||
<p>The different versions of documentation are managed and deployed with
|
||||
<a href="https://github.com/jimporter/mike"><code>mike</code></a>, which can be run with
|
||||
<code>poetry run -- mike</code>.</p>
|
||||
<code>uv run mike</code>.</p>
|
||||
<p>On a POSIX system or WSL, one way to build the entire website is as follows (on
|
||||
Windows, you'll need to understand and adapt the shell script):</p>
|
||||
<ol>
|
||||
<li>
|
||||
<p>Check out <code>jj</code> as a co-located <code>jj + git</code> repository (<code>jj clone --colocate</code>),
|
||||
cloned from your fork of <code>jj</code> (e.g. <code>jjfan.github.com/jj</code>). You can also use a
|
||||
cloned from your fork of <code>jj</code> (e.g. <code>github.com/jjfan/jj</code>). You can also use a
|
||||
pure Git repo if you prefer.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Make sure <code>jjfan.github.com/jj</code> includes the <code>gh-pages</code> bookmark of the jj repo
|
||||
<p>Make sure <code>github.com/jjfan/jj</code> includes the <code>gh-pages</code> bookmark of the jj repo
|
||||
and run <code>git fetch origin gh-pages</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
@ -2003,7 +2136,9 @@ and run <code>git fetch origin gh-pages</code>.</p>
|
||||
to use the <code>gh-pages</code> bookmark (this is usually the default).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run the same <code>sh</code> script that is used in GitHub CI (details below):</p>
|
||||
<p>Install <code>uv</code> as explained in <a href="#previewing-the-html-documentation">Previewing the HTML
|
||||
documentation</a>, and run the same <code>sh</code> script
|
||||
that is used in GitHub CI (details below):</p>
|
||||
<div class="highlight"><pre><span></span><code>.github/scripts/docs-build-deploy<span class="w"> </span><span class="s1">'https://jjfan.github.io/jj/'</span><span class="se">\</span>
|
||||
<span class="w"> </span>prerelease<span class="w"> </span>main<span class="w"> </span>--push
|
||||
</code></pre></div>
|
||||
@ -2038,15 +2173,15 @@ jj<span class="w"> </span>git<span class="w"> </span>push<span class="w"> </span
|
||||
set my-changes -r gh-pages</code> BEFORE running the above commands.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<h4 id="explanation-of-the-docs-build-deploy-script">Explanation of the <code>docs-build-deploy</code> script<a class="headerlink" href="#explanation-of-the-docs-build-deploy-script" title="Permanent link">¶</a></h4>
|
||||
<h3 id="explanation-of-the-docs-build-deploy-script">Explanation of the <code>docs-build-deploy</code> script<a class="headerlink" href="#explanation-of-the-docs-build-deploy-script" title="Permanent link">¶</a></h3>
|
||||
<p>The script sets up the <code>site_url</code> mkdocs config to
|
||||
<code>'https://jjfan.github.io/jj/'</code>. If this config does not match the URL
|
||||
where you loaded the website, some minor website features (like the
|
||||
version switching widget) will have reduced functionality.</p>
|
||||
<p>Then, the script passes the rest of its arguments to <code>potery run -- mike
|
||||
deploy</code>, which does the rest of the job. Run <code>poetry run -- mike help deploy</code> to
|
||||
<p>Then, the script passes the rest of its arguments to <code>uv run mike
|
||||
deploy</code>, which does the rest of the job. Run <code>uv run mike help deploy</code> to
|
||||
find out what the arguments do.</p>
|
||||
<p>If you need to do something more complicated, you can use <code>poetry run -- mike
|
||||
<p>If you need to do something more complicated, you can use <code>uv run mike
|
||||
...</code> commands. You can also edit the <code>gh-pages</code> bookmark directly, but take care
|
||||
to avoid files that will be overwritten by future invocations of <code>mike</code>. Then,
|
||||
you can submit a PR based on the <code>gh-pages</code> bookmark of
|
||||
|
@ -14,6 +14,8 @@
|
||||
<link rel="prev" href="../tracking-branches/">
|
||||
|
||||
|
||||
<link rel="next" href="../../roadmap/">
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
|
||||
@ -1154,27 +1156,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1531,6 +1512,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1156,27 +1156,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1488,6 +1467,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<link rel="canonical" href="https://martinvonz.github.io/jj/latest/design/git-submodules/">
|
||||
|
||||
|
||||
<link rel="prev" href="../../roadmap/">
|
||||
<link rel="prev" href="../../governance/temporary-voting/">
|
||||
|
||||
|
||||
<link rel="next" href="../git-submodule-storage/">
|
||||
@ -1154,27 +1154,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1539,6 +1518,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1156,27 +1156,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1524,6 +1503,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1839,10 +1838,10 @@ temporary working copy for each parallel command. The working copies will be
|
||||
reused between <code>jj run</code> invocations. They will also be reused within <code>jj run</code>
|
||||
invocation if there are more commits to run on than there are parallel jobs.</p>
|
||||
<p>We will leave ignored files in the temporary directory between runs. That
|
||||
enables incremental builds (e.g by letting cargo reuse its <code>target/</code> directory).
|
||||
However, it also means that runs potentially become less reproducible. We will
|
||||
provide a flag for removing ignored files from the temporary working copies to
|
||||
address that.</p>
|
||||
enables incremental builds (e.g. by letting cargo reuse its <code>target/</code>
|
||||
directory). However, it also means that runs potentially become less
|
||||
reproducible. We will provide a flag for removing ignored files from the
|
||||
temporary working copies to address that.</p>
|
||||
<p>Another problem with leaving ignored files in the temporary directories is that
|
||||
they take up space. That is especially problematic in the case of cargo (the
|
||||
<code>target/</code> directory often takes up tens of GBs). The same flag for cleaning up
|
||||
@ -1862,7 +1861,7 @@ assigned working copy. Let's say the user runs <code>jj run</code> on just commi
|
||||
B, where B's parent is A. Any changes made on top of A would be squashed into
|
||||
A, forming A'. Similarly B' would be formed by squasing it into B. We can then
|
||||
either do a normal rebase of B' onto A', or we can simply update its parent to
|
||||
A'. The former is useful, e.g when the subprocess only makes a partial update
|
||||
A'. The former is useful, e.g. when the subprocess only makes a partial update
|
||||
of the tree based on the parent commit. In addition to these two modes, we may
|
||||
want to have an option to ignore any changes made in the subprocess's working
|
||||
copy.</p>
|
||||
|
@ -1156,27 +1156,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1482,6 +1461,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1156,27 +1156,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1533,6 +1512,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1292,27 +1292,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1440,6 +1419,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1214,27 +1214,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1362,6 +1341,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1232,27 +1232,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1380,6 +1359,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1232,27 +1232,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1380,6 +1359,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1774,8 +1773,7 @@ parent.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Create a copy of a commit on top of another commit</td>
|
||||
<td><code>jj duplicate <source>; jj rebase -r <duplicate commit> -d <destination></code>
|
||||
(there's no single command for it yet)</td>
|
||||
<td><code>jj duplicate <source>; -d <destination></code></td>
|
||||
<td><code>git co <destination>; git cherry-pick <source></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -1827,6 +1825,12 @@ parent.</p>
|
||||
</td>
|
||||
<td><code>git revert <revision></code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Show what revision and author last modified each line of a file</td>
|
||||
<td><code>jj file annotate <path></code>
|
||||
</td>
|
||||
<td><code>git blame <file></code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@ -1274,27 +1274,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1422,6 +1401,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1556,7 +1555,10 @@ a comparison with Git, including how workflows are different, see the
|
||||
<li><strong>Configuration: Partial.</strong> The only configuration from Git (e.g. in
|
||||
<code>~/.gitconfig</code>) that's respected is the following. Feel free to file a bug if
|
||||
you miss any particular configuration options.<ul>
|
||||
<li>The configuration of remotes (<code>[remote "<name>"]</code>).</li>
|
||||
<li>The configuration of remotes (<code>[remote "<name>"]</code>). Only the names and URLs
|
||||
are respected (refspecs are not respected, and
|
||||
<a href="https://github.com/martinvonz/jj/issues/4889">only the last pushurl</a> is
|
||||
respected).</li>
|
||||
<li><code>core.excludesFile</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
@ -1701,15 +1703,16 @@ time.</p>
|
||||
<p>A Jujutsu repo backed by a Git repo has a full Git repo inside, so it is
|
||||
technically possible (though not officially supported) to convert it into a
|
||||
co-located repo like so:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Move the Git repo</span>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Ignore the .jj directory in Git</span>
|
||||
<span class="nb">echo</span><span class="w"> </span><span class="s1">'/*'</span><span class="w"> </span>><span class="w"> </span>.jj/.gitignore
|
||||
<span class="c1"># Move the Git repo</span>
|
||||
mv<span class="w"> </span>.jj/repo/store/git<span class="w"> </span>.git
|
||||
<span class="c1"># Tell jj where to find it</span>
|
||||
<span class="nb">echo</span><span class="w"> </span>-n<span class="w"> </span><span class="s1">'../../../.git'</span><span class="w"> </span>><span class="w"> </span>.jj/repo/store/git_target
|
||||
<span class="c1"># Ignore the .jj directory in Git</span>
|
||||
<span class="nb">echo</span><span class="w"> </span><span class="s1">'/*'</span><span class="w"> </span>><span class="w"> </span>.jj/.gitignore
|
||||
<span class="c1"># Make the Git repository non-bare and set HEAD</span>
|
||||
git<span class="w"> </span>config<span class="w"> </span>--unset<span class="w"> </span>core.bare
|
||||
jj<span class="w"> </span>new<span class="w"> </span>@-
|
||||
<span class="c1"># Convince jj to update .git/HEAD to point to the working-copy commit's parent</span>
|
||||
jj<span class="w"> </span>new<span class="w"> </span><span class="o">&&</span><span class="w"> </span>jj<span class="w"> </span>undo
|
||||
</code></pre></div>
|
||||
<p>We may officially support this in the future. If you try this, we would
|
||||
appreciate feedback and bug reports.</p>
|
||||
|
@ -1343,27 +1343,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1491,6 +1470,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1716,7 +1715,7 @@ $<span class="w"> </span>jj<span class="w"> </span>commit<span class="w"> </span
|
||||
<span class="c1"># on the working-copy commit's *parent* because the working copy itself is empty.</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>bookmark<span class="w"> </span>create<span class="w"> </span>bar<span class="w"> </span>-r<span class="w"> </span>@-<span class="w"> </span><span class="c1"># `bar` now contains the previous two commits.</span>
|
||||
<span class="c1"># Push the bookmark to GitHub (pushes only `bar`)</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>git<span class="w"> </span>push
|
||||
$<span class="w"> </span>jj<span class="w"> </span>git<span class="w"> </span>push<span class="w"> </span>--allow-new
|
||||
</code></pre></div>
|
||||
<p>While it's possible to create a bookmark in advance and commit on top of it in a
|
||||
Git-like manner, you will then need to move the bookmark manually when you create
|
||||
@ -1737,7 +1736,7 @@ $<span class="w"> </span><span class="c1"># Do some more work.</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>commit<span class="w"> </span>-m<span class="w"> </span><span class="s2">"Update tutorial"</span>
|
||||
<span class="c1"># Create a bookmark on the working-copy commit's parent</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>bookmark<span class="w"> </span>create<span class="w"> </span>doc-update<span class="w"> </span>-r<span class="w"> </span>@-
|
||||
$<span class="w"> </span>jj<span class="w"> </span>git<span class="w"> </span>push
|
||||
$<span class="w"> </span>jj<span class="w"> </span>git<span class="w"> </span>push<span class="w"> </span>--allow-new
|
||||
</code></pre></div>
|
||||
<h2 id="working-in-a-jujutsu-repository">Working in a Jujutsu repository<a class="headerlink" href="#working-in-a-jujutsu-repository" title="Permanent link">¶</a></h2>
|
||||
<p>In a Jujutsu repository, the workflow is simplified. If there's no need for
|
||||
|
@ -1448,27 +1448,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1596,6 +1575,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1912,7 +1911,7 @@ bookmarks</a>. See <a href="../bookmarks/">here</a>
|
||||
for details.</p>
|
||||
<p>Unlike in Git, there is no concept of a "current bookmark"; bookmarks <em>do not</em>
|
||||
move when you create a new commit. Bookmarks <em>do</em> automatically follow the
|
||||
commit if it gets <a href="#rewrite">rewritten</a>. </p>
|
||||
commit if it gets <a href="#rewrite">rewritten</a>.</p>
|
||||
<h2 id="branch">Branch<a class="headerlink" href="#branch" title="Permanent link">¶</a></h2>
|
||||
<p>In the context of <code>jj</code>, the work "branch" usually refers to an <a href="#anonymous-branch">anonymous
|
||||
branch</a> or, less formally, a branch of the commit "tree"
|
||||
@ -1922,13 +1921,15 @@ might resemble a tree even when it's not mathematically a tree).</p>
|
||||
these correspond to <a href="#bookmark">bookmarks</a>. In a co-located repository, each
|
||||
local Git branch corresponds to a <code>jj</code> bookmark.</p>
|
||||
<h2 id="change">Change<a class="headerlink" href="#change" title="Permanent link">¶</a></h2>
|
||||
<p>A change is a commit as it <a href="#rewrite">evolves over time</a>.</p>
|
||||
<p>A change is a commit as it <a href="#rewrite">evolves over time</a>. Changes themselves
|
||||
don't exist as an object in the data model; only the change ID does. The change
|
||||
ID is a property of a commit.</p>
|
||||
<h2 id="change-id">Change ID<a class="headerlink" href="#change-id" title="Permanent link">¶</a></h2>
|
||||
<p>A change ID is a unique identifier for a <a href="#change">change</a>. They are typically
|
||||
16 bytes long and are often randomly generated. By default, <code>jj log</code> presents
|
||||
them as a sequence of 12 letters in the k-z range, at the beginning of a line.
|
||||
These are actually hexadecimal numbers that use "digits" z-k instead of 0-9a-f.</p>
|
||||
<p>For the git backend, Change IDs are currently maintained only locally and not
|
||||
<p>For the Git backend, Change IDs are currently maintained only locally and not
|
||||
exchanged via push/fetch operations.</p>
|
||||
<h2 id="commit">Commit<a class="headerlink" href="#commit" title="Permanent link">¶</a></h2>
|
||||
<p>A snapshot of the files in the repository at a given point in time (technically
|
||||
|
@ -14,7 +14,7 @@
|
||||
<link rel="prev" href="../../design_doc_blueprint/">
|
||||
|
||||
|
||||
<link rel="next" href="../../roadmap/">
|
||||
<link rel="next" href="../../design/git-submodules/">
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
@ -1274,27 +1274,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1422,6 +1401,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1210,27 +1210,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1358,6 +1337,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1424,27 +1424,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1572,6 +1551,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1962,24 +1961,46 @@ $<span class="w"> </span>jj<span class="w"> </span>config<span class="w"> </span
|
||||
<p>To set up command-line completion, source the output of
|
||||
<code>jj util completion bash/zsh/fish</code>. Exactly how to source it
|
||||
depends on your shell.</p>
|
||||
<p>Improved completions are also available. They will complete things like
|
||||
bookmarks, aliases, revisions, operations and files. They can be context aware,
|
||||
for example they respect the global flags <code>--repository</code> and <code>--at-operation</code> as
|
||||
well as some command-specific ones like <code>--revision</code>, <code>--from</code> and <code>--to</code>. You
|
||||
can activate them with the alternative "dynamic" instructions below. They should
|
||||
still complete everything the static completions did, so only activate one of
|
||||
them. Please let us know if you encounter any issues, so we can ensure a smooth
|
||||
transition once we default to these new completions. Our initial experience
|
||||
is that these new completions work best with <code>fish</code>. If you have ideas about
|
||||
specific completions that could be added, please share them
|
||||
<a href="https://github.com/martinvonz/jj/issues/4763">here</a>.</p>
|
||||
<h3 id="bash">Bash<a class="headerlink" href="#bash" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span><<span class="o">(</span>jj<span class="w"> </span>util<span class="w"> </span>completion<span class="w"> </span>bash<span class="o">)</span>
|
||||
</code></pre></div>
|
||||
<p>dynamic:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span><<span class="o">(</span><span class="nv">COMPLETE</span><span class="o">=</span>bash<span class="w"> </span>jj<span class="o">)</span>
|
||||
</code></pre></div>
|
||||
<h3 id="zsh">Zsh<a class="headerlink" href="#zsh" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code>autoload<span class="w"> </span>-U<span class="w"> </span>compinit
|
||||
compinit
|
||||
<span class="nb">source</span><span class="w"> </span><<span class="o">(</span>jj<span class="w"> </span>util<span class="w"> </span>completion<span class="w"> </span>zsh<span class="o">)</span>
|
||||
</code></pre></div>
|
||||
<p>dynamic:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span><<span class="o">(</span><span class="nv">COMPLETE</span><span class="o">=</span>zsh<span class="w"> </span>jj<span class="o">)</span>
|
||||
</code></pre></div>
|
||||
<h3 id="fish">Fish<a class="headerlink" href="#fish" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>util<span class="w"> </span>completion<span class="w"> </span>fish<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nb">source</span>
|
||||
</code></pre></div>
|
||||
<p>dynamic:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="nv">COMPLETE</span><span class="o">=</span>fish<span class="w"> </span>jj<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nb">source</span>
|
||||
</code></pre></div>
|
||||
<h3 id="nushell">Nushell<a class="headerlink" href="#nushell" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code>jj util completion nushell | save completions-jj.nu
|
||||
use completions-jj.nu * # Or `source completions-jj.nu`
|
||||
</code></pre></div>
|
||||
<p>(dynamic completions not available yet)</p>
|
||||
<h3 id="xonsh">Xonsh<a class="headerlink" href="#xonsh" title="Permanent link">¶</a></h3>
|
||||
<div class="highlight"><pre><span></span><code>source-bash<span class="w"> </span><span class="k">$(</span>jj<span class="w"> </span>util<span class="w"> </span>completion<span class="k">)</span>
|
||||
</code></pre></div>
|
||||
<p>(dynamic completions not available yet)</p>
|
||||
|
||||
|
||||
|
||||
|
@ -1223,27 +1223,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1371,6 +1350,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1166,27 +1166,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1314,6 +1293,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1298,27 +1298,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1446,6 +1425,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1812,8 +1811,11 @@ aren't included in <code>remote_bookmarks()</code>.</p>
|
||||
as <code>remote_bookmarks()</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>tags()</code>: All tag targets. If a tag is in a conflicted state, all its
|
||||
possible targets are included.</p>
|
||||
<p><code>tags([pattern])</code>: All tag targets. If <code>pattern</code> is specified,
|
||||
this selects the tags whose name match the given <a href="#string-patterns">string
|
||||
pattern</a>. For example, <code>tags(v1)</code> would match the
|
||||
tags <code>v123</code> and <code>rev1</code> but not the tag <code>v2</code>. If a tag is
|
||||
in a conflicted state, all its possible targets are included.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>git_refs()</code>: All Git ref targets as of the last import. If a Git ref
|
||||
@ -1845,6 +1847,13 @@ aren't included in <code>remote_bookmarks()</code>.</p>
|
||||
timestamp. The default <code>count</code> is 1.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fork_point(x)</code>: The fork point of all commits in <code>x</code>. The fork point is the
|
||||
common ancestor(s) of all commits in <code>x</code> which do not have any descendants
|
||||
that are also common ancestors of all commits in <code>x</code>. It is equivalent to
|
||||
the revset <code>heads(::x_1 & ::x_2 & ... & ::x_N)</code>, where <code>x_{1..N}</code> are commits
|
||||
in <code>x</code>. If <code>x</code> resolves to a single commit, <code>fork_point(x)</code> resolves to <code>x</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>merges()</code>: Merge commits.</p>
|
||||
</li>
|
||||
<li>
|
||||
@ -1960,6 +1969,18 @@ o root()
|
||||
<li><code>roots(E|A)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>roots(A)</code> ⇒ <code>{A}</code></li>
|
||||
</ul>
|
||||
<p><strong>function</strong> <code>fork_point()</code></p>
|
||||
<ul>
|
||||
<li><code>fork_point(E|D)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>fork_point(E|C)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>fork_point(E|B)</code> ⇒ <code>{B}</code></li>
|
||||
<li><code>fork_point(E|A)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>fork_point(D|C)</code> ⇒ <code>{C}</code></li>
|
||||
<li><code>fork_point(D|B)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>fork_point(B|C)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>fork_point(A)</code> ⇒ <code>{A}</code></li>
|
||||
<li><code>fork_point(none())</code> ⇒ <code>{}</code></li>
|
||||
</ul>
|
||||
</details>
|
||||
<h2 id="string-patterns">String patterns<a class="headerlink" href="#string-patterns" title="Permanent link">¶</a></h2>
|
||||
<p>Functions that perform string matching support the following pattern syntax:</p>
|
||||
|
@ -11,18 +11,16 @@
|
||||
<link rel="canonical" href="https://martinvonz.github.io/jj/latest/roadmap/">
|
||||
|
||||
|
||||
<link rel="prev" href="../governance/temporary-voting/">
|
||||
<link rel="prev" href="../design/copy-tracking/">
|
||||
|
||||
|
||||
<link rel="next" href="../design/git-submodules/">
|
||||
|
||||
|
||||
<link rel="icon" href="../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39">
|
||||
|
||||
|
||||
|
||||
<title>Roadmap - Jujutsu docs</title>
|
||||
<title>Development Roadmap - Jujutsu docs</title>
|
||||
|
||||
|
||||
|
||||
@ -114,7 +112,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Roadmap
|
||||
Development Roadmap
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@ -1117,19 +1115,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
|
||||
@ -1143,7 +1139,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="true">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_12">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Design docs
|
||||
@ -1154,139 +1150,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--active">
|
||||
|
||||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#support-for-copies-and-renames" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Support for copies and renames
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#forge-integrations" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Forge integrations
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#submodule-support" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Submodule support
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#better-rust-api-for-uis" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Better Rust API for UIs
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#rpc-api" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
RPC API
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#open-source-cloud-based-repos-server-and-daemon-process" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Open-source cloud-based repos (server and daemon process)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#virtual-file-system-vfs" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Virtual file system (VFS)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#better-support-for-large-files" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Better support for large files
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
@ -1416,6 +1279,138 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--active">
|
||||
|
||||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#support-for-copies-and-renames" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Support for copies and renames
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#forge-integrations" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Forge integrations
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#submodule-support" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Submodule support
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#better-rust-api-for-uis" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Better Rust API for UIs
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#rpc-api" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
RPC API
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#open-source-cloud-based-repos-server-and-daemon-process" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Open-source cloud-based repos (server and daemon process)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#virtual-file-system-vfs" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Virtual file system (VFS)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#better-support-for-large-files" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Better support for large files
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1590,7 +1585,7 @@ cheaply create temporary working copies for the commands to run in.</p>
|
||||
<h2 id="better-support-for-large-files">Better support for large files<a class="headerlink" href="#better-support-for-large-files" title="Permanent link">¶</a></h2>
|
||||
<p>We have talked about somehow using content-defined chunking (CDC) to reduce
|
||||
storage and transfer costs for large files. Maybe we will store files in our
|
||||
future cloud-based server using the same model as <a href="https://xethub.com/assets/docs/concepts/xet-storage">XetHub</a>.</p>
|
||||
future cloud-based server using the same model as <a href="https://web.archive.org/web/20240914200921/https://xethub.com/assets/docs/concepts/xet-storage">XetHub</a>.</p>
|
||||
|
||||
|
||||
|
||||
|
@ -1214,27 +1214,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1362,6 +1341,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
File diff suppressed because one or more lines are too long
@ -2,150 +2,150 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/FAQ/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/bookmarks/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/cli-reference/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/code-of-conduct/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/community_tools/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/config/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/conflicts/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/contributing/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design_doc_blueprint/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design_docs/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/filesets/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/git-comparison/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/git-compatibility/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/github/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/glossary/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/install-and-setup/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/operation-log/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/related-work/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/revsets/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/roadmap/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/sapling-comparison/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/templates/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/testimonials/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/tutorial/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/windows/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/working-copy/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design/copy-tracking/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design/git-submodule-storage/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design/git-submodules/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design/run/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design/sparse-v2/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/design/tracking-branches/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/governance/temporary-voting/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/technical/architecture/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/technical/concurrency/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://martinvonz.github.io/jj/latest/technical/conflicts/</loc>
|
||||
<lastmod>2024-11-07</lastmod>
|
||||
<lastmod>2024-12-04</lastmod>
|
||||
</url>
|
||||
</urlset>
|
Binary file not shown.
@ -1406,27 +1406,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1554,6 +1533,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1253,27 +1253,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1401,6 +1380,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1223,27 +1223,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1371,6 +1350,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1457,27 +1457,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1605,6 +1584,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1930,6 +1929,8 @@ type</a> are available as keywords. For example,
|
||||
<li><code>x.f()</code>: Method call.</li>
|
||||
<li><code>-x</code>: Negate integer value.</li>
|
||||
<li><code>!x</code>: Logical not.</li>
|
||||
<li><code>x == y</code>, <code>x != y</code>: Logical equal/not equal. Operands must be either
|
||||
<code>Boolean</code>, <code>Integer</code>, or <code>String</code>.</li>
|
||||
<li><code>x && y</code>: Logical and, short-circuiting.</li>
|
||||
<li><code>x || y</code>: Logical or, short-circuiting.</li>
|
||||
<li><code>x ++ y</code>: Concatenate <code>x</code> and <code>y</code> templates.</li>
|
||||
@ -1956,7 +1957,7 @@ type</a> are available as keywords. For example,
|
||||
the content. The <code>label</code> is evaluated as a space-separated string.</li>
|
||||
<li><code>raw_escape_sequence(content: Template) -> Template</code>: Preserves any escape
|
||||
sequences in <code>content</code> (i.e., bypasses sanitization) and strips labels.
|
||||
Note: This function is intended for escape sequences and as such, it's output
|
||||
Note: This function is intended for escape sequences and as such, its output
|
||||
is expected to be invisible / of no display width. Outputting content with
|
||||
nonzero display width may break wrapping, indentation etc.</li>
|
||||
<li><code>if(condition: Boolean, then: Template[, else: Template]) -> Template</code>:
|
||||
|
@ -1221,27 +1221,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1369,6 +1348,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -376,9 +376,18 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#cloning-a-git-repo" class="md-nav__link">
|
||||
<a href="#cloning-a-git-repository" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Cloning a Git repo
|
||||
Cloning a Git repository
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#changes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Changes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@ -1259,27 +1268,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1407,6 +1395,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@ -1443,9 +1451,18 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#cloning-a-git-repo" class="md-nav__link">
|
||||
<a href="#cloning-a-git-repository" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Cloning a Git repo
|
||||
Cloning a Git repository
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#changes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Changes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@ -1514,19 +1531,27 @@
|
||||
<h1 id="tutorial">Tutorial<a class="headerlink" href="#tutorial" title="Permanent link">¶</a></h1>
|
||||
<blockquote>
|
||||
<p><strong>Hint:</strong> This tutorial has become somewhat out of date. Many people find
|
||||
the alternative (not quite finished) <a href="https://steveklabnik.github.io/jujutsu-tutorial/">tutorial by Steve
|
||||
Klabnik</a> helpful.</p>
|
||||
the alternative (not quite finished) <a href="https://steveklabnik.github.io/jujutsu-tutorial/">tutorial by Steve
|
||||
Klabnik</a> helpful.</p>
|
||||
</blockquote>
|
||||
<p>This text assumes that the reader is familiar with Git.</p>
|
||||
<h2 id="preparation">Preparation<a class="headerlink" href="#preparation" title="Permanent link">¶</a></h2>
|
||||
<p>If you haven't already, make sure you
|
||||
<a href="../install-and-setup/">install and configure Jujutsu</a>.</p>
|
||||
<h2 id="cloning-a-git-repo">Cloning a Git repo<a class="headerlink" href="#cloning-a-git-repo" title="Permanent link">¶</a></h2>
|
||||
<h2 id="cloning-a-git-repository">Cloning a Git repository<a class="headerlink" href="#cloning-a-git-repository" title="Permanent link">¶</a></h2>
|
||||
<blockquote>
|
||||
<p><strong>Hint:</strong> Most identifiers used in this tutorial will be different when you
|
||||
try this at home!</p>
|
||||
</blockquote>
|
||||
<p>Let's start by cloning GitHub's Hello-World repo using <code>jj</code>:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># Note the "git" before "clone" (there is no support for cloning native jj</span>
|
||||
<span class="c1"># repos yet)</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/octocat/Hello-World
|
||||
Fetching<span class="w"> </span>into<span class="w"> </span>new<span class="w"> </span>repo<span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="s2">"/tmp/tmp.O1DWMiaKd4/Hello-World"</span>
|
||||
bookmark:<span class="w"> </span>master@origin<span class="w"> </span><span class="o">[</span>new<span class="o">]</span><span class="w"> </span>untracked
|
||||
bookmark:<span class="w"> </span>octocat-patch-1@origin<span class="w"> </span><span class="o">[</span>new<span class="o">]</span><span class="w"> </span>untracked
|
||||
bookmark:<span class="w"> </span>test@origin<span class="w"> </span><span class="o">[</span>new<span class="o">]</span><span class="w"> </span>untracked
|
||||
Setting<span class="w"> </span>the<span class="w"> </span>revset<span class="w"> </span><span class="nb">alias</span><span class="w"> </span><span class="s2">"trunk()"</span><span class="w"> </span>to<span class="w"> </span><span class="s2">"master@origin"</span>
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>kntqzsqt<span class="w"> </span>d7439b06<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>orrkosyo<span class="w"> </span>7fd1a60b<span class="w"> </span>master<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>Merge<span class="w"> </span>pull<span class="w"> </span>request<span class="w"> </span><span class="c1">#6 from Spaceghost/patch-1</span>
|
||||
Added<span class="w"> </span><span class="m">1</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">0</span><span class="w"> </span>files
|
||||
@ -1538,16 +1563,40 @@ The<span class="w"> </span>working<span class="w"> </span>copy<span class="w"> <
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>:<span class="w"> </span>kntqzsqt<span class="w"> </span>d7439b06<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit:<span class="w"> </span>orrkosyo<span class="w"> </span>7fd1a60b<span class="w"> </span>master<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>Merge<span class="w"> </span>pull<span class="w"> </span>request<span class="w"> </span><span class="c1">#6 from Spaceghost/patch-1</span>
|
||||
</code></pre></div>
|
||||
<p>We can see from the output above that our working copy is a real commit with a
|
||||
commit ID (<code>d7439b06</code> in the example). When you make a change in the working
|
||||
copy, the working-copy commit gets automatically amended by the next <code>jj</code>
|
||||
command.</p>
|
||||
<p>Let's look at that output as it introduces new concepts. You can see two
|
||||
commits: Parent and working copy. Both are identified using two separate
|
||||
identifiers: the "change ID" and the "commit ID".</p>
|
||||
<p>The parent commit, for example, has the change ID <code>orrkosyo</code> and the commit ID
|
||||
<code>7fd1a60b</code>.</p>
|
||||
<blockquote>
|
||||
<p><strong>Git users:</strong> The commit ID/hash is what you're used to from Git and should
|
||||
match what you see when you look at the repository using <code>git log</code> in a Git
|
||||
checkout of the repository.
|
||||
The change ID however, is a new concept, unique to Jujutsu.</p>
|
||||
</blockquote>
|
||||
<p>We can also see from the output above that our working copy is an actual commit
|
||||
with a commit ID (<code>d7439b06</code> in the example). When you make a change in the
|
||||
working copy, the working-copy commit gets automatically amended by the next
|
||||
<code>jj</code> command.</p>
|
||||
<blockquote>
|
||||
<p><strong>Git users:</strong> This is a huge difference from Git where the working copy is a
|
||||
separate concept and not yet a commit.</p>
|
||||
</blockquote>
|
||||
<h2 id="changes">Changes<a class="headerlink" href="#changes" title="Permanent link">¶</a></h2>
|
||||
<p>A change is a commit that can evolve while keeping a stable identifier (similar
|
||||
to Gerrit's Change-Id). In other words: You can make changes to files in a
|
||||
change, resulting in a new commit hash, but the change ID will remain the same.</p>
|
||||
<p>You can see that our clone operation automatically created a new change:</p>
|
||||
<div class="highlight"><pre><span></span><code>Working copy : kntqzsqt d7439b06 (empty) (no description set)
|
||||
</code></pre></div>
|
||||
<p>This new change has the ID <code>kntqzsqt</code> and it is currently empty (contains no
|
||||
changes compared to the parent) and has no description.</p>
|
||||
<h2 id="creating-our-first-change">Creating our first change<a class="headerlink" href="#creating-our-first-change" title="Permanent link">¶</a></h2>
|
||||
<p>Now let's say we want to edit the <code>README</code> file in the repo to say "Goodbye"
|
||||
instead of "Hello". Let's start by describing the change (adding a
|
||||
commit message) so we don't forget what we're working on:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># This will bring up $EDITOR (or `pico` or `Notepad` by default). Enter</span>
|
||||
<span class="c1"># something like "Say goodbye" in the editor and then save the file and close</span>
|
||||
<p>Let's say we want to edit the <code>README</code> file in the repo to say "Goodbye"
|
||||
instead of "Hello". Start by describing the change (adding a commit message) so
|
||||
we don't forget what we're working on:</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="c1"># This brings up $EDITOR (or `pico` or `Notepad` by default).</span>
|
||||
<span class="c1"># Enter something like "Say goodbye" in the editor and then save the file and close</span>
|
||||
<span class="c1"># the editor.</span>
|
||||
$<span class="w"> </span>jj<span class="w"> </span>describe
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>kntqzsqt<span class="w"> </span>e427edcf<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>Say<span class="w"> </span>goodbye
|
||||
@ -1566,6 +1615,8 @@ Parent<span class="w"> </span>commit:<span class="w"> </span>orrkosyo<span class
|
||||
<code>git add</code>. You actually don't even need to tell it when you add new files or
|
||||
remove existing files. To untrack a path, add it to your <code>.gitignore</code> and run
|
||||
<code>jj file untrack <path></code>.</p>
|
||||
<p>Also note that the commit hash for our current change (<code>kntqzsqt</code>) changed from
|
||||
<code>e427edcf</code> to <code>5d39e19d</code>!</p>
|
||||
<p>To see the diff, run <code>jj diff</code>:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>diff<span class="w"> </span>--git<span class="w"> </span><span class="c1"># Feel free to skip the `--git` flag</span>
|
||||
diff<span class="w"> </span>--git<span class="w"> </span>a/README<span class="w"> </span>b/README
|
||||
@ -1595,12 +1646,12 @@ The<span class="w"> </span>working<span class="w"> </span>copy<span class="w"> <
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>:<span class="w"> </span>mpqrykyp<span class="w"> </span>aef4df99<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit:<span class="w"> </span>kntqzsqt<span class="w"> </span>5d39e19d<span class="w"> </span>Say<span class="w"> </span>goodbye
|
||||
</code></pre></div>
|
||||
<p>If we later realize that we want to make further changes, we can make them
|
||||
in the working copy and then run <code>jj squash</code>. That command squashes the changes
|
||||
from a given commit into its parent commit. Like most commands, it acts on the
|
||||
working-copy commit by default. When run on the working-copy commit, it behaves
|
||||
very similar to <code>git commit --amend</code>, and <code>jj amend</code> is in fact an alias for
|
||||
<code>jj squash</code>.</p>
|
||||
<p>If we later realize that we want to make further changes, we can make them in
|
||||
the working copy and then run <code>jj squash</code>. That command squashes (moves) the
|
||||
changes from a given commit into its parent commit. Like most commands, it acts
|
||||
on the working-copy commit by default. When run on the working-copy commit, it
|
||||
behaves very similar to <code>git commit --amend</code>, and <code>jj amend</code> is in fact an alias
|
||||
for <code>jj squash</code>.</p>
|
||||
<p>Alternatively, we can use <code>jj edit <commit></code> to resume editing a commit in the
|
||||
working copy. Any further changes in the working copy will then amend the
|
||||
commit. Whether you choose to create a new change and squash, or to edit,
|
||||
@ -1608,8 +1659,8 @@ typically depends on how done you are with the change; if the change is almost
|
||||
done, it makes sense to use <code>jj new</code> so you can easily review your adjustments
|
||||
with <code>jj diff</code> before running <code>jj squash</code>.</p>
|
||||
<p>To view how a change has evolved over time, we can use <code>jj evolog</code> to see each
|
||||
recorded change for the current commit. This records changes to the working copy,
|
||||
message, squashes, rebases, etc.</p>
|
||||
recorded change for the current commit. This records changes to the working
|
||||
copy, message, squashes, rebases, etc.</p>
|
||||
<h2 id="the-log-command-and-revsets">The log command and "revsets"<a class="headerlink" href="#the-log-command-and-revsets" title="Permanent link">¶</a></h2>
|
||||
<p>You're probably familiar with <code>git log</code>. Jujutsu has very similar functionality
|
||||
in its <code>jj log</code> command:</p>
|
||||
@ -1627,20 +1678,19 @@ in its <code>jj log</code> command:</p>
|
||||
~
|
||||
</code></pre></div>
|
||||
<p>The <code>@</code> indicates the working-copy commit. The first ID on a line
|
||||
(e.g. "mpqrykyp" above) is the "change ID", which is an ID that follows the
|
||||
commit as it's rewritten (similar to Gerrit's Change-Id). The second ID is the
|
||||
commit ID, which changes when you rewrite the commit. You can give either ID
|
||||
to commands that take revisions as arguments. We will generally prefer change
|
||||
IDs because they stay the same when the commit is rewritten.</p>
|
||||
(e.g. "mpqrykyp" above) is the change ID. The second ID is the commit ID. You
|
||||
can give either ID to commands that take revisions as arguments. We will
|
||||
generally prefer change IDs because they stay the same when the commit is
|
||||
rewritten.</p>
|
||||
<p>By default, <code>jj log</code> lists your local commits, with some remote commits added
|
||||
for context. The <code>~</code> indicates that the commit has parents that are not
|
||||
included in the graph. We can use the <code>--revisions</code>/<code>-r</code> flag to select a
|
||||
different set of revisions to list. The flag accepts a <a href="../revsets/">"revset"</a>,
|
||||
which is an expression in a simple language for specifying revisions. For
|
||||
example, <code>@</code> refers to the working-copy commit, <code>root()</code> refers to the root
|
||||
commit, <code>bookmarks()</code> refers to all commits pointed to by bookmarks (similar to
|
||||
Git's branches). We can combine expressions with <code>|</code> for union, <code>&</code> for
|
||||
intersection and <code>~</code> for difference. For example:</p>
|
||||
for context. The <code>~</code> indicates that the commit has parents that are not included
|
||||
in the graph. We can use the <code>--revisions</code>/<code>-r</code> flag to select a different set
|
||||
of revisions to list. The flag accepts a <a href="../revsets/">"revset"</a>, which is an
|
||||
expression in a simple language for specifying revisions. For example, <code>@</code>
|
||||
refers to the working-copy commit, <code>root()</code> refers to the root commit,
|
||||
<code>bookmarks()</code> refers to all commits pointed to by bookmarks (similar to Git's
|
||||
branches). We can combine expressions with <code>|</code> for union, <code>&</code> for intersection
|
||||
and <code>~</code> for difference. For example:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>log<span class="w"> </span>-r<span class="w"> </span><span class="s1">'@ | root() | bookmarks()'</span>
|
||||
@<span class="w"> </span>mpqrykyp<span class="w"> </span>martinvonz@google.com<span class="w"> </span><span class="m">2023</span>-02-12<span class="w"> </span><span class="m">15</span>:00:22.000<span class="w"> </span>-08:00<span class="w"> </span>aef4df99
|
||||
╷<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
@ -1648,8 +1698,8 @@ intersection and <code>~</code> for difference. For example:</p>
|
||||
╷<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>Merge<span class="w"> </span>pull<span class="w"> </span>request<span class="w"> </span><span class="c1">#6 from Spaceghost/patch-1</span>
|
||||
◉<span class="w"> </span>zzzzzzzz<span class="w"> </span>root<span class="o">()</span><span class="w"> </span><span class="m">00000000</span>
|
||||
</code></pre></div>
|
||||
<p>The <code>00000000</code> commit (change ID <code>zzzzzzzz</code>) is a virtual commit that's
|
||||
called the "root commit". It's the root commit of every repo. The <code>root()</code>
|
||||
<p>The <code>00000000</code> commit (change ID <code>zzzzzzzz</code>) is a virtual commit that's called
|
||||
the "root commit". It's the root commit of every repo. The <code>root()</code>
|
||||
function in the revset matches it.</p>
|
||||
<p>There are also operators for getting the parents (<code>foo-</code>), children (<code>foo+</code>),
|
||||
ancestors (<code>::foo</code>), descendants (<code>foo::</code>), DAG range (<code>foo::bar</code>, like
|
||||
@ -1703,6 +1753,11 @@ modifies a different file. Let's now rebase B2 directly onto A. We use the
|
||||
on A.</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>rebase<span class="w"> </span>-s<span class="w"> </span>puqltutt<span class="w"> </span>-d<span class="w"> </span>nuvyytnq<span class="w"> </span><span class="c1"># Replace the IDs by what you have for B2 and A</span>
|
||||
Rebased<span class="w"> </span><span class="m">2</span><span class="w"> </span>commits
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>qzvqqupx<span class="w"> </span>1978b534<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>C
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
Added<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">1</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">0</span><span class="w"> </span>files
|
||||
There<span class="w"> </span>are<span class="w"> </span>unresolved<span class="w"> </span>conflicts<span class="w"> </span>at<span class="w"> </span>these<span class="w"> </span>paths:
|
||||
file1<span class="w"> </span><span class="m">2</span>-sided<span class="w"> </span>conflict
|
||||
New<span class="w"> </span>conflicts<span class="w"> </span>appeared<span class="w"> </span><span class="k">in</span><span class="w"> </span>these<span class="w"> </span>commits:
|
||||
<span class="w"> </span>qzvqqupx<span class="w"> </span>1978b534<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>C
|
||||
<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
@ -1711,9 +1766,7 @@ To<span class="w"> </span>resolve<span class="w"> </span>the<span class="w"> </s
|
||||
Then<span class="w"> </span>use<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>resolve<span class="sb">`</span>,<span class="w"> </span>or<span class="w"> </span>edit<span class="w"> </span>the<span class="w"> </span>conflict<span class="w"> </span>markers<span class="w"> </span><span class="k">in</span><span class="w"> </span>the<span class="w"> </span>file<span class="w"> </span>directly.
|
||||
Once<span class="w"> </span>the<span class="w"> </span>conflicts<span class="w"> </span>are<span class="w"> </span>resolved,<span class="w"> </span>you<span class="w"> </span>may<span class="w"> </span>want<span class="w"> </span>to<span class="w"> </span>inspect<span class="w"> </span>the<span class="w"> </span>result<span class="w"> </span>with<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>diff<span class="sb">`</span>.
|
||||
Then<span class="w"> </span>run<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>squash<span class="sb">`</span><span class="w"> </span>to<span class="w"> </span>move<span class="w"> </span>the<span class="w"> </span>resolution<span class="w"> </span>into<span class="w"> </span>the<span class="w"> </span>conflicted<span class="w"> </span>commit.
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>qzvqqupx<span class="w"> </span>1978b534<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>C
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
Added<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">1</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">0</span><span class="w"> </span>files
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>log
|
||||
@<span class="w"> </span>qzvqqupx<span class="w"> </span>martinvonz@google.com<span class="w"> </span><span class="m">2023</span>-02-12<span class="w"> </span><span class="m">15</span>:08:33.000<span class="w"> </span>-08:00<span class="w"> </span>1978b534<span class="w"> </span>conflict
|
||||
│<span class="w"> </span>C
|
||||
@ -1736,10 +1789,10 @@ $<span class="w"> </span>jj<span class="w"> </span>log
|
||||
<p>There are several things worth noting here. First, the <code>jj rebase</code> command said
|
||||
"Rebased 2 commits". That's because we asked it to rebase commit B2 with the
|
||||
<code>-s</code> option, which also rebases descendants (commit C in this case). Second,
|
||||
because B2 modified the same file (and word) as B1, rebasing
|
||||
it resulted in conflicts, as the output indicates. Third, the conflicts
|
||||
did not prevent the rebase from completing successfully, nor did it prevent C
|
||||
from getting rebased on top.</p>
|
||||
because B2 modified the same file (and word) as B1, rebasing it resulted in
|
||||
conflicts, as the output indicates. Third, the conflicts did not prevent the
|
||||
rebase from completing successfully, nor did it prevent C from getting rebased
|
||||
on top.</p>
|
||||
<p>Now let's resolve the conflict in B2. We'll do that by creating a new commit on
|
||||
top of B2. Once we've resolved the conflict, we'll squash the conflict
|
||||
resolution into the conflicted B2. That might look like this:</p>
|
||||
@ -1747,28 +1800,47 @@ resolution into the conflicted B2. That might look like this:</p>
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>zxoosnnp<span class="w"> </span>c7068d1c<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
Added<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">1</span><span class="w"> </span>files
|
||||
There<span class="w"> </span>are<span class="w"> </span>unresolved<span class="w"> </span>conflicts<span class="w"> </span>at<span class="w"> </span>these<span class="w"> </span>paths:
|
||||
file1<span class="w"> </span><span class="m">2</span>-sided<span class="w"> </span>conflict
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>st
|
||||
The<span class="w"> </span>working<span class="w"> </span>copy<span class="w"> </span>is<span class="w"> </span>clean
|
||||
There<span class="w"> </span>are<span class="w"> </span>unresolved<span class="w"> </span>conflicts<span class="w"> </span>at<span class="w"> </span>these<span class="w"> </span>paths:
|
||||
file1<span class="w"> </span><span class="m">2</span>-sided<span class="w"> </span>conflict
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>:<span class="w"> </span>zxoosnnp<span class="w"> </span>c7068d1c<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit:<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
To<span class="w"> </span>resolve<span class="w"> </span>the<span class="w"> </span>conflicts,<span class="w"> </span>start<span class="w"> </span>by<span class="w"> </span>updating<span class="w"> </span>to<span class="w"> </span>it:
|
||||
<span class="w"> </span>jj<span class="w"> </span>new<span class="w"> </span>puqltutt
|
||||
Then<span class="w"> </span>use<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>resolve<span class="sb">`</span>,<span class="w"> </span>or<span class="w"> </span>edit<span class="w"> </span>the<span class="w"> </span>conflict<span class="w"> </span>markers<span class="w"> </span><span class="k">in</span><span class="w"> </span>the<span class="w"> </span>file<span class="w"> </span>directly.
|
||||
Once<span class="w"> </span>the<span class="w"> </span>conflicts<span class="w"> </span>are<span class="w"> </span>resolved,<span class="w"> </span>you<span class="w"> </span>may<span class="w"> </span>want<span class="w"> </span>to<span class="w"> </span>inspect<span class="w"> </span>the<span class="w"> </span>result<span class="w"> </span>with<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>diff<span class="sb">`</span>.
|
||||
Then<span class="w"> </span>run<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>squash<span class="sb">`</span><span class="w"> </span>to<span class="w"> </span>move<span class="w"> </span>the<span class="w"> </span>resolution<span class="w"> </span>into<span class="w"> </span>the<span class="w"> </span>conflicted<span class="w"> </span>commit.
|
||||
|
||||
$<span class="w"> </span>cat<span class="w"> </span>file1
|
||||
<span class="o"><<<<<<</span><
|
||||
%%%%%%%
|
||||
<span class="o"><<<<<<</span><<span class="w"> </span>Conflict<span class="w"> </span><span class="m">1</span><span class="w"> </span>of<span class="w"> </span><span class="m">1</span>
|
||||
%%%%%%%<span class="w"> </span>Changes<span class="w"> </span>from<span class="w"> </span>base<span class="w"> </span>to<span class="w"> </span>side<span class="w"> </span><span class="c1">#1</span>
|
||||
-b1
|
||||
+a
|
||||
+++++++
|
||||
+++++++<span class="w"> </span>Contents<span class="w"> </span>of<span class="w"> </span>side<span class="w"> </span><span class="c1">#2</span>
|
||||
b2
|
||||
>>>>>>>
|
||||
>>>>>>><span class="w"> </span>Conflict<span class="w"> </span><span class="m">1</span><span class="w"> </span>of<span class="w"> </span><span class="m">1</span><span class="w"> </span>ends
|
||||
|
||||
$<span class="w"> </span><span class="nb">echo</span><span class="w"> </span>resolved<span class="w"> </span>><span class="w"> </span>file1
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>st
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>changes:
|
||||
M<span class="w"> </span>file1
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>:<span class="w"> </span>zxoosnnp<span class="w"> </span>c2a31a06<span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit:<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
Conflict<span class="w"> </span><span class="k">in</span><span class="w"> </span>parent<span class="w"> </span>commit<span class="w"> </span>has<span class="w"> </span>been<span class="w"> </span>resolved<span class="w"> </span><span class="k">in</span><span class="w"> </span>working<span class="w"> </span>copy
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>squash
|
||||
Rebased<span class="w"> </span><span class="m">1</span><span class="w"> </span>descendant<span class="w"> </span>commits
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>ntxxqymr<span class="w"> </span>e3c279cc<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>puqltutt<span class="w"> </span>2c7a658e<span class="w"> </span>B2
|
||||
Existing<span class="w"> </span>conflicts<span class="w"> </span>were<span class="w"> </span>resolved<span class="w"> </span>or<span class="w"> </span>abandoned<span class="w"> </span>from<span class="w"> </span>these<span class="w"> </span>commits:
|
||||
<span class="w"> </span>qzvqqupx<span class="w"> </span>hidden<span class="w"> </span>1978b534<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>C
|
||||
<span class="w"> </span>puqltutt<span class="w"> </span>hidden<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>ntxxqymr<span class="w"> </span>e3c279cc<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>puqltutt<span class="w"> </span>2c7a658e<span class="w"> </span>B2
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>log
|
||||
@<span class="w"> </span>ntxxqymr<span class="w"> </span>martinvonz@google.com<span class="w"> </span><span class="m">2023</span>-02-12<span class="w"> </span><span class="m">19</span>:34:09.000<span class="w"> </span>-08:00<span class="w"> </span>e3c279cc
|
||||
│<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
@ -1827,6 +1899,7 @@ Once<span class="w"> </span>the<span class="w"> </span>conflicts<span class="w">
|
||||
Then<span class="w"> </span>run<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>squash<span class="sb">`</span><span class="w"> </span>to<span class="w"> </span>move<span class="w"> </span>the<span class="w"> </span>resolution<span class="w"> </span>into<span class="w"> </span>the<span class="w"> </span>conflicted<span class="w"> </span>commit.
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>zxoosnnp<span class="w"> </span>63874fe6<span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>puqltutt<span class="w"> </span>f7fb5943<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>B2
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>log
|
||||
@<span class="w"> </span>zxoosnnp<span class="w"> </span>martinvonz@google.com<span class="w"> </span><span class="m">2023</span>-02-12<span class="w"> </span><span class="m">19</span>:34:09.000<span class="w"> </span>-08:00<span class="w"> </span>63874fe6
|
||||
│<span class="w"> </span><span class="o">(</span>no<span class="w"> </span>description<span class="w"> </span><span class="nb">set</span><span class="o">)</span>
|
||||
@ -1852,8 +1925,9 @@ $<span class="w"> </span>jj<span class="w"> </span>log
|
||||
squashing the conflict resolution into commit B2 earlier. Notice that it also
|
||||
updated the working copy.</p>
|
||||
<p>You can also view the repo the way it looked after some earlier operation. For
|
||||
example, if you want to see <code>jj log</code> output right after the <code>jj rebase</code> operation,
|
||||
try <code>jj log --at-op=367400773f87</code> but use the hash from your own <code>jj op log</code>.</p>
|
||||
example, if you want to see <code>jj log</code> output right after the <code>jj rebase</code>
|
||||
operation, try <code>jj log --at-op=367400773f87</code> but use the hash from your own
|
||||
<code>jj op log</code>.</p>
|
||||
<h2 id="moving-content-changes-between-commits">Moving content changes between commits<a class="headerlink" href="#moving-content-changes-between-commits" title="Permanent link">¶</a></h2>
|
||||
<p>You have already seen how <code>jj squash</code> can combine the changes from two commits
|
||||
into one. There are several other commands for changing the contents of existing
|
||||
@ -1864,12 +1938,15 @@ few more commits:</p>
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>ztqrpvnw<span class="w"> </span>f94e49cf<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>abc
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>orrkosyo<span class="w"> </span>7fd1a60b<span class="w"> </span>master<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>Merge<span class="w"> </span>pull<span class="w"> </span>request<span class="w"> </span><span class="c1">#6 from Spaceghost/patch-1</span>
|
||||
Added<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">1</span><span class="w"> </span>files
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>new<span class="w"> </span>-m<span class="w"> </span>ABC<span class="p">;</span><span class="w"> </span><span class="nb">printf</span><span class="w"> </span><span class="s1">'A\nB\nc\n'</span><span class="w"> </span>><span class="w"> </span>file
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>kwtuwqnm<span class="w"> </span>6f30cd1f<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>ABC
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>ztqrpvnw<span class="w"> </span><span class="m">51002261</span><span class="w"> </span>ab
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>new<span class="w"> </span>-m<span class="w"> </span>ABCD<span class="p">;</span><span class="w"> </span><span class="nb">printf</span><span class="w"> </span><span class="s1">'A\nB\nC\nD\n'</span><span class="w"> </span>><span class="w"> </span>file
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>mrxqplyk<span class="w"> </span>a6749154<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>ABCD
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>kwtuwqnm<span class="w"> </span>30aecc08<span class="w"> </span>ABC
|
||||
|
||||
$<span class="w"> </span>jj<span class="w"> </span>log<span class="w"> </span>-r<span class="w"> </span>master::@
|
||||
@<span class="w"> </span>mrxqplyk<span class="w"> </span>martinvonz@google.com<span class="w"> </span><span class="m">2023</span>-02-12<span class="w"> </span><span class="m">19</span>:38:21.000<span class="w"> </span>-08:00<span class="w"> </span>b98c607b
|
||||
│<span class="w"> </span>ABCD
|
||||
@ -1884,12 +1961,13 @@ $<span class="w"> </span>jj<span class="w"> </span>log<span class="w"> </span>-r
|
||||
<p>We "forgot" to capitalize "c" in the second commit when we capitalized the other
|
||||
letters. We then fixed that in the third commit when we also added "D". It would
|
||||
be cleaner to move the capitalization of "c" into the second commit. We can do
|
||||
that by running <code>jj squash</code> with the <code>--interactive</code>/<code>-i</code> option on the
|
||||
third commit. Remember that <code>jj squash</code> moves all the changes from one commit
|
||||
into its parent. <code>jj squash -i</code> moves only part of the changes into its parent.
|
||||
Now try that:</p>
|
||||
that by running <code>jj squash</code> with the <code>--interactive</code>/<code>-i</code> option on the third
|
||||
commit. Remember that <code>jj squash</code> moves all the changes from one commit into its
|
||||
parent. <code>jj squash -i</code> moves only part of the changes into its parent. Now try
|
||||
that:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>squash<span class="w"> </span>-i
|
||||
Using<span class="w"> </span>default<span class="w"> </span>editor<span class="w"> </span><span class="s1">':builtin'</span><span class="p">;</span><span class="w"> </span>you<span class="w"> </span>can<span class="w"> </span>change<span class="w"> </span>this<span class="w"> </span>by<span class="w"> </span>setting<span class="w"> </span>ui.diff-editor
|
||||
Hint:<span class="w"> </span>Using<span class="w"> </span>default<span class="w"> </span>editor<span class="w"> </span><span class="s1">':builtin'</span><span class="p">;</span><span class="w"> </span>run<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>--user<span class="w"> </span>ui.diff-editor<span class="w"> </span>:builtin<span class="sb">`</span><span class="w"> </span>to<span class="w"> </span>disable<span class="w"> </span>this<span class="w"> </span>message.
|
||||
Rebased<span class="w"> </span><span class="m">1</span><span class="w"> </span>descendant<span class="w"> </span>commits
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>mrxqplyk<span class="w"> </span>52a6c7fd<span class="w"> </span>ABCD
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>kwtuwqnm<span class="w"> </span>643061ac<span class="w"> </span>ABC
|
||||
</code></pre></div>
|
||||
@ -1899,25 +1977,37 @@ or with right arrow, then select the sections/line to include by clicking or
|
||||
using space. Once complete, press <code>c</code> to confirm changes, or <code>q</code> to exit without
|
||||
saving. You can also use the mouse to click on the menu items to see more
|
||||
options (keyboard navigation is currently limited).</p>
|
||||
<p>If we look at the diff of the second commit, we now see
|
||||
that all three lines got capitalized:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>diff<span class="w"> </span>-r<span class="w"> </span>@-
|
||||
Modified<span class="w"> </span>regular<span class="w"> </span>file<span class="w"> </span>file:
|
||||
<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span>:<span class="w"> </span>aA
|
||||
<span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="m">2</span>:<span class="w"> </span>bB
|
||||
<span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="m">3</span>:<span class="w"> </span>cC
|
||||
<p>If we look at the diff of the second commit, we now see that all three lines got
|
||||
capitalized:</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>diff<span class="w"> </span>-r<span class="w"> </span>@-<span class="w"> </span>--git
|
||||
diff<span class="w"> </span>--git<span class="w"> </span>a/file<span class="w"> </span>b/file
|
||||
index<span class="w"> </span>de980441c3..b1e67221af<span class="w"> </span><span class="m">100644</span>
|
||||
---<span class="w"> </span>a/file
|
||||
+++<span class="w"> </span>b/file
|
||||
@@<span class="w"> </span>-1,3<span class="w"> </span>+1,3<span class="w"> </span>@@
|
||||
-a
|
||||
-b
|
||||
-c
|
||||
+A
|
||||
+B
|
||||
+C
|
||||
</code></pre></div>
|
||||
<p>The child change ("ABCD" in our case) will have the same content <em>state</em> after
|
||||
the <code>jj squash</code> command. That means that you can move any changes you want into
|
||||
the parent change, even if they touch the same word, and it won't cause any
|
||||
conflicts.</p>
|
||||
<p>Let's try one final command for changing the contents of an exiting commit. That
|
||||
command is <code>jj diffedit</code>, which lets you edit the contents of a commit without
|
||||
command is <code>jj diffedit</code>, which lets you edit the changes in a commit without
|
||||
checking it out.</p>
|
||||
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>jj<span class="w"> </span>diffedit<span class="w"> </span>-r<span class="w"> </span>@-
|
||||
Using<span class="w"> </span>default<span class="w"> </span>editor<span class="w"> </span><span class="s1">':builtin'</span><span class="p">;</span><span class="w"> </span>you<span class="w"> </span>can<span class="w"> </span>change<span class="w"> </span>this<span class="w"> </span>by<span class="w"> </span>setting<span class="w"> </span>ui.diff-editor
|
||||
Hint:<span class="w"> </span>Using<span class="w"> </span>default<span class="w"> </span>editor<span class="w"> </span><span class="s1">':builtin'</span><span class="p">;</span><span class="w"> </span>run<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>--user<span class="w"> </span>ui.diff-editor<span class="w"> </span>:builtin<span class="sb">`</span><span class="w"> </span>to<span class="w"> </span>disable<span class="w"> </span>this<span class="w"> </span>message.
|
||||
Created<span class="w"> </span>kwtuwqnm<span class="w"> </span>70985eaa<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>ABC
|
||||
Rebased<span class="w"> </span><span class="m">1</span><span class="w"> </span>descendant<span class="w"> </span>commits
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>mrxqplyk<span class="w"> </span>1c72cd50<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>ABCD
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>kwtuwqnm<span class="w"> </span>70985eaa<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>ABC
|
||||
Added<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">1</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">0</span><span class="w"> </span>files
|
||||
There<span class="w"> </span>are<span class="w"> </span>unresolved<span class="w"> </span>conflicts<span class="w"> </span>at<span class="w"> </span>these<span class="w"> </span>paths:
|
||||
file<span class="w"> </span><span class="m">2</span>-sided<span class="w"> </span>conflict
|
||||
New<span class="w"> </span>conflicts<span class="w"> </span>appeared<span class="w"> </span><span class="k">in</span><span class="w"> </span>these<span class="w"> </span>commits:
|
||||
<span class="w"> </span>mrxqplyk<span class="w"> </span>1c72cd50<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>ABCD
|
||||
To<span class="w"> </span>resolve<span class="w"> </span>the<span class="w"> </span>conflicts,<span class="w"> </span>start<span class="w"> </span>by<span class="w"> </span>updating<span class="w"> </span>to<span class="w"> </span>it:
|
||||
@ -1925,19 +2015,16 @@ To<span class="w"> </span>resolve<span class="w"> </span>the<span class="w"> </s
|
||||
Then<span class="w"> </span>use<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>resolve<span class="sb">`</span>,<span class="w"> </span>or<span class="w"> </span>edit<span class="w"> </span>the<span class="w"> </span>conflict<span class="w"> </span>markers<span class="w"> </span><span class="k">in</span><span class="w"> </span>the<span class="w"> </span>file<span class="w"> </span>directly.
|
||||
Once<span class="w"> </span>the<span class="w"> </span>conflicts<span class="w"> </span>are<span class="w"> </span>resolved,<span class="w"> </span>you<span class="w"> </span>may<span class="w"> </span>want<span class="w"> </span>to<span class="w"> </span>inspect<span class="w"> </span>the<span class="w"> </span>result<span class="w"> </span>with<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>diff<span class="sb">`</span>.
|
||||
Then<span class="w"> </span>run<span class="w"> </span><span class="sb">`</span>jj<span class="w"> </span>squash<span class="sb">`</span><span class="w"> </span>to<span class="w"> </span>move<span class="w"> </span>the<span class="w"> </span>resolution<span class="w"> </span>into<span class="w"> </span>the<span class="w"> </span>conflicted<span class="w"> </span>commit.
|
||||
Working<span class="w"> </span>copy<span class="w"> </span>now<span class="w"> </span>at:<span class="w"> </span>mrxqplyk<span class="w"> </span>1c72cd50<span class="w"> </span><span class="o">(</span>conflict<span class="o">)</span><span class="w"> </span>ABCD
|
||||
Parent<span class="w"> </span>commit<span class="w"> </span>:<span class="w"> </span>kwtuwqnm<span class="w"> </span>70985eaa<span class="w"> </span><span class="o">(</span>empty<span class="o">)</span><span class="w"> </span>ABC
|
||||
Added<span class="w"> </span><span class="m">0</span><span class="w"> </span>files,<span class="w"> </span>modified<span class="w"> </span><span class="m">1</span><span class="w"> </span>files,<span class="w"> </span>removed<span class="w"> </span><span class="m">0</span><span class="w"> </span>files
|
||||
</code></pre></div>
|
||||
<p>In the diff editor, edit the right side by e.g. adding something to the first
|
||||
line. Press 'c' to save the changes and close it. You can now inspect the rewritten
|
||||
commit with <code>jj diff -r @-</code> again and you should see your addition to the first
|
||||
line. Unlike <code>jj squash -i</code>, which left the content state of the commit
|
||||
<p>In the diff editor, use the arrow keys and spacebar to select all lines but the
|
||||
last. Press 'c' to save the changes and close it. You can now inspect the
|
||||
rewritten commit with <code>jj diff -r @-</code> again, and you should see your deletion of
|
||||
the last line. Unlike <code>jj squash -i</code>, which left the content state of the commit
|
||||
unchanged, <code>jj diffedit</code> (typically) results in a different state, which means
|
||||
that descendant commits may have conflicts.</p>
|
||||
<p>Another command for rewriting contents of existing commits is <code>jj split</code>. Now that
|
||||
you've seen how <code>jj squash -i</code> and <code>jj diffedit</code> work, you can hopefully figure out
|
||||
how it works (with the help of the instructions in the diff).</p>
|
||||
<p>Another command for rewriting contents of existing commits is <code>jj split</code>. Now
|
||||
that you've seen how <code>jj squash -i</code> and <code>jj diffedit</code> work, you can hopefully
|
||||
figure out how it works (with the help of the instructions in the diff).</p>
|
||||
<div class="footnote">
|
||||
<hr />
|
||||
<ol>
|
||||
|
@ -1241,27 +1241,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1389,6 +1368,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -1241,27 +1241,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../design/git-submodules/" class="md-nav__link">
|
||||
|
||||
@ -1389,6 +1368,26 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../roadmap/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Development Roadmap
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
|
1363
v0.24.0/404.html
Normal file
1363
v0.24.0/404.html
Normal file
File diff suppressed because it is too large
Load Diff
2060
v0.24.0/FAQ/index.html
Normal file
2060
v0.24.0/FAQ/index.html
Normal file
File diff suppressed because it is too large
Load Diff
BIN
v0.24.0/assets/images/favicon.png
Normal file
BIN
v0.24.0/assets/images/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
16
v0.24.0/assets/javascripts/bundle.525ec568.min.js
vendored
Normal file
16
v0.24.0/assets/javascripts/bundle.525ec568.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
v0.24.0/assets/javascripts/bundle.525ec568.min.js.map
Normal file
7
v0.24.0/assets/javascripts/bundle.525ec568.min.js.map
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.ar.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.ar.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.da.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.da.min.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
/*!
|
||||
* Lunr languages, `Danish` language
|
||||
* https://github.com/MihaiValentin/lunr-languages
|
||||
*
|
||||
* Copyright 2014, Mihai Valentin
|
||||
* http://www.mozilla.org/MPL/
|
||||
*/
|
||||
/*!
|
||||
* based on
|
||||
* Snowball JavaScript Library v0.3
|
||||
* http://code.google.com/p/urim/
|
||||
* http://snowball.tartarus.org/
|
||||
*
|
||||
* Copyright 2010, Oleg Mazko
|
||||
* http://www.mozilla.org/MPL/
|
||||
*/
|
||||
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.de.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.de.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.du.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.du.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.el.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.el.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.es.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.es.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.fi.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.fi.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.fr.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.fr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.he.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.he.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.hi.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.hi.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.hu.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.hu.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.hy.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.hy.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWordFilter)},e.hy.wordCharacters="[A-Za-z-֏ff-ﭏ]",e.hy.trimmer=e.trimmerSupport.generateTrimmer(e.hy.wordCharacters),e.Pipeline.registerFunction(e.hy.trimmer,"trimmer-hy"),e.hy.stopWordFilter=e.generateStopWordFilter("դու և եք էիր էիք հետո նաև նրանք որը վրա է որ պիտի են այս մեջ ն իր ու ի այդ որոնք այն կամ էր մի ես համար այլ իսկ էին ենք հետ ին թ էինք մենք նրա նա դուք եմ էի ըստ որպես ում".split(" ")),e.Pipeline.registerFunction(e.hy.stopWordFilter,"stopWordFilter-hy"),e.hy.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.hy.stemmer,"stemmer-hy")}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.it.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.it.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.ja.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.ja.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.jp.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.jp.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports=require("./lunr.ja");
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.kn.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.kn.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.kn=function(){this.pipeline.reset(),this.pipeline.add(e.kn.trimmer,e.kn.stopWordFilter,e.kn.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.kn.stemmer))},e.kn.wordCharacters="ಀ-಄ಅ-ಔಕ-ಹಾ-ೌ಼-ಽೕ-ೖೝ-ೞೠ-ೡೢ-ೣ೦-೯ೱ-ೳ",e.kn.trimmer=e.trimmerSupport.generateTrimmer(e.kn.wordCharacters),e.Pipeline.registerFunction(e.kn.trimmer,"trimmer-kn"),e.kn.stopWordFilter=e.generateStopWordFilter("ಮತ್ತು ಈ ಒಂದು ರಲ್ಲಿ ಹಾಗೂ ಎಂದು ಅಥವಾ ಇದು ರ ಅವರು ಎಂಬ ಮೇಲೆ ಅವರ ತನ್ನ ಆದರೆ ತಮ್ಮ ನಂತರ ಮೂಲಕ ಹೆಚ್ಚು ನ ಆ ಕೆಲವು ಅನೇಕ ಎರಡು ಹಾಗು ಪ್ರಮುಖ ಇದನ್ನು ಇದರ ಸುಮಾರು ಅದರ ಅದು ಮೊದಲ ಬಗ್ಗೆ ನಲ್ಲಿ ರಂದು ಇತರ ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಸಹ ಸಾಮಾನ್ಯವಾಗಿ ನೇ ಹಲವಾರು ಹೊಸ ದಿ ಕಡಿಮೆ ಯಾವುದೇ ಹೊಂದಿದೆ ದೊಡ್ಡ ಅನ್ನು ಇವರು ಪ್ರಕಾರ ಇದೆ ಮಾತ್ರ ಕೂಡ ಇಲ್ಲಿ ಎಲ್ಲಾ ವಿವಿಧ ಅದನ್ನು ಹಲವು ರಿಂದ ಕೇವಲ ದ ದಕ್ಷಿಣ ಗೆ ಅವನ ಅತಿ ನೆಯ ಬಹಳ ಕೆಲಸ ಎಲ್ಲ ಪ್ರತಿ ಇತ್ಯಾದಿ ಇವು ಬೇರೆ ಹೀಗೆ ನಡುವೆ ಇದಕ್ಕೆ ಎಸ್ ಇವರ ಮೊದಲು ಶ್ರೀ ಮಾಡುವ ಇದರಲ್ಲಿ ರೀತಿಯ ಮಾಡಿದ ಕಾಲ ಅಲ್ಲಿ ಮಾಡಲು ಅದೇ ಈಗ ಅವು ಗಳು ಎ ಎಂಬುದು ಅವನು ಅಂದರೆ ಅವರಿಗೆ ಇರುವ ವಿಶೇಷ ಮುಂದೆ ಅವುಗಳ ಮುಂತಾದ ಮೂಲ ಬಿ ಮೀ ಒಂದೇ ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ ಮಾಡಿ ಅವರನ್ನು ಇದೇ ಯ ರೀತಿಯಲ್ಲಿ ಜೊತೆ ಅದರಲ್ಲಿ ಮಾಡಿದರು ನಡೆದ ಆಗ ಮತ್ತೆ ಪೂರ್ವ ಆತ ಬಂದ ಯಾವ ಒಟ್ಟು ಇತರೆ ಹಿಂದೆ ಪ್ರಮಾಣದ ಗಳನ್ನು ಕುರಿತು ಯು ಆದ್ದರಿಂದ ಅಲ್ಲದೆ ನಗರದ ಮೇಲಿನ ಏಕೆಂದರೆ ರಷ್ಟು ಎಂಬುದನ್ನು ಬಾರಿ ಎಂದರೆ ಹಿಂದಿನ ಆದರೂ ಆದ ಸಂಬಂಧಿಸಿದ ಮತ್ತೊಂದು ಸಿ ಆತನ ".split(" ")),e.kn.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.kn.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var n=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(n).split("|")},e.Pipeline.registerFunction(e.kn.stemmer,"stemmer-kn"),e.Pipeline.registerFunction(e.kn.stopWordFilter,"stopWordFilter-kn")}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.ko.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.ko.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.multi.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.multi.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.nl.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.nl.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.no.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.no.min.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
/*!
|
||||
* Lunr languages, `Norwegian` language
|
||||
* https://github.com/MihaiValentin/lunr-languages
|
||||
*
|
||||
* Copyright 2014, Mihai Valentin
|
||||
* http://www.mozilla.org/MPL/
|
||||
*/
|
||||
/*!
|
||||
* based on
|
||||
* Snowball JavaScript Library v0.3
|
||||
* http://code.google.com/p/urim/
|
||||
* http://snowball.tartarus.org/
|
||||
*
|
||||
* Copyright 2010, Oleg Mazko
|
||||
* http://www.mozilla.org/MPL/
|
||||
*/
|
||||
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.pt.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.pt.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.ro.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.ro.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
v0.24.0/assets/javascripts/lunr/min/lunr.ru.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.ru.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.sa.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.sa.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sa=function(){this.pipeline.reset(),this.pipeline.add(e.sa.trimmer,e.sa.stopWordFilter,e.sa.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sa.stemmer))},e.sa.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿ꣠-꣱ꣲ-ꣷ꣸-ꣻ꣼-ꣽꣾ-ꣿᆰ0-ᆰ9",e.sa.trimmer=e.trimmerSupport.generateTrimmer(e.sa.wordCharacters),e.Pipeline.registerFunction(e.sa.trimmer,"trimmer-sa"),e.sa.stopWordFilter=e.generateStopWordFilter('तथा अयम् एकम् इत्यस्मिन् तथा तत् वा अयम् इत्यस्य ते आहूत उपरि तेषाम् किन्तु तेषाम् तदा इत्यनेन अधिकः इत्यस्य तत् केचन बहवः द्वि तथा महत्वपूर्णः अयम् अस्य विषये अयं अस्ति तत् प्रथमः विषये इत्युपरि इत्युपरि इतर अधिकतमः अधिकः अपि सामान्यतया ठ इतरेतर नूतनम् द न्यूनम् कश्चित् वा विशालः द सः अस्ति तदनुसारम् तत्र अस्ति केवलम् अपि अत्र सर्वे विविधाः तत् बहवः यतः इदानीम् द दक्षिण इत्यस्मै तस्य उपरि नथ अतीव कार्यम् सर्वे एकैकम् इत्यादि। एते सन्ति उत इत्थम् मध्ये एतदर्थं . स कस्य प्रथमः श्री. करोति अस्मिन् प्रकारः निर्मिता कालः तत्र कर्तुं समान अधुना ते सन्ति स एकः अस्ति सः अर्थात् तेषां कृते . स्थितम् विशेषः अग्रिम तेषाम् समान स्रोतः ख म समान इदानीमपि अधिकतया करोतु ते समान इत्यस्य वीथी सह यस्मिन् कृतवान् धृतः तदा पुनः पूर्वं सः आगतः किम् कुल इतर पुरा मात्रा स विषये उ अतएव अपि नगरस्य उपरि यतः प्रतिशतं कतरः कालः साधनानि भूत तथापि जात सम्बन्धि अन्यत् ग अतः अस्माकं स्वकीयाः अस्माकं इदानीं अन्तः इत्यादयः भवन्तः इत्यादयः एते एताः तस्य अस्य इदम् एते तेषां तेषां तेषां तान् तेषां तेषां तेषां समानः सः एकः च तादृशाः बहवः अन्ये च वदन्ति यत् कियत् कस्मै कस्मै यस्मै यस्मै यस्मै यस्मै न अतिनीचः किन्तु प्रथमं सम्पूर्णतया ततः चिरकालानन्तरं पुस्तकं सम्पूर्णतया अन्तः किन्तु अत्र वा इह इव श्रद्धाय अवशिष्यते परन्तु अन्ये वर्गाः सन्ति ते सन्ति शक्नुवन्ति सर्वे मिलित्वा सर्वे एकत्र"'.split(" ")),e.sa.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.sa.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var i=t.toString().toLowerCase().replace(/^\s+/,"");return r.cut(i).split("|")},e.Pipeline.registerFunction(e.sa.stemmer,"stemmer-sa"),e.Pipeline.registerFunction(e.sa.stopWordFilter,"stopWordFilter-sa")}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.stemmer.support.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.sv.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.sv.min.js
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
/*!
|
||||
* Lunr languages, `Swedish` language
|
||||
* https://github.com/MihaiValentin/lunr-languages
|
||||
*
|
||||
* Copyright 2014, Mihai Valentin
|
||||
* http://www.mozilla.org/MPL/
|
||||
*/
|
||||
/*!
|
||||
* based on
|
||||
* Snowball JavaScript Library v0.3
|
||||
* http://code.google.com/p/urim/
|
||||
* http://snowball.tartarus.org/
|
||||
*
|
||||
* Copyright 2010, Oleg Mazko
|
||||
* http://www.mozilla.org/MPL/
|
||||
*/
|
||||
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.ta.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.ta.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWordFilter,e.ta.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ta.stemmer))},e.ta.wordCharacters="-உஊ-ஏஐ-ஙச-ட-னப-யர-ஹ-ிீ-ொ-ௐ---௩௪-௯௰-௹௺-a-zA-Za-zA-Z0-90-9",e.ta.trimmer=e.trimmerSupport.generateTrimmer(e.ta.wordCharacters),e.Pipeline.registerFunction(e.ta.trimmer,"trimmer-ta"),e.ta.stopWordFilter=e.generateStopWordFilter("அங்கு அங்கே அது அதை அந்த அவர் அவர்கள் அவள் அவன் அவை ஆக ஆகவே ஆகையால் ஆதலால் ஆதலினால் ஆனாலும் ஆனால் இங்கு இங்கே இது இதை இந்த இப்படி இவர் இவர்கள் இவள் இவன் இவை இவ்வளவு உனக்கு உனது உன் உன்னால் எங்கு எங்கே எது எதை எந்த எப்படி எவர் எவர்கள் எவள் எவன் எவை எவ்வளவு எனக்கு எனது எனவே என் என்ன என்னால் ஏது ஏன் தனது தன்னால் தானே தான் நாங்கள் நாம் நான் நீ நீங்கள்".split(" ")),e.ta.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.ta.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.ta.stemmer,"stemmer-ta"),e.Pipeline.registerFunction(e.ta.stopWordFilter,"stopWordFilter-ta")}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.te.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.te.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.te=function(){this.pipeline.reset(),this.pipeline.add(e.te.trimmer,e.te.stopWordFilter,e.te.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.te.stemmer))},e.te.wordCharacters="ఀ-ఄఅ-ఔక-హా-ౌౕ-ౖౘ-ౚౠ-ౡౢ-ౣ౦-౯౸-౿఼ఽ్ౝ౷",e.te.trimmer=e.trimmerSupport.generateTrimmer(e.te.wordCharacters),e.Pipeline.registerFunction(e.te.trimmer,"trimmer-te"),e.te.stopWordFilter=e.generateStopWordFilter("అందరూ అందుబాటులో అడగండి అడగడం అడ్డంగా అనుగుణంగా అనుమతించు అనుమతిస్తుంది అయితే ఇప్పటికే ఉన్నారు ఎక్కడైనా ఎప్పుడు ఎవరైనా ఎవరో ఏ ఏదైనా ఏమైనప్పటికి ఒక ఒకరు కనిపిస్తాయి కాదు కూడా గా గురించి చుట్టూ చేయగలిగింది తగిన తర్వాత దాదాపు దూరంగా నిజంగా పై ప్రకారం ప్రక్కన మధ్య మరియు మరొక మళ్ళీ మాత్రమే మెచ్చుకో వద్ద వెంట వేరుగా వ్యతిరేకంగా సంబంధం".split(" ")),e.te.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.te.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.te.stemmer,"stemmer-te"),e.Pipeline.registerFunction(e.te.stopWordFilter,"stopWordFilter-te")}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.th.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.th.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[-]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}});
|
18
v0.24.0/assets/javascripts/lunr/min/lunr.tr.min.js
vendored
Normal file
18
v0.24.0/assets/javascripts/lunr/min/lunr.tr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/javascripts/lunr/min/lunr.vi.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.vi.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}});
|
1
v0.24.0/assets/javascripts/lunr/min/lunr.zh.min.js
vendored
Normal file
1
v0.24.0/assets/javascripts/lunr/min/lunr.zh.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 為 以 于 於 上 他 而 后 後 之 来 來 及 了 因 下 可 到 由 这 這 与 與 也 此 但 并 並 个 個 其 已 无 無 小 我 们 們 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 當 从 從 得 打 凡 儿 兒 尔 爾 该 該 各 给 給 跟 和 何 还 還 即 几 幾 既 看 据 據 距 靠 啦 另 么 麽 每 嘛 拿 哪 您 凭 憑 且 却 卻 让 讓 仍 啥 如 若 使 谁 誰 虽 雖 随 隨 同 所 她 哇 嗡 往 些 向 沿 哟 喲 用 咱 则 則 怎 曾 至 致 着 著 诸 諸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}});
|
206
v0.24.0/assets/javascripts/lunr/tinyseg.js
Normal file
206
v0.24.0/assets/javascripts/lunr/tinyseg.js
Normal file
@ -0,0 +1,206 @@
|
||||
/**
|
||||
* export the module via AMD, CommonJS or as a browser global
|
||||
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
|
||||
*/
|
||||
;(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(factory)
|
||||
} else if (typeof exports === 'object') {
|
||||
/**
|
||||
* Node. Does not work with strict CommonJS, but
|
||||
* only CommonJS-like environments that support module.exports,
|
||||
* like Node.
|
||||
*/
|
||||
module.exports = factory()
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
factory()(root.lunr);
|
||||
}
|
||||
}(this, function () {
|
||||
/**
|
||||
* Just return a value to define the module export.
|
||||
* This example returns an object, but the module
|
||||
* can return a function as the exported value.
|
||||
*/
|
||||
|
||||
return function(lunr) {
|
||||
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
|
||||
// (c) 2008 Taku Kudo <taku@chasen.org>
|
||||
// TinySegmenter is freely distributable under the terms of a new BSD licence.
|
||||
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
|
||||
|
||||
function TinySegmenter() {
|
||||
var patterns = {
|
||||
"[一二三四五六七八九十百千万億兆]":"M",
|
||||
"[一-龠々〆ヵヶ]":"H",
|
||||
"[ぁ-ん]":"I",
|
||||
"[ァ-ヴーア-ン゙ー]":"K",
|
||||
"[a-zA-Za-zA-Z]":"A",
|
||||
"[0-90-9]":"N"
|
||||
}
|
||||
this.chartype_ = [];
|
||||
for (var i in patterns) {
|
||||
var regexp = new RegExp(i);
|
||||
this.chartype_.push([regexp, patterns[i]]);
|
||||
}
|
||||
|
||||
this.BIAS__ = -332
|
||||
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
|
||||
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
|
||||
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
|
||||
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
|
||||
this.BP2__ = {"BO":60,"OO":-1762};
|
||||
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
|
||||
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
|
||||
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
|
||||
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
|
||||
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
|
||||
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669};
|
||||
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
|
||||
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
|
||||
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
|
||||
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
|
||||
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
|
||||
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
|
||||
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
|
||||
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
|
||||
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
|
||||
this.TW1__ = {"につい":-4681,"東京都":2026};
|
||||
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
|
||||
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
|
||||
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
|
||||
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
|
||||
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
|
||||
this.UC3__ = {"A":-1370,"I":2311};
|
||||
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
|
||||
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
|
||||
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
|
||||
this.UP1__ = {"O":-214};
|
||||
this.UP2__ = {"B":69,"O":935};
|
||||
this.UP3__ = {"B":189};
|
||||
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
|
||||
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
|
||||
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
|
||||
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
|
||||
this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
|
||||
this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
|
||||
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
|
||||
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
|
||||
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496};
|
||||
|
||||
return this;
|
||||
}
|
||||
TinySegmenter.prototype.ctype_ = function(str) {
|
||||
for (var i in this.chartype_) {
|
||||
if (str.match(this.chartype_[i][0])) {
|
||||
return this.chartype_[i][1];
|
||||
}
|
||||
}
|
||||
return "O";
|
||||
}
|
||||
|
||||
TinySegmenter.prototype.ts_ = function(v) {
|
||||
if (v) { return v; }
|
||||
return 0;
|
||||
}
|
||||
|
||||
TinySegmenter.prototype.segment = function(input) {
|
||||
if (input == null || input == undefined || input == "") {
|
||||
return [];
|
||||
}
|
||||
var result = [];
|
||||
var seg = ["B3","B2","B1"];
|
||||
var ctype = ["O","O","O"];
|
||||
var o = input.split("");
|
||||
for (i = 0; i < o.length; ++i) {
|
||||
seg.push(o[i]);
|
||||
ctype.push(this.ctype_(o[i]))
|
||||
}
|
||||
seg.push("E1");
|
||||
seg.push("E2");
|
||||
seg.push("E3");
|
||||
ctype.push("O");
|
||||
ctype.push("O");
|
||||
ctype.push("O");
|
||||
var word = seg[3];
|
||||
var p1 = "U";
|
||||
var p2 = "U";
|
||||
var p3 = "U";
|
||||
for (var i = 4; i < seg.length - 3; ++i) {
|
||||
var score = this.BIAS__;
|
||||
var w1 = seg[i-3];
|
||||
var w2 = seg[i-2];
|
||||
var w3 = seg[i-1];
|
||||
var w4 = seg[i];
|
||||
var w5 = seg[i+1];
|
||||
var w6 = seg[i+2];
|
||||
var c1 = ctype[i-3];
|
||||
var c2 = ctype[i-2];
|
||||
var c3 = ctype[i-1];
|
||||
var c4 = ctype[i];
|
||||
var c5 = ctype[i+1];
|
||||
var c6 = ctype[i+2];
|
||||
score += this.ts_(this.UP1__[p1]);
|
||||
score += this.ts_(this.UP2__[p2]);
|
||||
score += this.ts_(this.UP3__[p3]);
|
||||
score += this.ts_(this.BP1__[p1 + p2]);
|
||||
score += this.ts_(this.BP2__[p2 + p3]);
|
||||
score += this.ts_(this.UW1__[w1]);
|
||||
score += this.ts_(this.UW2__[w2]);
|
||||
score += this.ts_(this.UW3__[w3]);
|
||||
score += this.ts_(this.UW4__[w4]);
|
||||
score += this.ts_(this.UW5__[w5]);
|
||||
score += this.ts_(this.UW6__[w6]);
|
||||
score += this.ts_(this.BW1__[w2 + w3]);
|
||||
score += this.ts_(this.BW2__[w3 + w4]);
|
||||
score += this.ts_(this.BW3__[w4 + w5]);
|
||||
score += this.ts_(this.TW1__[w1 + w2 + w3]);
|
||||
score += this.ts_(this.TW2__[w2 + w3 + w4]);
|
||||
score += this.ts_(this.TW3__[w3 + w4 + w5]);
|
||||
score += this.ts_(this.TW4__[w4 + w5 + w6]);
|
||||
score += this.ts_(this.UC1__[c1]);
|
||||
score += this.ts_(this.UC2__[c2]);
|
||||
score += this.ts_(this.UC3__[c3]);
|
||||
score += this.ts_(this.UC4__[c4]);
|
||||
score += this.ts_(this.UC5__[c5]);
|
||||
score += this.ts_(this.UC6__[c6]);
|
||||
score += this.ts_(this.BC1__[c2 + c3]);
|
||||
score += this.ts_(this.BC2__[c3 + c4]);
|
||||
score += this.ts_(this.BC3__[c4 + c5]);
|
||||
score += this.ts_(this.TC1__[c1 + c2 + c3]);
|
||||
score += this.ts_(this.TC2__[c2 + c3 + c4]);
|
||||
score += this.ts_(this.TC3__[c3 + c4 + c5]);
|
||||
score += this.ts_(this.TC4__[c4 + c5 + c6]);
|
||||
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
|
||||
score += this.ts_(this.UQ1__[p1 + c1]);
|
||||
score += this.ts_(this.UQ2__[p2 + c2]);
|
||||
score += this.ts_(this.UQ3__[p3 + c3]);
|
||||
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
|
||||
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
|
||||
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
|
||||
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
|
||||
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
|
||||
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
|
||||
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
|
||||
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
|
||||
var p = "O";
|
||||
if (score > 0) {
|
||||
result.push(word);
|
||||
word = "";
|
||||
p = "B";
|
||||
}
|
||||
p1 = p2;
|
||||
p2 = p3;
|
||||
p3 = p;
|
||||
word += seg[i];
|
||||
}
|
||||
result.push(word);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
lunr.TinySegmenter = TinySegmenter;
|
||||
};
|
||||
|
||||
}));
|
6708
v0.24.0/assets/javascripts/lunr/wordcut.js
Normal file
6708
v0.24.0/assets/javascripts/lunr/wordcut.js
Normal file
File diff suppressed because one or more lines are too long
42
v0.24.0/assets/javascripts/workers/search.6ce7567c.min.js
vendored
Normal file
42
v0.24.0/assets/javascripts/workers/search.6ce7567c.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/stylesheets/main.8c3ca2c6.min.css
vendored
Normal file
1
v0.24.0/assets/stylesheets/main.8c3ca2c6.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/stylesheets/main.8c3ca2c6.min.css.map
Normal file
1
v0.24.0/assets/stylesheets/main.8c3ca2c6.min.css.map
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/stylesheets/palette.06af60db.min.css
vendored
Normal file
1
v0.24.0/assets/stylesheets/palette.06af60db.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
v0.24.0/assets/stylesheets/palette.06af60db.min.css.map
Normal file
1
v0.24.0/assets/stylesheets/palette.06af60db.min.css.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["src/templates/assets/stylesheets/palette/_scheme.scss","../../../../src/templates/assets/stylesheets/palette.scss","src/templates/assets/stylesheets/palette/_accent.scss","src/templates/assets/stylesheets/palette/_primary.scss","src/templates/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"AA2BA,cAGE,6BAME,sDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,mDAAA,CACA,gDAAA,CAGA,0BAAA,CACA,mCAAA,CAGA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,iCAAA,CAGA,yDAAA,CACA,iEAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,qDAAA,CACA,uDAAA,CAGA,8DAAA,CAKA,8DAAA,CAKA,0DAAA,CAvEA,iBCeF,CD6DE,kHAEE,YC3DJ,CDkFE,yDACE,4BChFJ,CD+EE,2DACE,4BC7EJ,CD4EE,gEACE,4BC1EJ,CDyEE,2DACE,4BCvEJ,CDsEE,yDACE,4BCpEJ,CDmEE,0DACE,4BCjEJ,CDgEE,gEACE,4BC9DJ,CD6DE,0DACE,4BC3DJ,CD0DE,2OACE,4BC/CJ,CDsDA,+FAGE,iCCpDF,CACF,CC/CE,2BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD2CN,CCrDE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDkDN,CC5DE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDyDN,CCnEE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDgEN,CC1EE,8BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDuEN,CCjFE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD8EN,CCxFE,kCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDqFN,CC/FE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD4FN,CCtGE,4BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDmGN,CC7GE,6BACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCD0GN,CCpHE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDiHN,CC3HE,4BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCD2HN,CClIE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDkIN,CCzIE,6BACE,yBAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDyIN,CChJE,8BACE,4BAAA,CACA,2CAAA,CAIE,8BAAA,CACA,qCDgJN,CCvJE,mCACE,4BAAA,CACA,2CAAA,CAOE,yBAAA,CACA,qCDoJN,CEzJE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsJN,CEjKE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCF8JN,CEzKE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsKN,CEjLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCF8KN,CEzLE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsLN,CEjME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCF8LN,CEzME,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsMN,CEjNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCF8MN,CEzNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsNN,CEjOE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCF8NN,CEzOE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsON,CEjPE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFiPN,CEzPE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFyPN,CEjQE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFiQN,CEzQE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,+BAAA,CACA,sCFyQN,CEjRE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCF8QN,CEzRE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCFsRN,CEjSE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BF0RN,CE1SE,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,sCAAA,CAKA,4BFmSN,CEpRE,sEACE,4BFuRJ,CExRE,+DACE,4BF2RJ,CE5RE,iEACE,4BF+RJ,CEhSE,gEACE,4BFmSJ,CEpSE,iEACE,4BFuSJ,CE9RA,8BACE,mDAAA,CACA,4DAAA,CACA,0DAAA,CACA,oDAAA,CACA,2DAAA,CAGA,4BF+RF,CE5RE,yCACE,+BF8RJ,CE3RI,kDAEE,0CAAA,CACA,sCAAA,CAFA,mCF+RN,CG3MI,mCD1EA,+CACE,8CFwRJ,CErRI,qDACE,8CFuRN,CElRE,iEACE,mCFoRJ,CACF,CGtNI,sCDvDA,uCACE,oCFgRJ,CACF,CEvQA,8BACE,kDAAA,CACA,4DAAA,CACA,wDAAA,CACA,oDAAA,CACA,6DAAA,CAGA,4BFwQF,CErQE,yCACE,+BFuQJ,CEpQI,kDAEE,0CAAA,CACA,sCAAA,CAFA,mCFwQN,CEjQE,yCACE,6CFmQJ,CG5NI,0CDhCA,8CACE,gDF+PJ,CACF,CGjOI,0CDvBA,iFACE,6CF2PJ,CACF,CGzPI,sCDKA,uCACE,6CFuPJ,CACF","file":"palette.css"}
|
1869
v0.24.0/bookmarks/index.html
Normal file
1869
v0.24.0/bookmarks/index.html
Normal file
File diff suppressed because it is too large
Load Diff
14
v0.24.0/branches/index.html
Normal file
14
v0.24.0/branches/index.html
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Redirecting...</title>
|
||||
<link rel="canonical" href="../bookmarks/">
|
||||
<script>var anchor=window.location.hash.substr(1);location.href="../bookmarks/"+(anchor?"#"+anchor:"")</script>
|
||||
<meta http-equiv="refresh" content="0; url=../bookmarks/">
|
||||
</head>
|
||||
<body>
|
||||
You're being redirected to a <a href="../bookmarks/">new destination</a>.
|
||||
</body>
|
||||
</html>
|
8289
v0.24.0/cli-reference/index.html
Normal file
8289
v0.24.0/cli-reference/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1746
v0.24.0/code-of-conduct/index.html
Normal file
1746
v0.24.0/code-of-conduct/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1640
v0.24.0/community_tools/index.html
Normal file
1640
v0.24.0/community_tools/index.html
Normal file
File diff suppressed because it is too large
Load Diff
33
v0.24.0/config.toml
Normal file
33
v0.24.0/config.toml
Normal file
@ -0,0 +1,33 @@
|
||||
# Basic template of config settings
|
||||
|
||||
# Don't forget to change these to your own details!
|
||||
user.name = "YOUR NAME"
|
||||
user.email = "YOUR_EMAIL@example.com"
|
||||
|
||||
ui.color = "auto" # the default
|
||||
# ui.color = never # no color
|
||||
|
||||
ui.editor = "pico" # the default on Unix
|
||||
# ui.editor = "vim"
|
||||
|
||||
ui.diff-editor = ":builtin" # default, internal TUI tool
|
||||
# ui.diff-editor = "meld"
|
||||
# ui.diff-editor = "vimdiff"
|
||||
|
||||
ui.merge-editor = "meld" # default
|
||||
# ui.merge-editor = "vscode"
|
||||
# ui.merge-editor = "vimdiff"
|
||||
# ui.merge-editor = "kdiff3"
|
||||
|
||||
# Relative timestamp rendered as "x days/hours/seconds ago"
|
||||
template-aliases.'format_timestamp(timestamp)' = 'timestamp.ago()'
|
||||
|
||||
# The four merge tools listed above are pre-configured. For detailed information
|
||||
# about how to change the default configuration or how to configure another tool,
|
||||
# see documentation in config.md. An example:
|
||||
|
||||
# merge-tools.meld.program = "C:\\Program Files\\Meld\\meld.exe" # If not in PATH
|
||||
|
||||
# Change the default push/fetch remote for `jj git push` and `jj git fetch`
|
||||
# git.fetch = "upstream"
|
||||
# git.push = "myfork"
|
3548
v0.24.0/config/index.html
Normal file
3548
v0.24.0/config/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1649
v0.24.0/conflicts/index.html
Normal file
1649
v0.24.0/conflicts/index.html
Normal file
File diff suppressed because it is too large
Load Diff
2272
v0.24.0/contributing/index.html
Normal file
2272
v0.24.0/contributing/index.html
Normal file
File diff suppressed because it is too large
Load Diff
2058
v0.24.0/design/copy-tracking/index.html
Normal file
2058
v0.24.0/design/copy-tracking/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1837
v0.24.0/design/git-submodule-storage/index.html
Normal file
1837
v0.24.0/design/git-submodule-storage/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1960
v0.24.0/design/git-submodules/index.html
Normal file
1960
v0.24.0/design/git-submodules/index.html
Normal file
File diff suppressed because it is too large
Load Diff
2021
v0.24.0/design/run/index.html
Normal file
2021
v0.24.0/design/run/index.html
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user