mirror of
https://github.com/martinvonz/jj.git
synced 2025-05-22 15:45:28 +00:00
2617 lines
68 KiB
HTML
2617 lines
68 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://jj-vcs.github.io/jj/latest/templates/">
|
|
|
|
|
|
<link rel="prev" href="../revsets/">
|
|
|
|
|
|
<link rel="next" href="../git-comparison/">
|
|
|
|
|
|
<link rel="icon" href="../images/favicon-96x96.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.4">
|
|
|
|
|
|
|
|
<title>Templating language - Jujutsu docs</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.8608ea7d.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="#templates" 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.54"/></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 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></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">
|
|
|
|
Templating language
|
|
|
|
</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 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></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 12z"/></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 12s-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 12z"/></svg>
|
|
</label>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var 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(var[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.52 6.52 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 5"/></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.52 6.52 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 5"/></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 11z"/></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 12z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" tabindex="0" 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.54"/></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 bird's 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">
|
|
<a href="../community_tools/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Community-built tools
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--nested">
|
|
|
|
|
|
|
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Concepts
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_7">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
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="../bookmarks/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Bookmarks
|
|
|
|
</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_8" checked>
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_8" id="__nav_8_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_8_label" aria-expanded="true">
|
|
<label class="md-nav__title" for="__nav_8">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Configuration
|
|
</label>
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../config/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Settings
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../filesets/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Fileset language
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</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 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">
|
|
Templating language
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Templating language
|
|
|
|
</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="#keywords" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Keywords
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Keywords">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commit-keywords" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Commit keywords
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operation-keywords" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Operation keywords
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operators" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Operators
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#global-functions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Global functions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#types" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Types
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Types">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#annotationline-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
AnnotationLine type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#boolean-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Boolean type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commit-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Commit type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commitid-changeid-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CommitId / ChangeId type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commitref-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CommitRef type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configvalue-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ConfigValue type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#cryptographicsignature-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CryptographicSignature type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#diffstats-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
DiffStats type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#email-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Email type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#integer-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Integer type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#list-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
List type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#listtemplate-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListTemplate type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operation-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Operation type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operationid-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
OperationId type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#option-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Option type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#repopath-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
RepoPath type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#shortestidprefix-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ShortestIdPrefix type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#signature-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Signature type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#sizehint-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SizeHint type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#string-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
String type
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="String type">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#string-literals" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
String literals
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#template-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Template type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#timestamp-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Timestamp type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#timestamprange-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TimestampRange type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#treediff-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TreeDiff type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#treediffentry-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TreeDiffEntry type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#treeentry-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TreeEntry type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Configuration
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</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">
|
|
Comparisons
|
|
|
|
</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>
|
|
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-command-table/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Git command table
|
|
|
|
</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 comparison
|
|
|
|
</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_10" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_10" id="__nav_10_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_10_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_10">
|
|
<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_11" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_11" id="__nav_11_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_11_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_11">
|
|
<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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design_docs/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Design docs
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design_doc_blueprint/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Design doc blueprint
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../releasing/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Releasing
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../governance/temporary-voting/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Temporary voting for governance
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../governance/GOVERNANCE/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Governance
|
|
|
|
</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_12" >
|
|
|
|
|
|
<label class="md-nav__link" for="__nav_12" id="__nav_12_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_12_label" aria-expanded="false">
|
|
<label class="md-nav__title" for="__nav_12">
|
|
<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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../design/copy-tracking/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Copy tracking and tracing
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../roadmap/" class="md-nav__link">
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Development roadmap
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</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="#keywords" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Keywords
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Keywords">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commit-keywords" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Commit keywords
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operation-keywords" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Operation keywords
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operators" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Operators
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#global-functions" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Global functions
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#types" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Types
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Types">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#annotationline-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
AnnotationLine type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#boolean-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Boolean type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commit-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Commit type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commitid-changeid-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CommitId / ChangeId type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#commitref-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CommitRef type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configvalue-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ConfigValue type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#cryptographicsignature-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
CryptographicSignature type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#diffstats-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
DiffStats type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#email-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Email type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#integer-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Integer type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#list-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
List type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#listtemplate-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ListTemplate type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operation-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Operation type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#operationid-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
OperationId type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#option-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Option type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#repopath-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
RepoPath type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#shortestidprefix-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
ShortestIdPrefix type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#signature-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Signature type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#sizehint-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
SizeHint type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#string-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
String type
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="String type">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#string-literals" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
String literals
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#template-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Template type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#timestamp-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Timestamp type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#timestamprange-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TimestampRange type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#treediff-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TreeDiff type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#treediffentry-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TreeDiffEntry type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#treeentry-type" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
TreeEntry type
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#configuration" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Configuration
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#examples" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Examples
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
<h1 id="templates">Templates<a class="headerlink" href="#templates" title="Permanent link">¶</a></h1>
|
|
<p>Jujutsu supports a functional language to customize output of commands.
|
|
The language consists of literals, keywords, operators, functions, and
|
|
methods.</p>
|
|
<p>A couple of <code>jj</code> commands accept a template via <code>-T</code>/<code>--template</code> option.</p>
|
|
<h2 id="keywords">Keywords<a class="headerlink" href="#keywords" title="Permanent link">¶</a></h2>
|
|
<p>Keywords represent objects of different types; the types are described in
|
|
a follow-up section. In addition to context-specific keywords, the top-level
|
|
object can be referenced as <code>self</code>.</p>
|
|
<h3 id="commit-keywords">Commit keywords<a class="headerlink" href="#commit-keywords" title="Permanent link">¶</a></h3>
|
|
<p>In <code>jj log</code>/<code>jj evolog</code> templates, all 0-argument methods of <a href="#commit-type">the <code>Commit</code>
|
|
type</a> are available as keywords. For example, <code>commit_id</code> is
|
|
equivalent to <code>self.commit_id()</code>.</p>
|
|
<h3 id="operation-keywords">Operation keywords<a class="headerlink" href="#operation-keywords" title="Permanent link">¶</a></h3>
|
|
<p>In <code>jj op log</code> templates, all 0-argument methods of <a href="#operation-type">the <code>Operation</code>
|
|
type</a> are available as keywords. For example,
|
|
<code>current_operation</code> is equivalent to <code>self.current_operation()</code>.</p>
|
|
<h2 id="operators">Operators<a class="headerlink" href="#operators" title="Permanent link">¶</a></h2>
|
|
<p>The following operators are supported.</p>
|
|
<ul>
|
|
<li><code>x.f()</code>: Method call.</li>
|
|
<li><code>-x</code>: Negate integer value.</li>
|
|
<li><code>!x</code>: Logical not.</li>
|
|
<li><code>x >= y</code>, <code>x > y</code>, <code>x <= y</code>, <code>x < y</code>: Greater than or equal/greater than/
|
|
lesser than or equal/lesser than. Operands must be <code>Integer</code>s.</li>
|
|
<li><code>x == y</code>, <code>x != y</code>: Equal/not equal. Operands must be either <code>Boolean</code>,
|
|
<code>Integer</code>, or <code>String</code>.</li>
|
|
<li><code>x && y</code>: Logical and, short-circuiting.</li>
|
|
<li><code>x || y</code>: Logical or, short-circuiting.</li>
|
|
<li><code>x ++ y</code>: Concatenate <code>x</code> and <code>y</code> templates.</li>
|
|
</ul>
|
|
<p>(listed in order of binding strengths)</p>
|
|
<h2 id="global-functions">Global functions<a class="headerlink" href="#global-functions" title="Permanent link">¶</a></h2>
|
|
<p>The following functions are defined.</p>
|
|
<ul>
|
|
<li><code>fill(width: Integer, content: Template) -> Template</code>: Fill lines at
|
|
the given <code>width</code>.</li>
|
|
<li><code>indent(prefix: Template, content: Template) -> Template</code>: Indent
|
|
non-empty lines by the given <code>prefix</code>.</li>
|
|
<li><code>pad_start(width: Integer, content: Template[, fill_char: Template])</code>: Pad (or
|
|
right-justify) content by adding leading fill characters. The <code>content</code>
|
|
shouldn't have newline character.</li>
|
|
<li><code>pad_end(width: Integer, content: Template[, fill_char: Template])</code>: Pad (or
|
|
left-justify) content by adding trailing fill characters. The <code>content</code>
|
|
shouldn't have newline character.</li>
|
|
<li><code>pad_centered(width: Integer, content: Template[, fill_char: Template])</code>: Pad
|
|
content by adding both leading and trailing fill characters. If an odd number
|
|
of fill characters are needed, the trailing fill will be one longer than the
|
|
leading fill. The <code>content</code> shouldn't have newline characters.</li>
|
|
<li><code>truncate_start(width: Integer, content: Template[, ellipsis: Template])</code>:
|
|
Truncate <code>content</code> by removing leading characters. The <code>content</code> shouldn't
|
|
have newline character. If <code>ellipsis</code> is provided and <code>content</code> was truncated,
|
|
prepend the <code>ellipsis</code> to the result.</li>
|
|
<li><code>truncate_end(width: Integer, content: Template[, ellipsis: Template])</code>:
|
|
Truncate <code>content</code> by removing trailing characters. The <code>content</code> shouldn't
|
|
have newline character. If <code>ellipsis</code> is provided and <code>content</code> was truncated,
|
|
append the <code>ellipsis</code> to the result.</li>
|
|
<li><code>label(label: Template, content: Template) -> Template</code>: Apply label to
|
|
the content. The <code>label</code> is evaluated as a space-separated string.</li>
|
|
<li><code>raw_escape_sequence(content: Template) -> Template</code>: Preserves any escape
|
|
sequences in <code>content</code> (i.e., bypasses sanitization) and strips labels.
|
|
Note: This function is intended for escape sequences and as such, its output
|
|
is expected to be invisible / of no display width. Outputting content with
|
|
nonzero display width may break wrapping, indentation etc.</li>
|
|
<li><code>stringify(content: Template) -> String</code>: Format <code>content</code> to string. This
|
|
effectively removes color labels.</li>
|
|
<li><code>if(condition: Boolean, then: Template[, else: Template]) -> Template</code>:
|
|
Conditionally evaluate <code>then</code>/<code>else</code> template content.</li>
|
|
<li><code>coalesce(content: Template...) -> Template</code>: Returns the first <strong>non-empty</strong>
|
|
content.</li>
|
|
<li><code>concat(content: Template...) -> Template</code>:
|
|
Same as <code>content_1 ++ ... ++ content_n</code>.</li>
|
|
<li><code>separate(separator: Template, content: Template...) -> Template</code>:
|
|
Insert separator between <strong>non-empty</strong> contents.</li>
|
|
<li><code>surround(prefix: Template, suffix: Template, content: Template) -> Template</code>:
|
|
Surround <strong>non-empty</strong> content with texts such as parentheses.</li>
|
|
<li><code>config(name: String) -> ConfigValue</code>: Look up configuration value by <code>name</code>.</li>
|
|
</ul>
|
|
<h2 id="types">Types<a class="headerlink" href="#types" title="Permanent link">¶</a></h2>
|
|
<h3 id="annotationline-type">AnnotationLine type<a class="headerlink" href="#annotationline-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.commit() -> Commit</code>: Commit responsible for changing the relevant line.</li>
|
|
<li><code>.content() -> Template</code>: Line content including newline character.</li>
|
|
<li><code>.line_number() -> Integer</code>: 1-based line number.</li>
|
|
<li><code>.first_line_in_hunk() -> Boolean</code>: False when the directly preceding line
|
|
references the same commit.</li>
|
|
</ul>
|
|
<h3 id="boolean-type">Boolean type<a class="headerlink" href="#boolean-type" title="Permanent link">¶</a></h3>
|
|
<p>No methods are defined. Can be constructed with <code>false</code> or <code>true</code> literal.</p>
|
|
<h3 id="commit-type">Commit type<a class="headerlink" href="#commit-type" title="Permanent link">¶</a></h3>
|
|
<p>This type cannot be printed. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.description() -> String</code></li>
|
|
<li><code>.change_id() -> ChangeId</code></li>
|
|
<li><code>.commit_id() -> CommitId</code></li>
|
|
<li><code>.parents() -> List<Commit></code></li>
|
|
<li><code>.author() -> Signature</code></li>
|
|
<li><code>.committer() -> Signature</code></li>
|
|
<li><code>.signature() -> Option<CryptographicSignature></code></li>
|
|
<li><code>.mine() -> Boolean</code>: Commits where the author's email matches the email of
|
|
the current user.</li>
|
|
<li><code>.working_copies() -> String</code>: For multi-workspace repository, indicate
|
|
working-copy commit as <code><workspace name>@</code>.</li>
|
|
<li><code>.current_working_copy() -> Boolean</code>: True for the working-copy commit of the
|
|
current workspace.</li>
|
|
<li><code>.bookmarks() -> List<CommitRef></code>: Local and remote bookmarks pointing to the
|
|
commit. A tracking remote bookmark will be included only if its target is
|
|
different from the local one.</li>
|
|
<li><code>.local_bookmarks() -> List<CommitRef></code>: All local bookmarks pointing to the
|
|
commit.</li>
|
|
<li><code>.remote_bookmarks() -> List<CommitRef></code>: All remote bookmarks pointing to the
|
|
commit.</li>
|
|
<li><code>.tags() -> List<CommitRef></code></li>
|
|
<li><code>.git_refs() -> List<CommitRef></code></li>
|
|
<li><code>.git_head() -> Boolean</code>: True for the Git <code>HEAD</code> commit.</li>
|
|
<li><code>.divergent() -> Boolean</code>: True if the commit's change id corresponds to multiple
|
|
visible commits.</li>
|
|
<li><code>.hidden() -> Boolean</code>: True if the commit is not visible (a.k.a. abandoned).</li>
|
|
<li><code>.immutable() -> Boolean</code>: True if the commit is included in <a href="../config/#set-of-immutable-commits">the set of
|
|
immutable commits</a>.</li>
|
|
<li><code>.contained_in(revset: String) -> Boolean</code>: True if the commit is included in <a href="../revsets/">the provided revset</a>.</li>
|
|
<li><code>.conflict() -> Boolean</code>: True if the commit contains merge conflicts.</li>
|
|
<li><code>.empty() -> Boolean</code>: True if the commit modifies no files.</li>
|
|
<li><code>.diff([files: String]) -> TreeDiff</code>: Changes from the parents within <a href="../filesets/">the
|
|
<code>files</code> expression</a>. All files are compared by default, but it is
|
|
likely to change in future version to respect the command line path arguments.</li>
|
|
<li><code>.root() -> Boolean</code>: True if the commit is the root commit.</li>
|
|
</ul>
|
|
<h3 id="commitid-changeid-type">CommitId / ChangeId type<a class="headerlink" href="#commitid-changeid-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.normal_hex() -> String</code>: Normal hex representation (0-9a-f), useful for
|
|
ChangeId, whose canonical hex representation is "reversed" (z-k).</li>
|
|
<li><code>.short([len: Integer]) -> String</code></li>
|
|
<li><code>.shortest([min_len: Integer]) -> ShortestIdPrefix</code>: Shortest unique prefix.</li>
|
|
</ul>
|
|
<h3 id="commitref-type">CommitRef type<a class="headerlink" href="#commitref-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.name() -> String</code>: Local bookmark or tag name.</li>
|
|
<li><code>.remote() -> String</code>: Remote name or empty if this is a local ref.</li>
|
|
<li><code>.present() -> Boolean</code>: True if the ref points to any commit.</li>
|
|
<li><code>.conflict() -> Boolean</code>: True if <a href="../bookmarks/#conflicts">the bookmark or tag is
|
|
conflicted</a>.</li>
|
|
<li><code>.normal_target() -> Option<Commit></code>: Target commit if the ref is not
|
|
conflicted and points to a commit.</li>
|
|
<li><code>.removed_targets() -> List<Commit></code>: Old target commits if conflicted.</li>
|
|
<li><code>.added_targets() -> List<Commit></code>: New target commits. The list usually
|
|
contains one "normal" target.</li>
|
|
<li><code>.tracked() -> Boolean</code>: True if the ref is tracked by a local ref. The local
|
|
ref might have been deleted (but not pushed yet.)</li>
|
|
<li><code>.tracking_present() -> Boolean</code>: True if the ref is tracked by a local ref,
|
|
and if the local ref points to any commit.</li>
|
|
<li><code>.tracking_ahead_count() -> SizeHint</code>: Number of commits ahead of the tracking
|
|
local ref.</li>
|
|
<li><code>.tracking_behind_count() -> SizeHint</code>: Number of commits behind of the
|
|
tracking local ref.</li>
|
|
</ul>
|
|
<h3 id="configvalue-type">ConfigValue type<a class="headerlink" href="#configvalue-type" title="Permanent link">¶</a></h3>
|
|
<p>This type can be printed in TOML syntax. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.as_boolean() -> Boolean</code>: Extract boolean.</li>
|
|
<li><code>.as_integer() -> Integer</code>: Extract integer.</li>
|
|
<li><code>.as_string() -> String</code>: Extract string. This does not convert non-string
|
|
value (e.g. integer) to string.</li>
|
|
<li><code>.as_string_list() -> List<String></code>: Extract list of strings.</li>
|
|
</ul>
|
|
<h3 id="cryptographicsignature-type">CryptographicSignature type<a class="headerlink" href="#cryptographicsignature-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.status() -> String</code>: The signature's status (<code>"good"</code>, <code>"bad"</code>, <code>"unknown"</code>, <code>"invalid"</code>).</li>
|
|
<li><code>.key() -> String</code>: The signature's key id representation (for GPG, this is the key fingerprint).</li>
|
|
<li><code>.display() -> String</code>: The signature's display string (for GPG this is the formatted primary user ID).</li>
|
|
</ul>
|
|
<div class="admonition warning">
|
|
<p class="admonition-title">Warning</p>
|
|
<p>Calling any of <code>.status()</code>, <code>.key()</code>, or <code>.display()</code> is slow, as it incurs
|
|
the performance cost of verifying the signature (for example shelling out
|
|
to <code>gpg</code> or <code>ssh-keygen</code>). Though consecutive calls will be faster, because
|
|
the backend caches the verification result.</p>
|
|
</div>
|
|
<div class="admonition info">
|
|
<p class="admonition-title">Info</p>
|
|
<p>As opposed to calling any of <code>.status()</code>, <code>.key()</code>, or <code>.display()</code>,
|
|
checking for signature presence through boolean coercion is fast:
|
|
<div class="highlight"><pre><span></span><code>if(commit.signature(), "commit has a signature", "commit is unsigned")
|
|
</code></pre></div></p>
|
|
</div>
|
|
<h3 id="diffstats-type">DiffStats type<a class="headerlink" href="#diffstats-type" title="Permanent link">¶</a></h3>
|
|
<p>This type can be printed as a histogram of the changes. The following methods
|
|
are defined.</p>
|
|
<ul>
|
|
<li><code>.total_added() -> Integer</code>: Total number of insertions.</li>
|
|
<li><code>.total_removed() -> Integer</code>: Total number of deletions.</li>
|
|
</ul>
|
|
<h3 id="email-type">Email type<a class="headerlink" href="#email-type" title="Permanent link">¶</a></h3>
|
|
<p>The email field of a signature may or may not look like an email address. It may
|
|
be empty, may not contain the symbol <code>@</code>, and could in principle contain
|
|
multiple <code>@</code>s.</p>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.local() -> String</code>: the part of the email before the first <code>@</code>, usually the
|
|
username.</li>
|
|
<li><code>.domain() -> String</code>: the part of the email after the first <code>@</code> or the empty
|
|
string.</li>
|
|
</ul>
|
|
<h3 id="integer-type">Integer type<a class="headerlink" href="#integer-type" title="Permanent link">¶</a></h3>
|
|
<p>No methods are defined.</p>
|
|
<h3 id="list-type">List type<a class="headerlink" href="#list-type" title="Permanent link">¶</a></h3>
|
|
<p>A list can be implicitly converted to <code>Boolean</code>. The following methods are
|
|
defined.</p>
|
|
<ul>
|
|
<li><code>.len() -> Integer</code>: Number of elements in the list.</li>
|
|
<li><code>.join(separator: Template) -> Template</code>: Concatenate elements with
|
|
the given <code>separator</code>.</li>
|
|
<li><code>.filter(|item| expression) -> List</code>: Filter list elements by predicate
|
|
<code>expression</code>. Example: <code>description.lines().filter(|s| s.contains("#"))</code></li>
|
|
<li><code>.map(|item| expression) -> ListTemplate</code>: Apply template <code>expression</code>
|
|
to each element. Example: <code>parents.map(|c| c.commit_id().short())</code></li>
|
|
</ul>
|
|
<h3 id="listtemplate-type">ListTemplate type<a class="headerlink" href="#listtemplate-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined. See also the <code>List</code> type.</p>
|
|
<ul>
|
|
<li><code>.join(separator: Template) -> Template</code></li>
|
|
</ul>
|
|
<h3 id="operation-type">Operation type<a class="headerlink" href="#operation-type" title="Permanent link">¶</a></h3>
|
|
<p>This type cannot be printed. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.current_operation() -> Boolean</code></li>
|
|
<li><code>.description() -> String</code></li>
|
|
<li><code>.id() -> OperationId</code></li>
|
|
<li><code>.tags() -> String</code></li>
|
|
<li><code>.time() -> TimestampRange</code></li>
|
|
<li><code>.user() -> String</code></li>
|
|
<li><code>.snapshot() -> Boolean</code>: True if the operation is a snapshot operation.</li>
|
|
<li><code>.root() -> Boolean</code>: True if the operation is the root operation.</li>
|
|
</ul>
|
|
<h3 id="operationid-type">OperationId type<a class="headerlink" href="#operationid-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.short([len: Integer]) -> String</code></li>
|
|
</ul>
|
|
<h3 id="option-type">Option type<a class="headerlink" href="#option-type" title="Permanent link">¶</a></h3>
|
|
<p>An option can be implicitly converted to <code>Boolean</code> denoting whether the
|
|
contained value is set. If set, all methods of the contained value can be
|
|
invoked. If not set, an error will be reported inline on method call.</p>
|
|
<h3 id="repopath-type">RepoPath type<a class="headerlink" href="#repopath-type" title="Permanent link">¶</a></h3>
|
|
<p>A slash-separated path relative to the repository root. The following methods
|
|
are defined.</p>
|
|
<ul>
|
|
<li><code>.display() -> String</code>: Format path for display. The formatted path uses
|
|
platform-native separator, and is relative to the current working directory.</li>
|
|
<li><code>.parent() -> Option<RepoPath></code>: Parent directory path.</li>
|
|
</ul>
|
|
<h3 id="shortestidprefix-type">ShortestIdPrefix type<a class="headerlink" href="#shortestidprefix-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.prefix() -> String</code></li>
|
|
<li><code>.rest() -> String</code></li>
|
|
<li><code>.upper() -> ShortestIdPrefix</code></li>
|
|
<li><code>.lower() -> ShortestIdPrefix</code></li>
|
|
</ul>
|
|
<h3 id="signature-type">Signature type<a class="headerlink" href="#signature-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.name() -> String</code></li>
|
|
<li><code>.email() -> Email</code></li>
|
|
<li><code>.timestamp() -> Timestamp</code></li>
|
|
</ul>
|
|
<h3 id="sizehint-type">SizeHint type<a class="headerlink" href="#sizehint-type" title="Permanent link">¶</a></h3>
|
|
<p>This type cannot be printed. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.lower() -> Integer</code>: Lower bound.</li>
|
|
<li><code>.upper() -> Option<Integer></code>: Upper bound if known.</li>
|
|
<li><code>.exact() -> Option<Integer></code>: Exact value if upper bound is known and it
|
|
equals to the lower bound.</li>
|
|
<li><code>.zero() -> Boolean</code>: True if upper bound is known and is <code>0</code>.</li>
|
|
</ul>
|
|
<h3 id="string-type">String type<a class="headerlink" href="#string-type" title="Permanent link">¶</a></h3>
|
|
<p>A string can be implicitly converted to <code>Boolean</code>. The following methods are
|
|
defined.</p>
|
|
<ul>
|
|
<li><code>.len() -> Integer</code>: Length in UTF-8 bytes.</li>
|
|
<li><code>.contains(needle: Template) -> Boolean</code></li>
|
|
<li><code>.first_line() -> String</code></li>
|
|
<li><code>.lines() -> List<String></code>: Split into lines excluding newline characters.</li>
|
|
<li><code>.upper() -> String</code></li>
|
|
<li><code>.lower() -> String</code></li>
|
|
<li><code>.starts_with(needle: Template) -> Boolean</code></li>
|
|
<li><code>.ends_with(needle: Template) -> Boolean</code></li>
|
|
<li><code>.remove_prefix(needle: Template) -> String</code>: Removes the passed prefix, if present</li>
|
|
<li><code>.remove_suffix(needle: Template) -> String</code>: Removes the passed suffix, if present</li>
|
|
<li><code>.trim() -> String</code>: Removes leading and trailing whitespace</li>
|
|
<li><code>.trim_start() -> String</code>: Removes leading whitespace</li>
|
|
<li><code>.trim_end() -> String</code>: Removes trailing whitespace</li>
|
|
<li><code>.substr(start: Integer, end: Integer) -> String</code>: Extract substring. The
|
|
<code>start</code>/<code>end</code> indices should be specified in UTF-8 bytes. Negative values
|
|
count from the end of the string.</li>
|
|
<li><code>.escape_json() -> String</code>: Serializes the string in JSON format. This
|
|
function is useful for making machine-readable templates. For example, you
|
|
can use it in a template like <code>'{ "foo": ' ++ foo.escape_json() ++ ' }'</code> to
|
|
return a JSON/JSONL.</li>
|
|
</ul>
|
|
<h4 id="string-literals">String literals<a class="headerlink" href="#string-literals" title="Permanent link">¶</a></h4>
|
|
<p>String literals must be surrounded by single or double quotes (<code>'</code> or <code>"</code>).
|
|
A double-quoted string literal supports the following escape sequences:</p>
|
|
<ul>
|
|
<li><code>\"</code>: double quote</li>
|
|
<li><code>\\</code>: backslash</li>
|
|
<li><code>\t</code>: horizontal tab</li>
|
|
<li><code>\r</code>: carriage return</li>
|
|
<li><code>\n</code>: new line</li>
|
|
<li><code>\0</code>: null</li>
|
|
<li><code>\e</code>: escape (i.e., <code>\x1b</code>)</li>
|
|
<li><code>\xHH</code>: byte with hex value <code>HH</code></li>
|
|
</ul>
|
|
<p>Other escape sequences are not supported. Any UTF-8 characters are allowed
|
|
inside a string literal, with two exceptions: unescaped <code>"</code>-s and uses of <code>\</code>
|
|
that don't form a valid escape sequence.</p>
|
|
<p>A single-quoted string literal has no escape syntax. <code>'</code> can't be expressed
|
|
inside a single-quoted string literal.</p>
|
|
<h3 id="template-type">Template type<a class="headerlink" href="#template-type" title="Permanent link">¶</a></h3>
|
|
<p>Most types can be implicitly converted to <code>Template</code>. No methods are defined.</p>
|
|
<h3 id="timestamp-type">Timestamp type<a class="headerlink" href="#timestamp-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.ago() -> String</code>: Format as relative timestamp.</li>
|
|
<li><code>.format(format: String) -> String</code>: Format with <a href="https://docs.rs/chrono/latest/chrono/format/strftime/">the specified strftime-like
|
|
format string</a>.</li>
|
|
<li><code>.utc() -> Timestamp</code>: Convert timestamp into UTC timezone.</li>
|
|
<li><code>.local() -> Timestamp</code>: Convert timestamp into local timezone.</li>
|
|
<li><code>.after(date: String) -> Boolean</code>: True if the timestamp is exactly at or after the given date.</li>
|
|
<li><code>.before(date: String) -> Boolean</code>: True if the timestamp is before, but not including, the given date.</li>
|
|
</ul>
|
|
<h3 id="timestamprange-type">TimestampRange type<a class="headerlink" href="#timestamprange-type" title="Permanent link">¶</a></h3>
|
|
<p>The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.start() -> Timestamp</code></li>
|
|
<li><code>.end() -> Timestamp</code></li>
|
|
<li><code>.duration() -> String</code></li>
|
|
</ul>
|
|
<h3 id="treediff-type">TreeDiff type<a class="headerlink" href="#treediff-type" title="Permanent link">¶</a></h3>
|
|
<p>This type cannot be printed. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.files() -> List<TreeDiffEntry></code>: Changed files.</li>
|
|
<li><code>.color_words([context: Integer]) -> Template</code>: Format as a word-level diff
|
|
with changes indicated only by color.</li>
|
|
<li><code>.git([context: Integer]) -> Template</code>: Format as a Git diff.</li>
|
|
<li><code>.stat([width: Integer]) -> DiffStats</code>: Calculate stats of changed lines.</li>
|
|
<li><code>.summary() -> Template</code>: Format as a list of status code and path pairs.</li>
|
|
</ul>
|
|
<h3 id="treediffentry-type">TreeDiffEntry type<a class="headerlink" href="#treediffentry-type" title="Permanent link">¶</a></h3>
|
|
<p>This type cannot be printed. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.path() -> RepoPath</code>: Path to the entry. If the entry is a copy/rename, this
|
|
points to the target (or right) entry.</li>
|
|
<li><code>.status() -> String</code>: One of <code>"modified"</code>, <code>"added"</code>, <code>"removed"</code>,
|
|
<code>"copied"</code>, or <code>"renamed"</code>.</li>
|
|
<li><code>.source() -> TreeEntry</code>: The source (or left) entry.</li>
|
|
<li><code>.target() -> TreeEntry</code>: The target (or right) entry.</li>
|
|
</ul>
|
|
<h3 id="treeentry-type">TreeEntry type<a class="headerlink" href="#treeentry-type" title="Permanent link">¶</a></h3>
|
|
<p>This type cannot be printed. The following methods are defined.</p>
|
|
<ul>
|
|
<li><code>.path() -> RepoPath</code>: Path to the entry.</li>
|
|
<li><code>.conflict() -> Boolean</code>: True if the entry is a merge conflict.</li>
|
|
<li><code>.file_type() -> String</code>: One of <code>"file"</code>, <code>"symlink"</code>, <code>"tree"</code>,
|
|
<code>"git-submodule"</code>, or <code>"conflict"</code>.</li>
|
|
<li><code>.executable() -> Boolean</code>: True if the entry is an executable file.</li>
|
|
</ul>
|
|
<h2 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">¶</a></h2>
|
|
<p>The default templates and aliases() are defined in the <code>[templates]</code> and
|
|
<code>[template-aliases]</code> sections of the config respectively. The exact definitions
|
|
can be seen in the <a href="https://github.com/jj-vcs/jj/blob/main/cli/src/config/templates.toml"><code>cli/src/config/templates.toml</code></a> file in jj's source
|
|
tree.</p>
|
|
<!--- TODO: Find a way to embed the default config files in the docs -->
|
|
|
|
<p>New keywords and functions can be defined as aliases, by using any
|
|
combination of the predefined keywords/functions and other aliases.</p>
|
|
<p>Alias functions can be overloaded by the number of parameters. However, builtin
|
|
functions will be shadowed by name, and can't co-exist with aliases.</p>
|
|
<p>For example:</p>
|
|
<div class="highlight"><pre><span></span><code><span class="k">[template-aliases]</span>
|
|
<span class="s1">'commit_change_ids'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'''</span>
|
|
<span class="s1">concat(</span>
|
|
<span class="s1"> format_field("Commit ID", commit_id),</span>
|
|
<span class="s1"> format_field("Change ID", change_id),</span>
|
|
<span class="s1">)</span>
|
|
<span class="s1">'''</span>
|
|
<span class="s1">'format_field(key, value)'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'key ++ ": " ++ value ++ "\n"'</span>
|
|
</code></pre></div>
|
|
<h2 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link">¶</a></h2>
|
|
<p>Get short commit IDs of the working-copy parents:</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>log<span class="w"> </span>--no-graph<span class="w"> </span>-r<span class="w"> </span>@<span class="w"> </span>-T<span class="w"> </span><span class="s1">'parents.map(|c| c.commit_id().short()).join(",")'</span>
|
|
</code></pre></div>
|
|
<p>Show machine-readable list of full commit and change IDs:</p>
|
|
<div class="highlight"><pre><span></span><code>jj<span class="w"> </span>log<span class="w"> </span>--no-graph<span class="w"> </span>-T<span class="w"> </span><span class="s1">'commit_id ++ " " ++ change_id ++ "\n"'</span>
|
|
</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.f8cc74c7.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": {"alias": true, "provider": "mike"}}</script>
|
|
|
|
|
|
<script src="../assets/javascripts/bundle.f1b6f286.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |