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
2677 lines
No EOL
97 KiB
HTML
2677 lines
No EOL
97 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/">
|
|
|
|
|
|
<link rel="prev" href="../glossary/">
|
|
|
|
|
|
<link rel="next" href="../revsets/">
|
|
|
|
|
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.4">
|
|
|
|
|
|
|
|
<title>Settings - Jujutsu docs</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.50c56a3b.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<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" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
|
|
|
|
|
|
<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>
|
|
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_0">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to system preference" for="__palette_1" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9h-1.9M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69m-9.15 3.96h2.3L12 9l-1.15 3.65Z"/></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_2" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_2">
|
|
|
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
<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">
|
|
<a href=".." class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Home
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_2" id="__nav_2_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_2_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_2">
|
|
<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/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Installation and Setup
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../tutorial/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Tutorial and Birds-Eye View
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../github/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Working with GitHub
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../windows/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Working on Windows
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../FAQ/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
FAQ
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../cli-reference/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
CLI Reference
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../testimonials/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Testimonials
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</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">
|
|
Concepts
|
|
</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>
|
|
Concepts
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../working-copy/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Working Copy
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../branches/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Branches
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../conflicts/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Conflicts
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../operation-log/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Operation Log
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../glossary/" 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_7" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7" id="__nav_7_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_7_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<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="./" 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">
|
|
<span class="md-ellipsis">
|
|
Config files and TOML
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Dotted style and headings
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#user-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
User settings
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ui-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
UI settings
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Colorizing output
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#custom-colors-and-styles" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Custom colors and styles
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-command" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default command
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#diff-format" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Diff format
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#generating-diffs-by-external-command" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Generating diffs by external command
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-of-immutable-commits" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set of immutable commits
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-revisions-to-log" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default revisions to log
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#graph-style" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Graph style
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#wrap-log-content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Wrap log content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#display-of-commit-and-change-ids" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Display of commit and change ids
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#relative-timestamps" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Relative timestamps
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#author-format" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Author format
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#pager" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Pager
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Processing contents to be paged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#aliases" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Aliases
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Editor
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-diffs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Editing diffs
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Experimental 3-pane diff editing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#jj-instructions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JJ-INSTRUCTIONS
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-vim-as-a-diff-editor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Vim as a diff editor
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#3-way-merge-tools-for-conflict-resolution" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
3-way merge tools for conflict resolution
|
|
</span>
|
|
</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="#setting-up-a-custom-merge-tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Setting up a custom merge tool
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-conflict-markers-with-a-tool-or-a-text-editor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Editing conflict markers with a tool or a text editor
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commit-signing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Commit Signing
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Commit Signing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#gnupg-signing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
GnuPG Signing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ssh-signing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SSH Signing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#git-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Git settings
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Git settings">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-remotes-for-jj-git-fetch-and-jj-git-push" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default remotes for jj git fetch and jj git push
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#automatic-local-branch-creation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Automatic local branch creation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#abandon-commits-that-became-unreachable-in-git" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Abandon commits that became unreachable in Git
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prefix-for-generated-branches-on-push" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Prefix for generated branches on push
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#filesystem-monitor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Filesystem monitor
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Watchman
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ways-to-specify-jj-config-details" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Ways to specify jj config: details
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Ways to specify jj config: details">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#user-config-file" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
User config file
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#specifying-config-on-the-command-line" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Specifying config on the command-line
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../revsets/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Revset language
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../templates/" 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_8" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_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_8_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<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/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Git comparison
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../git-compatibility/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Git compatibility
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../sapling-comparison/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Sapling
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../related-work/" 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_9" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_9" id="__nav_9_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_9_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_9">
|
|
<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/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Architecture
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../technical/concurrency/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Concurrency
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../technical/conflicts/" 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_10" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_10" id="__nav_10_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_10_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_10">
|
|
<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/" 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/" 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_11" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_11" id="__nav_11_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_11_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_11">
|
|
<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/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
git-submodules
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design/git-submodule-storage/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
git-submodule-storage
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design/run/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
JJ run
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design/sparse-v2/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Sparse Patterns v2
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design/tracking-branches/" 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">
|
|
<span class="md-ellipsis">
|
|
Config files and TOML
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Dotted style and headings
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#user-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
User settings
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ui-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
UI settings
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Colorizing output
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#custom-colors-and-styles" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Custom colors and styles
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-command" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default command
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-description" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default description
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#diff-format" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Diff format
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#generating-diffs-by-external-command" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Generating diffs by external command
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#set-of-immutable-commits" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Set of immutable commits
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-revisions-to-log" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default revisions to log
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#graph-style" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Graph style
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#wrap-log-content" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Wrap log content
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#display-of-commit-and-change-ids" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Display of commit and change ids
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#relative-timestamps" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Relative timestamps
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#author-format" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Author format
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#pager" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Pager
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Processing contents to be paged
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#aliases" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Aliases
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Editor
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-diffs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Editing diffs
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Experimental 3-pane diff editing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#jj-instructions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
JJ-INSTRUCTIONS
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#using-vim-as-a-diff-editor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Using Vim as a diff editor
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#3-way-merge-tools-for-conflict-resolution" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
3-way merge tools for conflict resolution
|
|
</span>
|
|
</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="#setting-up-a-custom-merge-tool" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Setting up a custom merge tool
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#editing-conflict-markers-with-a-tool-or-a-text-editor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Editing conflict markers with a tool or a text editor
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commit-signing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Commit Signing
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Commit Signing">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#gnupg-signing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
GnuPG Signing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ssh-signing" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SSH Signing
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#git-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Git settings
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Git settings">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#default-remotes-for-jj-git-fetch-and-jj-git-push" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Default remotes for jj git fetch and jj git push
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#automatic-local-branch-creation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Automatic local branch creation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#abandon-commits-that-became-unreachable-in-git" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Abandon commits that became unreachable in Git
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prefix-for-generated-branches-on-push" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Prefix for generated branches on push
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#filesystem-monitor" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Filesystem monitor
|
|
</span>
|
|
</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">
|
|
<span class="md-ellipsis">
|
|
Watchman
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#ways-to-specify-jj-config-details" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Ways to specify jj config: details
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Ways to specify jj config: details">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#user-config-file" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
User config file
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#specifying-config-on-the-command-line" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Specifying config on the command-line
|
|
</span>
|
|
</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><code>jj</code> loads several types of config settings:</p>
|
|
<ul>
|
|
<li>
|
|
<p>The built-in settings. These cannot be edited. They can be viewed in the
|
|
<code>cli/src/config/</code> directory in <code>jj</code>'s source repo.</p>
|
|
</li>
|
|
<li>
|
|
<p>The user settings. These can be edited with <code>jj config edit --user</code>. User
|
|
settings are located in <a href="#user-config-file">the user config file</a>, which can be found with <code>jj
|
|
config path --user</code>.</p>
|
|
</li>
|
|
<li>
|
|
<p>The repo settings. These can be edited with <code>jj config edit --repo</code> and are
|
|
located in <code>.jj/repo/config.toml</code>.</p>
|
|
</li>
|
|
<li>
|
|
<p>Settings <a href="#specifying-config-on-the-command-line">specified in the command-line</a>.</p>
|
|
</li>
|
|
</ul>
|
|
<p>These are listed in the order they are loaded; the settings from earlier items
|
|
in
|
|
the list are overridden by the settings from later items if they disagree. Every
|
|
type of config except for the built-in settings is optional.</p>
|
|
<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 detailed description of the
|
|
syntax. We cover some of the basics below.</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="s2">"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="s2">"format_short_id(id)"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"id.shortest(12)"</span>
|
|
<span class="n">colors</span><span class="p">.</span><span class="s2">"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="s2">"format_short_id(id)"</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"id.shortest(12)"</span>
|
|
|
|
<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
|
|
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="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>
|
|
</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="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>
|
|
</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="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">"red"</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>
|
|
</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="s2">"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="s2">"</span><span class="se">\n\n</span><span class="s2">TESTED=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="s2">"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="k">[ui]</span>
|
|
<span class="c1"># Use Difftastic by default</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="s2">"difft"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--color=always"</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"># Use tool named "<name>" (see below)</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="s2">"<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.</span><span class="err"><</span><span class="k">name</span><span class="err">></span><span class="k">]</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="s2">"--color=always"</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>
|
|
<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="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>trunk() | tags()</code>. For example, to
|
|
prevent rewriting commits on <code>main@origin</code> and commits authored by other
|
|
users:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="c1"># The `main.. &` bit is an optimization to scan for non-`mine()` commits only</span>
|
|
<span class="c1"># among commits that are not in `main`.</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">"main@origin | (main@origin.. & ~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>
|
|
<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@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>
|
|
</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>
|
|
</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="s1">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'id.shortest(12)'</span>
|
|
<span class="c1"># Just the shortest possible unique prefix</span>
|
|
<span class="s1">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'id.shortest()'</span>
|
|
<span class="c1"># Show unique prefix and the rest surrounded by brackets</span>
|
|
<span class="s1">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'id.shortest(12).prefix() ++ "[" ++ id.shortest(12).rest() ++ "]"'</span>
|
|
<span class="c1"># Always show 12 characters</span>
|
|
<span class="s1">'format_short_id(id)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'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="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 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="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>
|
|
<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="s1">'format_timestamp(timestamp)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'timestamp'</span>
|
|
<span class="c1"># Relative timestamp rendered as "x days/hours/seconds ago"</span>
|
|
<span class="s1">'format_timestamp(timestamp)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'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="s1">'format_time_range(time_range)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'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="s1">'format_short_signature(signature)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'signature.email()'</span>
|
|
<span class="c1"># Both name and email address</span>
|
|
<span class="s1">'format_short_signature(signature)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'signature'</span>
|
|
<span class="c1"># Username part of the email address</span>
|
|
<span class="s1">'format_short_signature(signature)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'signature.username()'</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
|
|
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, except
|
|
on Windows where it is <code>:builtin</code>.</p>
|
|
<p>The special value <code>:builtin</code> enables usage of the
|
|
<a href="https://github.com/arijit79/minus/">integrated pager</a>. It is likely if you
|
|
are using a standard Linux distro, your system has <code>$PAGER</code> set already
|
|
and that will be preferred over the built-in. To use the built-in:</p>
|
|
<div class="highlight"><pre><span></span><code>jj config set --user ui.pager :builtin
|
|
</code></pre></div>
|
|
<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>
|
|
<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>
|
|
</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>
|
|
</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) 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="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>
|
|
<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="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>
|
|
</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">"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>
|
|
<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>
|
|
</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 the special value <code>:builtin</code>, which
|
|
launches a built-in TUI tool (known as <a href="https://github.com/arxanas/scm-record?tab=readme-ov-file#scm-diff-editor">scm-diff-editor</a>) to edit the diff in
|
|
your terminal.</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="s2">"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="s2">"kdiff3"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--merge"</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>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="s2">"--merge"</span><span class="p">,</span><span class="w"> </span><span class="s2">"--cs"</span><span class="p">,</span><span class="w"> </span><span class="s2">"CreateBakFiles=0"</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>
|
|
<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="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 <a href="https://github.com/martinvonz/jj/wiki/Vim#using-vim-as-a-diff-tool">instructions from the Wiki</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="s2">"meld"</span><span class="w"> </span><span class="c1"># Or "vscode" 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>
|
|
</code></pre></div>
|
|
<p>The "vscode", "meld", "kdiff3", and "vimdiff" tools can be used out of the box,
|
|
as long as they are installed.</p>
|
|
<p>Using VS Code as a merge tool works well with VS Code's <a href="https://code.visualstudio.com/docs/remote/remote-overview">Remote
|
|
Development</a>
|
|
functionality, as long as <code>jj</code> is called from VS Code's terminal.</p>
|
|
<h3 id="setting-up-a-custom-merge-tool">Setting up a custom merge tool<a class="headerlink" href="#setting-up-a-custom-merge-tool" title="Permanent link">¶</a></h3>
|
|
<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="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>
|
|
|
|
<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="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>
|
|
</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="commit-signing">Commit Signing<a class="headerlink" href="#commit-signing" title="Permanent link">¶</a></h2>
|
|
<p><code>jj</code> can be configured to sign and verify the commits it creates using either
|
|
GnuPG or SSH signing keys.</p>
|
|
<p>To do this you need to configure a signing backend.</p>
|
|
<h3 id="gnupg-signing">GnuPG Signing<a class="headerlink" href="#gnupg-signing" title="Permanent link">¶</a></h3>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[signing]</span>
|
|
<span class="n">sign-all</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
|
<span class="n">backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"gpg"</span>
|
|
<span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"4ED556E9729E000F"</span>
|
|
</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>
|
|
</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>
|
|
</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>
|
|
<span class="n">sign-all</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
|
|
<span class="n">backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"ssh"</span>
|
|
<span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGj+J6N6SO+4P8dOZqfR1oiay2yxhhHnagH52avUqw5h"</span>
|
|
</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>
|
|
</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>
|
|
</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>
|
|
<p>By default, if a single remote exists it is used for <code>jj git fetch</code> and <code>jj git
|
|
push</code>; however if multiple remotes exist, the default remote is assumed to be
|
|
named <code>"origin"</code>, just like in Git. Sometimes this is undesirable, e.g. when you
|
|
want to fetch from a different remote than you push to, such as a GitHub fork.</p>
|
|
<p>To change this behavior, you can modify the <a href="#config-files-and-toml">repository
|
|
configuration</a> variable <code>git.fetch</code>, which can be a
|
|
single remote, or a list of remotes to fetch from multiple places:</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>--repo<span class="w"> </span>git.fetch<span class="w"> </span><span class="s2">"upstream"</span>
|
|
jj<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>--repo<span class="w"> </span>git.fetch<span class="w"> </span><span class="s1">'["origin", "upstream"]'</span>
|
|
</code></pre></div>
|
|
<p>Similarly, you can also set the variable <code>git.push</code> to cause <code>jj git push</code> to
|
|
push to a different remote:</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>config<span class="w"> </span><span class="nb">set</span><span class="w"> </span>--repo<span class="w"> </span>git.push<span class="w"> </span><span class="s2">"github"</span>
|
|
</code></pre></div>
|
|
<p>Note that unlike <code>git.fetch</code>, <code>git.push</code> can currently only be a single remote.
|
|
This is not a hard limitation, and could be changed in the future if there is
|
|
demand.</p>
|
|
<h3 id="automatic-local-branch-creation">Automatic local branch creation<a class="headerlink" href="#automatic-local-branch-creation" title="Permanent link">¶</a></h3>
|
|
<p>When <code>jj</code> imports a new remote-tracking branch from Git, it can also create a
|
|
local branch with the same name. This feature is disabled by default because it
|
|
may be undesirable in some repositories, 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 enable this behavior by setting <code>git.auto-local-branch</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-branch</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 branches. Existing remote branches
|
|
can be tracked individually by using <code>jj branch track</code>/<code>untrack</code> commands.</p>
|
|
<div class="highlight"><pre><span></span><code><span class="c1"># import feature1 branch and start tracking it</span>
|
|
jj<span class="w"> </span>branch<span class="w"> </span>track<span class="w"> </span>feature1@origin
|
|
<span class="c1"># delete local gh-pages branch and stop tracking it</span>
|
|
jj<span class="w"> </span>branch<span class="w"> </span>delete<span class="w"> </span>gh-pages
|
|
jj<span class="w"> </span>branch<span class="w"> </span>untrack<span class="w"> </span>gh-pages@upstream
|
|
</code></pre></div>
|
|
<h3 id="abandon-commits-that-became-unreachable-in-git">Abandon commits that became unreachable in Git<a class="headerlink" href="#abandon-commits-that-became-unreachable-in-git" title="Permanent link">¶</a></h3>
|
|
<p>By default, when <code>jj</code> imports refs from Git, it will look for commits that used
|
|
to be <a href="https://git-scm.com/docs/gitglossary/#Documentation/gitglossary.txt-aiddefreachableareachable">reachable</a> but no longer are reachable. Those commits will
|
|
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>
|
|
</code></pre></div>
|
|
<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>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>
|
|
<h2 id="ways-to-specify-jj-config-details">Ways to specify <code>jj</code> config: details<a class="headerlink" href="#ways-to-specify-jj-config-details" title="Permanent link">¶</a></h2>
|
|
<h3 id="user-config-file">User config file<a class="headerlink" href="#user-config-file" title="Permanent link">¶</a></h3>
|
|
<p>An easy way to find the user config file is:</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>config<span class="w"> </span>path<span class="w"> </span>--user
|
|
</code></pre></div>
|
|
<p>The rest of this section covers the details of where this file can be located.</p>
|
|
<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>
|
|
<h3 id="specifying-config-on-the-command-line">Specifying config on the command-line<a class="headerlink" href="#specifying-config-on-the-command-line" title="Permanent link">¶</a></h3>
|
|
<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>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</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.c011b7c0.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.7389ff0e.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |