forked from mirrors/jj
f67d6a192c
The replacement was done by `sed`.
This should only change versions of the docs prior to 864869ab
(in
particular, not the `latest` version nor the `prerelease` version), and
make it as though the old version of the docs were compiled with that
commit. It tries to solve the same problem:
https://www.google.com/search?q=jj+revsets still points to jj v0.13
docs.
Google seems really slow to update its index, and I'm beginning to worry
that it might think we have a spammy site with many almost identical
pages. I hope it will pick up this change once it tries to update its
crawl of pages it's already indexing.
Loosely related reading: https://news.ycombinator.com/item?id=40970987
2045 lines
No EOL
76 KiB
HTML
2045 lines
No EOL
76 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://martinvonz.github.io/jj/latest/config.html">
|
|
|
|
|
|
<link rel="prev" href="glossary.html">
|
|
|
|
|
|
<link rel="next" href="revsets.html">
|
|
|
|
|
|
<link rel="icon" href="assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.5.2, mkdocs-material-9.2.5">
|
|
|
|
|
|
|
|
<title>Settings - Jujutsu docs</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="assets/stylesheets/main.0e669242.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script src="https://unpkg.com/iframe-worker/shim"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body dir="ltr">
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#configuration" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="." title="Jujutsu docs" class="md-header__button md-logo" aria-label="Jujutsu docs" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
Jujutsu docs
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Settings
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="." title="Jujutsu docs" class="md-nav__button md-logo" aria-label="Jujutsu docs" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
|
|
|
</a>
|
|
Jujutsu docs
|
|
</label>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
|
|
|
|
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Getting started
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_1">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Getting started
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="install-and-setup.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Installation and Setup
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="tutorial.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Tutorial and Birds-Eye View
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="github.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Working with GitHub
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="FAQ.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
FAQ
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
|
|
|
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Concepts
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_3">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Concepts
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="working-copy.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Working Copy
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="branches.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Branches
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="conflicts.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Conflicts
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="operation-log.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Operation Log
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="glossary.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Glossary
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
|
|
|
|
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Configuration
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_4">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Configuration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<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">
|
|
Settings
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="config.html" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Settings
|
|
</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="#config-files-and-toml" class="md-nav__link">
|
|
Config files and TOML
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Config files and TOML">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dotted-style-and-headings" class="md-nav__link">
|
|
Dotted style and headings
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#user-settings" class="md-nav__link">
|
|
User settings
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ui-settings" class="md-nav__link">
|
|
UI settings
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="UI settings">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#colorizing-output" class="md-nav__link">
|
|
Colorizing output
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#custom-colors-and-styles" class="md-nav__link">
|
|
Custom colors and styles
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-command" class="md-nav__link">
|
|
Default command
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-description" class="md-nav__link">
|
|
Default description
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#diff-format" class="md-nav__link">
|
|
Diff format
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#generating-diffs-by-external-command" class="md-nav__link">
|
|
Generating diffs by external command
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-revisions-to-log" class="md-nav__link">
|
|
Default revisions to log
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#graph-style" class="md-nav__link">
|
|
Graph style
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#wrap-log-content" class="md-nav__link">
|
|
Wrap log content
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#display-of-commit-and-change-ids" class="md-nav__link">
|
|
Display of commit and change ids
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#relative-timestamps" class="md-nav__link">
|
|
Relative timestamps
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#author-format" class="md-nav__link">
|
|
Author format
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#pager" class="md-nav__link">
|
|
Pager
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Pager">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#processing-contents-to-be-paged" class="md-nav__link">
|
|
Processing contents to be paged
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#aliases" class="md-nav__link">
|
|
Aliases
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editor" class="md-nav__link">
|
|
Editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-diffs" class="md-nav__link">
|
|
Editing diffs
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Editing diffs">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#experimental-3-pane-diff-editing" class="md-nav__link">
|
|
Experimental 3-pane diff editing
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#setting-up-scm-diff-editor" class="md-nav__link">
|
|
Setting up scm-diff-editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#jj-instructions" class="md-nav__link">
|
|
JJ-INSTRUCTIONS
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-vim-as-a-diff-editor" class="md-nav__link">
|
|
Using Vim as a diff editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#3-way-merge-tools-for-conflict-resolution" class="md-nav__link">
|
|
3-way merge tools for conflict resolution
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="3-way merge tools for conflict resolution">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-conflict-markers-with-a-tool-or-a-text-editor" class="md-nav__link">
|
|
Editing conflict markers with a tool or a text editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#git-settings" class="md-nav__link">
|
|
Git settings
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Git settings">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#automatic-local-branch-creation" class="md-nav__link">
|
|
Automatic local branch creation
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prefix-for-generated-branches-on-push" class="md-nav__link">
|
|
Prefix for generated branches on push
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#filesystem-monitor" class="md-nav__link">
|
|
Filesystem monitor
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Filesystem monitor">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#watchman" class="md-nav__link">
|
|
Watchman
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="revsets.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Revset language
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="templates.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Templating language
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
|
|
|
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Comparisons
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_5">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Comparisons
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="git-comparison.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Git comparison
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="git-compatibility.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Git compatibility
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="sapling-comparison.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Sapling
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="related-work.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Other related work
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
|
|
|
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Technical details
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_6">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Technical details
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="technical/architecture.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Architecture
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="technical/concurrency.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Concurrency
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="technical/conflicts.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Conflicts
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
|
|
|
|
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Contributing
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Contributing
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="contributing.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Guidelines and "How to...?"
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="code-of-conduct.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Code of conduct
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
|
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Design docs
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Design docs
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="design/git-submodules.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
git-submodules
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="design/git-submodule-storage.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
git-submodule-storage
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="design/tracking-branches.html" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Tracking branches
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<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="#config-files-and-toml" class="md-nav__link">
|
|
Config files and TOML
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Config files and TOML">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#dotted-style-and-headings" class="md-nav__link">
|
|
Dotted style and headings
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#user-settings" class="md-nav__link">
|
|
User settings
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ui-settings" class="md-nav__link">
|
|
UI settings
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="UI settings">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#colorizing-output" class="md-nav__link">
|
|
Colorizing output
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#custom-colors-and-styles" class="md-nav__link">
|
|
Custom colors and styles
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-command" class="md-nav__link">
|
|
Default command
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-description" class="md-nav__link">
|
|
Default description
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#diff-format" class="md-nav__link">
|
|
Diff format
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#generating-diffs-by-external-command" class="md-nav__link">
|
|
Generating diffs by external command
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-revisions-to-log" class="md-nav__link">
|
|
Default revisions to log
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#graph-style" class="md-nav__link">
|
|
Graph style
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#wrap-log-content" class="md-nav__link">
|
|
Wrap log content
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#display-of-commit-and-change-ids" class="md-nav__link">
|
|
Display of commit and change ids
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#relative-timestamps" class="md-nav__link">
|
|
Relative timestamps
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#author-format" class="md-nav__link">
|
|
Author format
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#pager" class="md-nav__link">
|
|
Pager
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Pager">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#processing-contents-to-be-paged" class="md-nav__link">
|
|
Processing contents to be paged
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#aliases" class="md-nav__link">
|
|
Aliases
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editor" class="md-nav__link">
|
|
Editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-diffs" class="md-nav__link">
|
|
Editing diffs
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Editing diffs">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#experimental-3-pane-diff-editing" class="md-nav__link">
|
|
Experimental 3-pane diff editing
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#setting-up-scm-diff-editor" class="md-nav__link">
|
|
Setting up scm-diff-editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#jj-instructions" class="md-nav__link">
|
|
JJ-INSTRUCTIONS
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-vim-as-a-diff-editor" class="md-nav__link">
|
|
Using Vim as a diff editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#3-way-merge-tools-for-conflict-resolution" class="md-nav__link">
|
|
3-way merge tools for conflict resolution
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="3-way merge tools for conflict resolution">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-conflict-markers-with-a-tool-or-a-text-editor" class="md-nav__link">
|
|
Editing conflict markers with a tool or a text editor
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#git-settings" class="md-nav__link">
|
|
Git settings
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Git settings">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#automatic-local-branch-creation" class="md-nav__link">
|
|
Automatic local branch creation
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prefix-for-generated-branches-on-push" class="md-nav__link">
|
|
Prefix for generated branches on push
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#filesystem-monitor" class="md-nav__link">
|
|
Filesystem monitor
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Filesystem monitor">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#watchman" class="md-nav__link">
|
|
Watchman
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
<h1 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">¶</a></h1>
|
|
<p>These are the config settings available to jj/Jujutsu.</p>
|
|
<h2 id="config-files-and-toml">Config files and TOML<a class="headerlink" href="#config-files-and-toml" title="Permanent link">¶</a></h2>
|
|
<p>The config settings are loaded from the following locations. Less common ways to
|
|
specify <code>jj</code> config settings are discussed in a later section.</p>
|
|
<ul>
|
|
<li><a href="#user-config-file">The user config file</a></li>
|
|
<li><code>.jj/repo/config.toml</code> (per-repository)</li>
|
|
</ul>
|
|
<p>See the <a href="https://toml.io/en/">TOML site</a> and the <a href="https://toml.io/en/v1.0.0">syntax guide</a> for a description of the syntax.</p>
|
|
<p>The first thing to remember is that the value of a setting (the part to the
|
|
right of the <code>=</code> sign) should be surrounded in quotes if it's a string.</p>
|
|
<h3 id="dotted-style-and-headings">Dotted style and headings<a class="headerlink" href="#dotted-style-and-headings" title="Permanent link">¶</a></h3>
|
|
<p>In TOML, anything under a heading can be dotted instead. For example,
|
|
<code>user.name = "YOUR NAME"</code> is equivalent to:</p>
|
|
<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="s">"YOUR NAME"</span>
|
|
</code></pre></div>
|
|
<p>For future reference, here are a couple of more complicated examples,</p>
|
|
<div class="highlight"><pre><span></span><code><span class="c1"># Dotted style</span>
|
|
<span class="n">template-aliases</span><span class="p">.</span><span class="s">"format_short_id(id)"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"id.shortest(12)"</span>
|
|
<span class="n">colors</span><span class="p">.</span><span class="s">"commit_id prefix"</span><span class="p">.</span><span class="n">bold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
|
|
|
<span class="c1"># is equivalent to:</span>
|
|
<span class="k">[template-aliases]</span>
|
|
<span class="s">"format_short_id(id)"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"id.shortest(12)"</span>
|
|
|
|
<span class="k">[colors]</span>
|
|
<span class="s">"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="o">=</span><span class="w"> </span><span class="n">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
|
|
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>
|
|
<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="s">"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="s">"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>
|
|
<h3 id="colorizing-output">Colorizing output<a class="headerlink" href="#colorizing-output" title="Permanent link">¶</a></h3>
|
|
<p>Possible values are <code>always</code>, <code>never</code> and <code>auto</code> (default: <code>auto</code>).
|
|
<code>auto</code> will use color only when writing to a terminal.</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="s">"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="s">"green"</span>
|
|
</code></pre></div>
|
|
<p>The following colors are available:</p>
|
|
<ul>
|
|
<li>black</li>
|
|
<li>red</li>
|
|
<li>green</li>
|
|
<li>yellow</li>
|
|
<li>blue</li>
|
|
<li>magenta</li>
|
|
<li>cyan</li>
|
|
<li>white</li>
|
|
<li>default</li>
|
|
</ul>
|
|
<p>All of them but "default" come in a bright version too, e.g. "bright red". The
|
|
"default" color can be used to override a color defined by a parent style
|
|
(explained below).</p>
|
|
<p>If you use a string value for a color, as in the example 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="o">=</span><span class="w"> </span><span class="s">"green"</span><span class="p">,</span><span class="w"> </span><span class="n">bg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"red"</span><span class="p">,</span><span class="w"> </span><span class="n">bold</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">true</span><span class="p">,</span><span class="w"> </span><span class="n">underline</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">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="s">"green"</span>
|
|
<span class="n">colors</span><span class="p">.</span><span class="s">"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="o">=</span><span class="w"> </span><span class="n">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>
|
|
<p>Which elements can be colored is not yet documented, but see
|
|
the <a href="https://github.com/martinvonz/jj/blob/main/cli/src/config/colors.toml">default color configuration</a>
|
|
for some examples of what's possible.</p>
|
|
<h3 id="default-command">Default command<a class="headerlink" href="#default-command" title="Permanent link">¶</a></h3>
|
|
<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="s">"log"</span>
|
|
</code></pre></div>
|
|
<h3 id="default-description">Default description<a class="headerlink" href="#default-description" title="Permanent link">¶</a></h3>
|
|
<p>The value of the <code>ui.default-description</code> setting will be used to prepopulate
|
|
the editor when describing changes with an empty description. This could be a
|
|
useful reminder 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="s">"\n\nTESTED=TODO"</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="s">"git"</span>
|
|
</code></pre></div>
|
|
<h3 id="generating-diffs-by-external-command">Generating diffs by external command<a class="headerlink" href="#generating-diffs-by-external-command" title="Permanent link">¶</a></h3>
|
|
<p>If <code>ui.diff.tool</code> is set, the specified diff command will be called instead of
|
|
the internal diff function.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="c1"># Use Difftastic by default</span>
|
|
<span class="n">ui</span><span class="p">.</span><span class="n">diff</span><span class="p">.</span><span class="n">tool</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">"difft"</span><span class="p">,</span><span class="w"> </span><span class="s">"--color=always"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">]</span>
|
|
<span class="c1"># Use tool named "<name>" (see below)</span>
|
|
<span class="n">ui</span><span class="p">.</span><span class="n">diff</span><span class="p">.</span><span class="n">tool</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"<name>"</span>
|
|
</code></pre></div>
|
|
<p>The external diff tool can also be enabled by <code>diff --tool <name></code> argument.
|
|
For the tool named <code><name></code>, command arguments can be configured as follows.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[merge-tools.<name>]</span>
|
|
<span class="c1"># program = "<name>" # Defaults to the name of the tool if not specified</span>
|
|
<span class="n">diff-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="s">"--color=always"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">]</span>
|
|
</code></pre></div>
|
|
<ul>
|
|
<li><code>$left</code> and <code>$right</code> are replaced with the paths to the left and right
|
|
directories to diff respectively.</li>
|
|
</ul>
|
|
<h3 id="default-revisions-to-log">Default revisions to log<a class="headerlink" href="#default-revisions-to-log" title="Permanent link">¶</a></h3>
|
|
<p>You can configure the revisions <code>jj log</code> without <code>-r</code> should show.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="c1"># Show commits that are not in `main`</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="s">"main.."</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="c1"># "legacy"</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="s">"square"</span>
|
|
</code></pre></div>
|
|
<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>obslog</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>
|
|
</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>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[template-aliases]</span>
|
|
<span class="c1"># Highlight unique prefix and show at least 12 characters (default)</span>
|
|
<span class="s">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'id.shortest(12)'</span>
|
|
<span class="c1"># Just the shortest possible unique prefix</span>
|
|
<span class="s">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'id.shortest()'</span>
|
|
<span class="c1"># Show unique prefix and the rest surrounded by brackets</span>
|
|
<span class="s">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'id.shortest(12).prefix() ++ "[" ++ id.shortest(12).rest() ++ "]"'</span>
|
|
<span class="c1"># Always show 12 characters</span>
|
|
<span class="s">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'id.short(12)'</span>
|
|
</code></pre></div>
|
|
<p>To customize these separately, use the <code>format_short_commit_id()</code> and
|
|
<code>format_short_change_id()</code> aliases:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[template-aliases]</span>
|
|
<span class="c1"># Uppercase change ids. `jj` treats change and commit ids as case-insensitive.</span>
|
|
<span class="s">'format_short_change_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'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 branch</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="s">"(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>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[template-aliases]</span>
|
|
<span class="c1"># Full timestamp in ISO 8601 format (default)</span>
|
|
<span class="s">'format_timestamp(timestamp)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'timestamp'</span>
|
|
<span class="c1"># Relative timestamp rendered as "x days/hours/seconds ago"</span>
|
|
<span class="s">'format_timestamp(timestamp)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'timestamp.ago()'</span>
|
|
</code></pre></div>
|
|
<p><code>jj op log</code> defaults to relative timestamps. To use absolute timestamps, you
|
|
will need to modify the <code>format_time_range()</code> template alias.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[template-aliases]</span>
|
|
<span class="s">'format_time_range(time_range)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'time_range.start() ++ " - " ++ time_range.end()'</span>
|
|
</code></pre></div>
|
|
<h3 id="author-format">Author format<a class="headerlink" href="#author-format" title="Permanent link">¶</a></h3>
|
|
<p>Can be customized by the <code>format_short_signature()</code> template alias.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[template-aliases]</span>
|
|
<span class="c1"># Full email address (default)</span>
|
|
<span class="s">'format_short_signature(signature)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'signature.email()'</span>
|
|
<span class="c1"># Both name and email address</span>
|
|
<span class="s">'format_short_signature(signature)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'signature'</span>
|
|
<span class="c1"># Username part of the email address</span>
|
|
<span class="s">'format_short_signature(signature)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">'signature.username()'</span>
|
|
</code></pre></div>
|
|
<h2 id="pager">Pager<a class="headerlink" href="#pager" title="Permanent link">¶</a></h2>
|
|
<p>Windows users: Note that pagination is disabled by default on Windows for now
|
|
(<a href="https://github.com/martinvonz/jj/issues/2040">#2040</a>).</p>
|
|
<p>The default pager is can be set via <code>ui.pager</code> or the <code>PAGER</code> environment
|
|
variable. The priority is as follows (environment variables are marked with
|
|
a <code>$</code>):</p>
|
|
<p><code>ui.pager</code> > <code>$PAGER</code></p>
|
|
<p><code>less -FRX</code> is the default pager in the absence of any other setting.</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="s">"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="s">"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>
|
|
<p><code>ui.pager = ["sh", "-c", "diff-so-fancy | less -RFX"]</code></p>
|
|
<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) branch</span>
|
|
<span class="c1"># compared to the `main` branch</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="s">"log"</span><span class="p">,</span><span class="w"> </span><span class="s">"-r"</span><span class="p">,</span><span class="w"> </span><span class="s">"(main..@):: | (main..@)-"</span><span class="p">]</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
|
|
set it. The priority is as follows (environment variables are marked with
|
|
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="s">"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="s">"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="s">"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="s">"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="s">"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="s">"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="s">"C:/Program Files/Notepad++/notepad++.exe"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="s">"-multiInst"</span><span class="p">,</span><span class="w"> </span><span class="s">"-notabbar"</span><span class="p">,</span><span class="w"> </span><span class="s">"-nosession"</span><span class="p">,</span><span class="w"> </span><span class="s">"-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="s">"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>
|
|
<p>The <code>ui.diff-editor</code> setting affects the tool used for editing diffs (e.g.
|
|
<code>jj split</code>, <code>jj amend -i</code>). The default is <code>meld</code>.</p>
|
|
<p><code>jj</code> makes the following substitutions:</p>
|
|
<ul>
|
|
<li><code>$left</code> and <code>$right</code> are replaced with the paths to the left and right
|
|
directories to diff respectively.</li>
|
|
</ul>
|
|
<p>If no arguments are specified, <code>["$left", "$right"]</code> are set by default.</p>
|
|
<p>For example:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="c1"># Use merge-tools.kdiff3.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="s">"kdiff3"</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="s">"kdiff3"</span><span class="p">,</span><span class="w"> </span><span class="s">"--merge"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">]</span>
|
|
</code></pre></div>
|
|
<p>If <code>ui.diff-editor</code> consists of a single word, e.g. <code>"kdiff3"</code>, the arguments
|
|
will be read from the following config keys.</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">edit-args</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span>
|
|
<span class="w"> </span><span class="s">"--merge"</span><span class="p">,</span><span class="w"> </span><span class="s">"--cs"</span><span class="p">,</span><span class="w"> </span><span class="s">"CreateBakFiles=0"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">]</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>The special <code>"meld-3"</code> diff editor sets up Meld to show 3 panes: the sides of
|
|
the diff on the left and right, and an editing pane in the middle. This allow
|
|
you to see both sides of the original diff while editing. If you use
|
|
<code>ui.diff-editor = "meld-3"</code>, note that you can still get the 2-pane Meld view
|
|
using <code>jj diff --tool meld</code>.</p>
|
|
<p>To configure other diff editors, you can include <code>$output</code> together with <code>$left</code>
|
|
and <code>$right</code> in <code>merge-tools.TOOL.edit-args</code>. <code>jj</code> will replace <code>$output</code> with
|
|
the directory where the diff editor will be expected to put the result of the
|
|
user's edits. Initially, the contents of <code>$output</code> will be the same as the
|
|
contents of <code>$right</code>.</p>
|
|
<h3 id="setting-up-scm-diff-editor">Setting up <code>scm-diff-editor</code><a class="headerlink" href="#setting-up-scm-diff-editor" title="Permanent link">¶</a></h3>
|
|
<p><code>scm-diff-editor</code> is a terminal-based diff editor that is part of
|
|
the <a href="https://github.com/arxanas/git-branchless">git-branchless</a> suite of tools.
|
|
It's a good alternative to Meld, especially if you don't have a graphical
|
|
environment (e.g. when using SSH). To install it:</p>
|
|
<div class="highlight"><pre><span></span><code>cargo<span class="w"> </span>install<span class="w"> </span>--git<span class="w"> </span>https://github.com/arxanas/git-branchless<span class="w"> </span>scm-record<span class="w"> </span>--features<span class="w"> </span>scm-diff-editor
|
|
</code></pre></div>
|
|
<p>Then config it as follows:</p>
|
|
<div class="highlight"><pre><span></span><code><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="s">"scm-diff-editor"</span><span class="p">,</span><span class="w"> </span><span class="s">"--dir-diff"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">]</span>
|
|
</code></pre></div>
|
|
<h3 id="jj-instructions"><code>JJ-INSTRUCTIONS</code><a class="headerlink" href="#jj-instructions" title="Permanent link">¶</a></h3>
|
|
<p>When editing a diff, jj will include a synthetic file called <code>JJ-INSTRUCTIONS</code>
|
|
in the diff with instructions on how to edit the diff. Any changes you make to
|
|
this file will be ignored. To suppress the creation of this file, set
|
|
<code>ui.diff-instructions = false</code>.</p>
|
|
<h3 id="using-vim-as-a-diff-editor">Using Vim as a diff editor<a class="headerlink" href="#using-vim-as-a-diff-editor" title="Permanent link">¶</a></h3>
|
|
<p>Using <code>ui.diff-editor = "vimdiff"</code> is possible but not recommended. For a better
|
|
experience, you can follow these <a href="https://gist.github.com/ilyagr/5d6339fb7dac5e7ab06fe1561ec62d45">instructions</a> to configure
|
|
the <a href="https://github.com/will133/vim-dirdiff">DirDiff Vim plugin</a> and/or the <a href="https://github.com/balki/vimtabdiff">vimtabdiff Python script</a>.</p>
|
|
<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="s">"meld"</span><span class="w"> </span><span class="c1"># 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="s">"meld"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s">"$output"</span><span class="p">]</span>
|
|
</code></pre></div>
|
|
<p>The "meld", "kdiff3", and "vimdiff" tools can be used out of the box, as long as
|
|
they are installed.</p>
|
|
<p>To use a different tool named <code>TOOL</code>, the arguments to pass to the tool MUST be
|
|
specified either inline or in the <code>merge-tools.TOOL.merge-args</code> key. As an
|
|
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="s">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s">"--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="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">,</span><span class="w"> </span><span class="s">"-o"</span><span class="p">,</span><span class="w"> </span><span class="s">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s">"--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="s">"-f"</span><span class="p">,</span><span class="w"> </span><span class="s">"-d"</span><span class="p">,</span><span class="w"> </span><span class="s">"$output"</span><span class="p">,</span><span class="w"> </span><span class="s">"-M"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="s">"$left"</span><span class="p">,</span><span class="w"> </span><span class="s">"$base"</span><span class="p">,</span><span class="w"> </span><span class="s">"$right"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="s">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s">"wincmd J"</span><span class="p">,</span><span class="w"> </span><span class="s">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s">"set modifiable"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="s">"-c"</span><span class="p">,</span><span class="w"> </span><span class="s">"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="s">"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="n">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>
|
|
<li>
|
|
<p><code>$output</code> (REQUIRED) is replaced with the name of the file that the merge tool
|
|
should output. <code>jj</code> will read this file after the merge tool exits.</p>
|
|
</li>
|
|
<li>
|
|
<p><code>$left</code> and <code>$right</code> are replaced with the paths to two files containing the
|
|
content of each side of the conflict.</p>
|
|
</li>
|
|
<li>
|
|
<p><code>$base</code> is replaced with the path to a file containing the contents of the
|
|
conflicted file in the last common ancestor of the two sides of the conflict.</p>
|
|
</li>
|
|
</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>
|
|
<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
|
|
the merge tool (instead of leaving the output file empty and letting the merge
|
|
tool fill it in). To do that, set the
|
|
<code>merge-tools.vimdiff.merge-tool-edits-conflict-markers = true</code> option.</p>
|
|
<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>
|
|
<h2 id="git-settings">Git settings<a class="headerlink" href="#git-settings" title="Permanent link">¶</a></h2>
|
|
<h3 id="automatic-local-branch-creation">Automatic local branch creation<a class="headerlink" href="#automatic-local-branch-creation" title="Permanent link">¶</a></h3>
|
|
<p>By default, when <code>jj</code> imports a remote-tracking branch from Git, it also
|
|
creates a local branch with the same name. In some repositories, this
|
|
may be undesirable, e.g.:</p>
|
|
<ul>
|
|
<li>There is a remote with a lot of historical branches that you don't
|
|
want to be exported to the co-located Git repo.</li>
|
|
<li>There are multiple remotes with conflicting views of that branch,
|
|
resulting in an unhelpful conflicted state.</li>
|
|
</ul>
|
|
<p>You can disable this behavior by setting <code>git.auto-local-branch</code> like
|
|
so,</p>
|
|
<div class="codehilite"><pre><span></span><code>git.auto-local-branch = false
|
|
</code></pre></div>
|
|
|
|
<p>Note that this setting may make it easier to accidentally delete remote
|
|
branches. Since the local branch isn't created, the remote branch will be
|
|
deleted if you push the branch with <code>jj git push --branch</code> or <code>jj git push
|
|
--all</code>.</p>
|
|
<h3 id="prefix-for-generated-branches-on-push">Prefix for generated branches on push<a class="headerlink" href="#prefix-for-generated-branches-on-push" title="Permanent link">¶</a></h3>
|
|
<p><code>jj git push --change</code> generates branch names with a prefix of "push-" by
|
|
default. You can pick a different prefix by setting <code>git.push-branch-prefix</code>. For
|
|
example:</p>
|
|
<div class="codehilite"><pre><span></span><code>git.push-branch-prefix = "martinvonz/push-"
|
|
</code></pre></div>
|
|
|
|
<h2 id="filesystem-monitor">Filesystem monitor<a class="headerlink" href="#filesystem-monitor" title="Permanent link">¶</a></h2>
|
|
<p>In large repositories, it may be beneficial to use a "filesystem monitor" to
|
|
track changes to the working copy. This allows <code>jj</code> to take working copy
|
|
snapshots without having to rescan the entire working copy.</p>
|
|
<h3 id="watchman">Watchman<a class="headerlink" href="#watchman" title="Permanent link">¶</a></h3>
|
|
<p>The <a href="https://facebook.github.io/watchman/">Watchman filesystem monitor</a> is
|
|
currently only enabled if you compile jj with the <code>watchman</code> feature, such as
|
|
with the following invocation:</p>
|
|
<div class="highlight"><pre><span></span><code>cargo<span class="w"> </span>install<span class="w"> </span>--git<span class="w"> </span>https://github.com/martinvonz/jj.git<span class="w"> </span>--locked<span class="w"> </span>--bin<span class="w"> </span>jj<span class="w"> </span>jj-cli<span class="w"> </span>--features<span class="w"> </span>watchman
|
|
</code></pre></div>
|
|
<p>To configure the Watchman filesystem monitor, set
|
|
<code>core.fsmonitor = "watchman"</code>. Ensure that you have <a href="https://facebook.github.io/watchman/docs/install">installed the Watchman
|
|
executable on your system</a>.</p>
|
|
<p>Debugging commands are available under <code>jj debug watchman</code>.</p>
|
|
<h1 id="user-config-file">User config file<a class="headerlink" href="#user-config-file" title="Permanent link">¶</a></h1>
|
|
<p>On all platforms, the user's global <code>jj</code> configuration file is located at either
|
|
<code>~/.jjconfig.toml</code> (where <code>~</code> represents <code>$HOME</code> on Unix-likes, or
|
|
<code>%USERPROFILE%</code> on Windows) or in a platform-specific directory. The
|
|
platform-specific location is recommended for better integration with platform
|
|
services. It is an error for both of these files to exist.</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;">Platform</th>
|
|
<th style="text-align: left;">Value</th>
|
|
<th style="text-align: left;">Example</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align: left;">Linux</td>
|
|
<td style="text-align: left;"><code>$XDG_CONFIG_HOME/jj/config.toml</code></td>
|
|
<td style="text-align: left;"><code>/home/alice/.config/jj/config.toml</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">macOS</td>
|
|
<td style="text-align: left;"><code>$HOME/Library/Application Support/jj/config.toml</code></td>
|
|
<td style="text-align: left;"><code>/Users/Alice/Library/Application Support/jj/config.toml</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align: left;">Windows</td>
|
|
<td style="text-align: left;"><code>{FOLDERID_RoamingAppData}\jj\config.toml</code></td>
|
|
<td style="text-align: left;"><code>C:\Users\Alice\AppData\Roaming\jj\config.toml</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>The location of the <code>jj</code> config file can also be overridden with the
|
|
<code>JJ_CONFIG</code> environment variable. If it is not empty, it should contain the path
|
|
to a TOML file that will be used instead of any configuration file in the
|
|
default locations. For example,</p>
|
|
<div class="highlight"><pre><span></span><code>env<span class="w"> </span><span class="nv">JJ_CONFIG</span><span class="o">=</span>/dev/null<span class="w"> </span>jj<span class="w"> </span>log<span class="w"> </span><span class="c1"># Ignores any settings specified in the config file.</span>
|
|
</code></pre></div>
|
|
<p>You can use one or more <code>--config-toml</code> options on the command line to specify
|
|
additional configuration settings. This overrides settings defined in config
|
|
files or environment variables. For example,</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>--config-toml<span class="o">=</span><span class="s1">'ui.color="always"'</span><span class="w"> </span>--config-toml<span class="o">=</span><span class="s1">'ui.diff-editor="kdiff3"'</span><span class="w"> </span>split
|
|
</code></pre></div>
|
|
<p>Config specified this way must be valid TOML. In particular, string values must
|
|
be surrounded by quotes. To pass these quotes to <code>jj</code>, most shells require
|
|
surrounding those quotes with single quotes as shown above.</p>
|
|
<p>In <code>sh</code>-compatible shells, <code>--config-toml</code> can be used to merge entire TOML
|
|
files with the config specified in <code>.jjconfig.toml</code>:</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>--config-toml<span class="o">=</span><span class="s2">"</span><span class="k">$(</span>cat<span class="w"> </span>extra-config.toml<span class="k">)</span><span class="s2">"</span><span class="w"> </span>log
|
|
</code></pre></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
<script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.dfff1995.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
|
|
|
|
|
|
<script src="assets/javascripts/bundle.78eede0e.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |