FossilRepo

fossilrepo / site / index.html
Source Blame History 1008 lines
2eca4eb… ragelink 1
2eca4eb… ragelink 2 <!doctype html>
2eca4eb… ragelink 3 <html lang="en" class="no-js">
2eca4eb… ragelink 4 <head>
2eca4eb… ragelink 5
2eca4eb… ragelink 6 <meta charset="utf-8">
2eca4eb… ragelink 7 <meta name="viewport" content="width=device-width,initial-scale=1">
2eca4eb… ragelink 8
2eca4eb… ragelink 9 <meta name="description" content="Self-hosted Fossil forge -- omnibus installer for production Fossil SCM hosting">
2eca4eb… ragelink 10
2eca4eb… ragelink 11
2eca4eb… ragelink 12 <meta name="author" content="CONFLICT LLC">
2eca4eb… ragelink 13
2eca4eb… ragelink 14
2eca4eb… ragelink 15 <link rel="canonical" href="https://fossilrepo.dev/">
2eca4eb… ragelink 16
2eca4eb… ragelink 17
2eca4eb… ragelink 18
2eca4eb… ragelink 19 <link rel="next" href="getting-started/prerequisites/">
2eca4eb… ragelink 20
2eca4eb… ragelink 21
2eca4eb… ragelink 22
2eca4eb… ragelink 23
2eca4eb… ragelink 24
2eca4eb… ragelink 25 <link rel="icon" href="assets/images/favicon.png">
2eca4eb… ragelink 26 <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
2eca4eb… ragelink 27
2eca4eb… ragelink 28
2eca4eb… ragelink 29
2eca4eb… ragelink 30 <title>Fossilrepo</title>
2eca4eb… ragelink 31
2eca4eb… ragelink 32
2eca4eb… ragelink 33
2eca4eb… ragelink 34 <link rel="stylesheet" href="assets/stylesheets/main.484c7ddc.min.css">
2eca4eb… ragelink 35
2eca4eb… ragelink 36
2eca4eb… ragelink 37 <link rel="stylesheet" href="assets/stylesheets/palette.ab4e12ef.min.css">
2eca4eb… ragelink 38
2eca4eb… ragelink 39
2eca4eb… ragelink 40
2eca4eb… ragelink 41
2eca4eb… ragelink 42
2eca4eb… ragelink 43
2eca4eb… ragelink 44
2eca4eb… ragelink 45
2eca4eb… ragelink 46
2eca4eb… ragelink 47
2eca4eb… ragelink 48
2eca4eb… ragelink 49
2eca4eb… ragelink 50 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
2eca4eb… ragelink 51 <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">
2eca4eb… ragelink 52 <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
2eca4eb… ragelink 53
2eca4eb… ragelink 54
2eca4eb… ragelink 55
2eca4eb… ragelink 56 <link rel="stylesheet" href="assets/css/custom.css">
2eca4eb… ragelink 57
2eca4eb… ragelink 58 <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>
2eca4eb… ragelink 59
2eca4eb… ragelink 60
2eca4eb… ragelink 61
2eca4eb… ragelink 62
2eca4eb… ragelink 63
2eca4eb… ragelink 64 </head>
2eca4eb… ragelink 65
2eca4eb… ragelink 66
2eca4eb… ragelink 67
2eca4eb… ragelink 68
2eca4eb… ragelink 69
2eca4eb… ragelink 70
2eca4eb… ragelink 71
2eca4eb… ragelink 72
2eca4eb… ragelink 73
2eca4eb… ragelink 74 <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
2eca4eb… ragelink 75
2eca4eb… ragelink 76
2eca4eb… ragelink 77 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
2eca4eb… ragelink 78 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
2eca4eb… ragelink 79 <label class="md-overlay" for="__drawer"></label>
2eca4eb… ragelink 80 <div data-md-component="skip">
2eca4eb… ragelink 81
2eca4eb… ragelink 82
2eca4eb… ragelink 83 <a href="#fossilrepo" class="md-skip">
2eca4eb… ragelink 84 Skip to content
2eca4eb… ragelink 85 </a>
2eca4eb… ragelink 86
2eca4eb… ragelink 87 </div>
2eca4eb… ragelink 88 <div data-md-component="announce">
2eca4eb… ragelink 89
2eca4eb… ragelink 90 </div>
2eca4eb… ragelink 91
2eca4eb… ragelink 92
2eca4eb… ragelink 93
2eca4eb… ragelink 94
2eca4eb… ragelink 95 <header class="md-header" data-md-component="header">
2eca4eb… ragelink 96 <nav class="md-header__inner md-grid" aria-label="Header">
2eca4eb… ragelink 97 <a href="." title="Fossilrepo" class="md-header__button md-logo" aria-label="Fossilrepo" data-md-component="logo">
2eca4eb… ragelink 98 <div style="display: flex; align-items: center; gap: 0.6rem;">
2eca4eb… ragelink 99 <img src="assets/images/conflict-logo.svg" alt="CONFLICT" style="height: 1.4rem; width: auto;">
2eca4eb… ragelink 100 <img src="assets/images/fossilrepo-logo.svg" alt="Fossilrepo" style="height: 1.2rem; width: auto;">
2eca4eb… ragelink 101 </div>
2eca4eb… ragelink 102 </a>
2eca4eb… ragelink 103 <label class="md-header__button md-icon" for="__drawer">
2eca4eb… ragelink 104
2eca4eb… ragelink 105 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
2eca4eb… ragelink 106 </label>
2eca4eb… ragelink 107 <div class="md-header__title" data-md-component="header-title">
2eca4eb… ragelink 108 <div class="md-header__ellipsis">
2eca4eb… ragelink 109 <div class="md-header__topic">
2eca4eb… ragelink 110 <span class="md-ellipsis">
2eca4eb… ragelink 111 Fossilrepo
2eca4eb… ragelink 112 </span>
2eca4eb… ragelink 113 </div>
2eca4eb… ragelink 114 <div class="md-header__topic" data-md-component="header-topic">
2eca4eb… ragelink 115 <span class="md-ellipsis">
2eca4eb… ragelink 116
2eca4eb… ragelink 117 Home
2eca4eb… ragelink 118
2eca4eb… ragelink 119 </span>
2eca4eb… ragelink 120 </div>
2eca4eb… ragelink 121 </div>
2eca4eb… ragelink 122 </div>
2eca4eb… ragelink 123
2eca4eb… ragelink 124
2eca4eb… ragelink 125 <form class="md-header__option" data-md-component="palette">
2eca4eb… ragelink 126
2eca4eb… ragelink 127
2eca4eb… ragelink 128
2eca4eb… ragelink 129
2eca4eb… ragelink 130 <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
2eca4eb… ragelink 131
2eca4eb… ragelink 132 <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
2eca4eb… ragelink 133 <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>
2eca4eb… ragelink 134 </label>
2eca4eb… ragelink 135
2eca4eb… ragelink 136
2eca4eb… ragelink 137
2eca4eb… ragelink 138
2eca4eb… ragelink 139
2eca4eb… ragelink 140 <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
2eca4eb… ragelink 141
2eca4eb… ragelink 142 <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
2eca4eb… ragelink 143 <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>
2eca4eb… ragelink 144 </label>
2eca4eb… ragelink 145
2eca4eb… ragelink 146
2eca4eb… ragelink 147 </form>
2eca4eb… ragelink 148
2eca4eb… ragelink 149
2eca4eb… ragelink 150
2eca4eb… ragelink 151 <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>
2eca4eb… ragelink 152
2eca4eb… ragelink 153
2eca4eb… ragelink 154
2eca4eb… ragelink 155
2eca4eb… ragelink 156
2eca4eb… ragelink 157 <label class="md-header__button md-icon" for="__search">
2eca4eb… ragelink 158
2eca4eb… ragelink 159 <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>
2eca4eb… ragelink 160 </label>
2eca4eb… ragelink 161 <div class="md-search" data-md-component="search" role="dialog">
2eca4eb… ragelink 162 <label class="md-search__overlay" for="__search"></label>
2eca4eb… ragelink 163 <div class="md-search__inner" role="search">
2eca4eb… ragelink 164 <form class="md-search__form" name="search">
2eca4eb… ragelink 165 <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>
2eca4eb… ragelink 166 <label class="md-search__icon md-icon" for="__search">
2eca4eb… ragelink 167
2eca4eb… ragelink 168 <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>
2eca4eb… ragelink 169
2eca4eb… ragelink 170 <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>
2eca4eb… ragelink 171 </label>
2eca4eb… ragelink 172 <nav class="md-search__options" aria-label="Search">
2eca4eb… ragelink 173
2eca4eb… ragelink 174 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
2eca4eb… ragelink 175
2eca4eb… ragelink 176 <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>
2eca4eb… ragelink 177 </button>
2eca4eb… ragelink 178 </nav>
2eca4eb… ragelink 179
2eca4eb… ragelink 180 <div class="md-search__suggest" data-md-component="search-suggest"></div>
2eca4eb… ragelink 181
2eca4eb… ragelink 182 </form>
2eca4eb… ragelink 183 <div class="md-search__output">
2eca4eb… ragelink 184 <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
2eca4eb… ragelink 185 <div class="md-search-result" data-md-component="search-result">
2eca4eb… ragelink 186 <div class="md-search-result__meta">
2eca4eb… ragelink 187 Initializing search
2eca4eb… ragelink 188 </div>
2eca4eb… ragelink 189 <ol class="md-search-result__list" role="presentation"></ol>
2eca4eb… ragelink 190 </div>
2eca4eb… ragelink 191 </div>
2eca4eb… ragelink 192 </div>
2eca4eb… ragelink 193 </div>
2eca4eb… ragelink 194 </div>
2eca4eb… ragelink 195
2eca4eb… ragelink 196
2eca4eb… ragelink 197
2eca4eb… ragelink 198 <div class="md-header__source">
2eca4eb… ragelink 199 <a href="https://github.com/ConflictHQ/fossilrepo" title="Go to repository" class="md-source" data-md-component="source">
2eca4eb… ragelink 200 <div class="md-source__icon md-icon">
2eca4eb… ragelink 201
2eca4eb… ragelink 202 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2eca4eb… ragelink 203 </div>
2eca4eb… ragelink 204 <div class="md-source__repository">
2eca4eb… ragelink 205 ConflictHQ/fossilrepo
2eca4eb… ragelink 206 </div>
2eca4eb… ragelink 207 </a>
2eca4eb… ragelink 208 </div>
2eca4eb… ragelink 209
2eca4eb… ragelink 210 </nav>
2eca4eb… ragelink 211
2eca4eb… ragelink 212 </header>
2eca4eb… ragelink 213
2eca4eb… ragelink 214 <div class="md-container" data-md-component="container">
2eca4eb… ragelink 215
2eca4eb… ragelink 216
2eca4eb… ragelink 217
2eca4eb… ragelink 218
2eca4eb… ragelink 219
2eca4eb… ragelink 220 <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
2eca4eb… ragelink 221 <div class="md-grid">
2eca4eb… ragelink 222 <ul class="md-tabs__list">
2eca4eb… ragelink 223
2eca4eb… ragelink 224
2eca4eb… ragelink 225
2eca4eb… ragelink 226
2eca4eb… ragelink 227
2eca4eb… ragelink 228
2eca4eb… ragelink 229
2eca4eb… ragelink 230
2eca4eb… ragelink 231 <li class="md-tabs__item md-tabs__item--active">
2eca4eb… ragelink 232 <a href="." class="md-tabs__link">
2eca4eb… ragelink 233
2eca4eb… ragelink 234
2eca4eb… ragelink 235
2eca4eb… ragelink 236
2eca4eb… ragelink 237
2eca4eb… ragelink 238 Home
2eca4eb… ragelink 239
2eca4eb… ragelink 240 </a>
2eca4eb… ragelink 241 </li>
2eca4eb… ragelink 242
2eca4eb… ragelink 243
2eca4eb… ragelink 244
2eca4eb… ragelink 245
2eca4eb… ragelink 246
2eca4eb… ragelink 247
2eca4eb… ragelink 248
2eca4eb… ragelink 249
2eca4eb… ragelink 250
2eca4eb… ragelink 251
2eca4eb… ragelink 252 <li class="md-tabs__item">
2eca4eb… ragelink 253 <a href="getting-started/prerequisites/" class="md-tabs__link">
2eca4eb… ragelink 254
2eca4eb… ragelink 255
2eca4eb… ragelink 256
2eca4eb… ragelink 257 Getting Started
2eca4eb… ragelink 258
2eca4eb… ragelink 259 </a>
2eca4eb… ragelink 260 </li>
2eca4eb… ragelink 261
2eca4eb… ragelink 262
2eca4eb… ragelink 263
2eca4eb… ragelink 264
2eca4eb… ragelink 265
2eca4eb… ragelink 266
2eca4eb… ragelink 267
2eca4eb… ragelink 268
2eca4eb… ragelink 269
2eca4eb… ragelink 270
2eca4eb… ragelink 271
2eca4eb… ragelink 272 <li class="md-tabs__item">
2eca4eb… ragelink 273 <a href="architecture/overview/" class="md-tabs__link">
2eca4eb… ragelink 274
2eca4eb… ragelink 275
2eca4eb… ragelink 276
2eca4eb… ragelink 277 Architecture
2eca4eb… ragelink 278
2eca4eb… ragelink 279 </a>
2eca4eb… ragelink 280 </li>
2eca4eb… ragelink 281
2eca4eb… ragelink 282
2eca4eb… ragelink 283
2eca4eb… ragelink 284
2eca4eb… ragelink 285 </ul>
2eca4eb… ragelink 286 </div>
2eca4eb… ragelink 287 </nav>
2eca4eb… ragelink 288
2eca4eb… ragelink 289
2eca4eb… ragelink 290
2eca4eb… ragelink 291 <main class="md-main" data-md-component="main">
2eca4eb… ragelink 292 <div class="md-main__inner md-grid">
2eca4eb… ragelink 293
2eca4eb… ragelink 294
2eca4eb… ragelink 295
2eca4eb… ragelink 296 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
2eca4eb… ragelink 297 <div class="md-sidebar__scrollwrap">
2eca4eb… ragelink 298 <div class="md-sidebar__inner">
2eca4eb… ragelink 299
2eca4eb… ragelink 300
2eca4eb… ragelink 301
2eca4eb… ragelink 302
2eca4eb… ragelink 303
2eca4eb… ragelink 304
2eca4eb… ragelink 305 <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
2eca4eb… ragelink 306 <label class="md-nav__title" for="__drawer">
2eca4eb… ragelink 307 <a href="." title="Fossilrepo" class="md-nav__button md-logo" aria-label="Fossilrepo" data-md-component="logo">
2eca4eb… ragelink 308 <div style="display: flex; align-items: center; gap: 0.6rem;">
2eca4eb… ragelink 309 <img src="assets/images/conflict-logo.svg" alt="CONFLICT" style="height: 1.4rem; width: auto;">
2eca4eb… ragelink 310 <img src="assets/images/fossilrepo-logo.svg" alt="Fossilrepo" style="height: 1.2rem; width: auto;">
2eca4eb… ragelink 311 </div>
2eca4eb… ragelink 312 </a>
2eca4eb… ragelink 313 Fossilrepo
2eca4eb… ragelink 314 </label>
2eca4eb… ragelink 315
2eca4eb… ragelink 316 <div class="md-nav__source">
2eca4eb… ragelink 317 <a href="https://github.com/ConflictHQ/fossilrepo" title="Go to repository" class="md-source" data-md-component="source">
2eca4eb… ragelink 318 <div class="md-source__icon md-icon">
2eca4eb… ragelink 319
2eca4eb… ragelink 320 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2eca4eb… ragelink 321 </div>
2eca4eb… ragelink 322 <div class="md-source__repository">
2eca4eb… ragelink 323 ConflictHQ/fossilrepo
2eca4eb… ragelink 324 </div>
2eca4eb… ragelink 325 </a>
2eca4eb… ragelink 326 </div>
2eca4eb… ragelink 327
2eca4eb… ragelink 328 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 329
2eca4eb… ragelink 330
2eca4eb… ragelink 331
2eca4eb… ragelink 332
2eca4eb… ragelink 333
2eca4eb… ragelink 334
2eca4eb… ragelink 335
2eca4eb… ragelink 336
2eca4eb… ragelink 337
2eca4eb… ragelink 338 <li class="md-nav__item md-nav__item--active">
2eca4eb… ragelink 339
2eca4eb… ragelink 340 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
2eca4eb… ragelink 341
2eca4eb… ragelink 342
2eca4eb… ragelink 343
2eca4eb… ragelink 344
2eca4eb… ragelink 345
2eca4eb… ragelink 346 <label class="md-nav__link md-nav__link--active" for="__toc">
2eca4eb… ragelink 347
2eca4eb… ragelink 348
2eca4eb… ragelink 349
2eca4eb… ragelink 350 <span class="md-ellipsis">
2eca4eb… ragelink 351
2eca4eb… ragelink 352
2eca4eb… ragelink 353 Home
2eca4eb… ragelink 354
2eca4eb… ragelink 355
2eca4eb… ragelink 356
2eca4eb… ragelink 357 </span>
2eca4eb… ragelink 358
2eca4eb… ragelink 359
2eca4eb… ragelink 360
2eca4eb… ragelink 361 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 362 </label>
2eca4eb… ragelink 363
2eca4eb… ragelink 364 <a href="." class="md-nav__link md-nav__link--active">
2eca4eb… ragelink 365
2eca4eb… ragelink 366
2eca4eb… ragelink 367
2eca4eb… ragelink 368 <span class="md-ellipsis">
2eca4eb… ragelink 369
2eca4eb… ragelink 370
2eca4eb… ragelink 371 Home
2eca4eb… ragelink 372
2eca4eb… ragelink 373
2eca4eb… ragelink 374
2eca4eb… ragelink 375 </span>
2eca4eb… ragelink 376
2eca4eb… ragelink 377
2eca4eb… ragelink 378
2eca4eb… ragelink 379 </a>
2eca4eb… ragelink 380
2eca4eb… ragelink 381
2eca4eb… ragelink 382
2eca4eb… ragelink 383 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 384
2eca4eb… ragelink 385
2eca4eb… ragelink 386
2eca4eb… ragelink 387
2eca4eb… ragelink 388
2eca4eb… ragelink 389
2eca4eb… ragelink 390 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 391 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 392 Table of contents
2eca4eb… ragelink 393 </label>
2eca4eb… ragelink 394 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 395
2eca4eb… ragelink 396 <li class="md-nav__item">
2eca4eb… ragelink 397 <a href="#why-fossil" class="md-nav__link">
2eca4eb… ragelink 398 <span class="md-ellipsis">
2eca4eb… ragelink 399
2eca4eb… ragelink 400 Why Fossil?
2eca4eb… ragelink 401
2eca4eb… ragelink 402 </span>
2eca4eb… ragelink 403 </a>
2eca4eb… ragelink 404
2eca4eb… ragelink 405 </li>
2eca4eb… ragelink 406
2eca4eb… ragelink 407 <li class="md-nav__item">
2eca4eb… ragelink 408 <a href="#what-you-get" class="md-nav__link">
2eca4eb… ragelink 409 <span class="md-ellipsis">
2eca4eb… ragelink 410
2eca4eb… ragelink 411 What You Get
2eca4eb… ragelink 412
2eca4eb… ragelink 413 </span>
2eca4eb… ragelink 414 </a>
2eca4eb… ragelink 415
2eca4eb… ragelink 416 </li>
2eca4eb… ragelink 417
2eca4eb… ragelink 418 <li class="md-nav__item">
2eca4eb… ragelink 419 <a href="#quick-start" class="md-nav__link">
2eca4eb… ragelink 420 <span class="md-ellipsis">
2eca4eb… ragelink 421
2eca4eb… ragelink 422 Quick Start
2eca4eb… ragelink 423
2eca4eb… ragelink 424 </span>
2eca4eb… ragelink 425 </a>
2eca4eb… ragelink 426
2eca4eb… ragelink 427 </li>
2eca4eb… ragelink 428
2eca4eb… ragelink 429 <li class="md-nav__item">
2eca4eb… ragelink 430 <a href="#architecture" class="md-nav__link">
2eca4eb… ragelink 431 <span class="md-ellipsis">
2eca4eb… ragelink 432
2eca4eb… ragelink 433 Architecture
2eca4eb… ragelink 434
2eca4eb… ragelink 435 </span>
2eca4eb… ragelink 436 </a>
2eca4eb… ragelink 437
2eca4eb… ragelink 438 </li>
2eca4eb… ragelink 439
2eca4eb… ragelink 440 <li class="md-nav__item">
2eca4eb… ragelink 441 <a href="#license" class="md-nav__link">
2eca4eb… ragelink 442 <span class="md-ellipsis">
2eca4eb… ragelink 443
2eca4eb… ragelink 444 License
2eca4eb… ragelink 445
2eca4eb… ragelink 446 </span>
2eca4eb… ragelink 447 </a>
2eca4eb… ragelink 448
2eca4eb… ragelink 449 </li>
2eca4eb… ragelink 450
2eca4eb… ragelink 451 </ul>
2eca4eb… ragelink 452
2eca4eb… ragelink 453 </nav>
2eca4eb… ragelink 454
2eca4eb… ragelink 455 </li>
2eca4eb… ragelink 456
2eca4eb… ragelink 457
2eca4eb… ragelink 458
2eca4eb… ragelink 459
2eca4eb… ragelink 460
2eca4eb… ragelink 461
2eca4eb… ragelink 462
2eca4eb… ragelink 463
2eca4eb… ragelink 464
2eca4eb… ragelink 465
2eca4eb… ragelink 466
2eca4eb… ragelink 467
2eca4eb… ragelink 468
2eca4eb… ragelink 469
2eca4eb… ragelink 470
2eca4eb… ragelink 471
2eca4eb… ragelink 472
2eca4eb… ragelink 473
2eca4eb… ragelink 474
2eca4eb… ragelink 475 <li class="md-nav__item md-nav__item--nested">
2eca4eb… ragelink 476
2eca4eb… ragelink 477
2eca4eb… ragelink 478
2eca4eb… ragelink 479
2eca4eb… ragelink 480
2eca4eb… ragelink 481 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
2eca4eb… ragelink 482
2eca4eb… ragelink 483
2eca4eb… ragelink 484 <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
2eca4eb… ragelink 485
2eca4eb… ragelink 486
2eca4eb… ragelink 487
2eca4eb… ragelink 488 <span class="md-ellipsis">
2eca4eb… ragelink 489
2eca4eb… ragelink 490
2eca4eb… ragelink 491 Getting Started
2eca4eb… ragelink 492
2eca4eb… ragelink 493
2eca4eb… ragelink 494
2eca4eb… ragelink 495 </span>
2eca4eb… ragelink 496
2eca4eb… ragelink 497
2eca4eb… ragelink 498
2eca4eb… ragelink 499 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 500 </label>
2eca4eb… ragelink 501
2eca4eb… ragelink 502 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
2eca4eb… ragelink 503 <label class="md-nav__title" for="__nav_2">
2eca4eb… ragelink 504 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 505
2eca4eb… ragelink 506
2eca4eb… ragelink 507 Getting Started
2eca4eb… ragelink 508
2eca4eb… ragelink 509
2eca4eb… ragelink 510 </label>
2eca4eb… ragelink 511 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 512
2eca4eb… ragelink 513
2eca4eb… ragelink 514
2eca4eb… ragelink 515
2eca4eb… ragelink 516
2eca4eb… ragelink 517
2eca4eb… ragelink 518
2eca4eb… ragelink 519 <li class="md-nav__item">
2eca4eb… ragelink 520 <a href="getting-started/prerequisites/" class="md-nav__link">
2eca4eb… ragelink 521
2eca4eb… ragelink 522
2eca4eb… ragelink 523
2eca4eb… ragelink 524 <span class="md-ellipsis">
2eca4eb… ragelink 525
2eca4eb… ragelink 526
2eca4eb… ragelink 527 Prerequisites
2eca4eb… ragelink 528
2eca4eb… ragelink 529
2eca4eb… ragelink 530
2eca4eb… ragelink 531 </span>
2eca4eb… ragelink 532
2eca4eb… ragelink 533
2eca4eb… ragelink 534
2eca4eb… ragelink 535 </a>
2eca4eb… ragelink 536 </li>
2eca4eb… ragelink 537
2eca4eb… ragelink 538
2eca4eb… ragelink 539
2eca4eb… ragelink 540
2eca4eb… ragelink 541
2eca4eb… ragelink 542
2eca4eb… ragelink 543
2eca4eb… ragelink 544
2eca4eb… ragelink 545
2eca4eb… ragelink 546
2eca4eb… ragelink 547 <li class="md-nav__item">
2eca4eb… ragelink 548 <a href="getting-started/installation/" class="md-nav__link">
2eca4eb… ragelink 549
2eca4eb… ragelink 550
2eca4eb… ragelink 551
2eca4eb… ragelink 552 <span class="md-ellipsis">
2eca4eb… ragelink 553
2eca4eb… ragelink 554
2eca4eb… ragelink 555 Installation
2eca4eb… ragelink 556
2eca4eb… ragelink 557
2eca4eb… ragelink 558
2eca4eb… ragelink 559 </span>
2eca4eb… ragelink 560
2eca4eb… ragelink 561
2eca4eb… ragelink 562
2eca4eb… ragelink 563 </a>
2eca4eb… ragelink 564 </li>
2eca4eb… ragelink 565
2eca4eb… ragelink 566
2eca4eb… ragelink 567
2eca4eb… ragelink 568
2eca4eb… ragelink 569
2eca4eb… ragelink 570
2eca4eb… ragelink 571
2eca4eb… ragelink 572
2eca4eb… ragelink 573
2eca4eb… ragelink 574
2eca4eb… ragelink 575 <li class="md-nav__item">
2eca4eb… ragelink 576 <a href="getting-started/configuration/" class="md-nav__link">
2eca4eb… ragelink 577
2eca4eb… ragelink 578
2eca4eb… ragelink 579
2eca4eb… ragelink 580 <span class="md-ellipsis">
2eca4eb… ragelink 581
2eca4eb… ragelink 582
2eca4eb… ragelink 583 Configuration
2eca4eb… ragelink 584
2eca4eb… ragelink 585
2eca4eb… ragelink 586
2eca4eb… ragelink 587 </span>
2eca4eb… ragelink 588
2eca4eb… ragelink 589
2eca4eb… ragelink 590
2eca4eb… ragelink 591 </a>
2eca4eb… ragelink 592 </li>
2eca4eb… ragelink 593
2eca4eb… ragelink 594
2eca4eb… ragelink 595
2eca4eb… ragelink 596
2eca4eb… ragelink 597
2eca4eb… ragelink 598
2eca4eb… ragelink 599
2eca4eb… ragelink 600
2eca4eb… ragelink 601
2eca4eb… ragelink 602
2eca4eb… ragelink 603 <li class="md-nav__item">
2eca4eb… ragelink 604 <a href="getting-started/first-repo/" class="md-nav__link">
2eca4eb… ragelink 605
2eca4eb… ragelink 606
2eca4eb… ragelink 607
2eca4eb… ragelink 608 <span class="md-ellipsis">
2eca4eb… ragelink 609
2eca4eb… ragelink 610
2eca4eb… ragelink 611 First Repository
2eca4eb… ragelink 612
2eca4eb… ragelink 613
2eca4eb… ragelink 614
2eca4eb… ragelink 615 </span>
2eca4eb… ragelink 616
2eca4eb… ragelink 617
2eca4eb… ragelink 618
2eca4eb… ragelink 619 </a>
2eca4eb… ragelink 620 </li>
2eca4eb… ragelink 621
2eca4eb… ragelink 622
2eca4eb… ragelink 623
2eca4eb… ragelink 624
2eca4eb… ragelink 625 </ul>
2eca4eb… ragelink 626 </nav>
2eca4eb… ragelink 627
2eca4eb… ragelink 628 </li>
2eca4eb… ragelink 629
2eca4eb… ragelink 630
2eca4eb… ragelink 631
2eca4eb… ragelink 632
2eca4eb… ragelink 633
2eca4eb… ragelink 634
2eca4eb… ragelink 635
2eca4eb… ragelink 636
2eca4eb… ragelink 637
2eca4eb… ragelink 638
2eca4eb… ragelink 639
2eca4eb… ragelink 640
2eca4eb… ragelink 641
2eca4eb… ragelink 642
2eca4eb… ragelink 643
2eca4eb… ragelink 644
2eca4eb… ragelink 645
2eca4eb… ragelink 646
2eca4eb… ragelink 647
2eca4eb… ragelink 648 <li class="md-nav__item md-nav__item--nested">
2eca4eb… ragelink 649
2eca4eb… ragelink 650
2eca4eb… ragelink 651
2eca4eb… ragelink 652
2eca4eb… ragelink 653
2eca4eb… ragelink 654 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
2eca4eb… ragelink 655
2eca4eb… ragelink 656
2eca4eb… ragelink 657 <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
2eca4eb… ragelink 658
2eca4eb… ragelink 659
2eca4eb… ragelink 660
2eca4eb… ragelink 661 <span class="md-ellipsis">
2eca4eb… ragelink 662
2eca4eb… ragelink 663
2eca4eb… ragelink 664 Architecture
2eca4eb… ragelink 665
2eca4eb… ragelink 666
2eca4eb… ragelink 667
2eca4eb… ragelink 668 </span>
2eca4eb… ragelink 669
2eca4eb… ragelink 670
2eca4eb… ragelink 671
2eca4eb… ragelink 672 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 673 </label>
2eca4eb… ragelink 674
2eca4eb… ragelink 675 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
2eca4eb… ragelink 676 <label class="md-nav__title" for="__nav_3">
2eca4eb… ragelink 677 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 678
2eca4eb… ragelink 679
2eca4eb… ragelink 680 Architecture
2eca4eb… ragelink 681
2eca4eb… ragelink 682
2eca4eb… ragelink 683 </label>
2eca4eb… ragelink 684 <ul class="md-nav__list" data-md-scrollfix>
2eca4eb… ragelink 685
2eca4eb… ragelink 686
2eca4eb… ragelink 687
2eca4eb… ragelink 688
2eca4eb… ragelink 689
2eca4eb… ragelink 690
2eca4eb… ragelink 691
2eca4eb… ragelink 692 <li class="md-nav__item">
2eca4eb… ragelink 693 <a href="architecture/overview/" class="md-nav__link">
2eca4eb… ragelink 694
2eca4eb… ragelink 695
2eca4eb… ragelink 696
2eca4eb… ragelink 697 <span class="md-ellipsis">
2eca4eb… ragelink 698
2eca4eb… ragelink 699
2eca4eb… ragelink 700 Overview
2eca4eb… ragelink 701
2eca4eb… ragelink 702
2eca4eb… ragelink 703
2eca4eb… ragelink 704 </span>
2eca4eb… ragelink 705
2eca4eb… ragelink 706
2eca4eb… ragelink 707
2eca4eb… ragelink 708 </a>
2eca4eb… ragelink 709 </li>
2eca4eb… ragelink 710
2eca4eb… ragelink 711
2eca4eb… ragelink 712
2eca4eb… ragelink 713
2eca4eb… ragelink 714
2eca4eb… ragelink 715
2eca4eb… ragelink 716
2eca4eb… ragelink 717
2eca4eb… ragelink 718
2eca4eb… ragelink 719
2eca4eb… ragelink 720 <li class="md-nav__item">
2eca4eb… ragelink 721 <a href="architecture/sync-bridge/" class="md-nav__link">
2eca4eb… ragelink 722
2eca4eb… ragelink 723
2eca4eb… ragelink 724
2eca4eb… ragelink 725 <span class="md-ellipsis">
2eca4eb… ragelink 726
2eca4eb… ragelink 727
2eca4eb… ragelink 728 Sync Bridge
2eca4eb… ragelink 729
2eca4eb… ragelink 730
2eca4eb… ragelink 731
2eca4eb… ragelink 732 </span>
2eca4eb… ragelink 733
2eca4eb… ragelink 734
2eca4eb… ragelink 735
2eca4eb… ragelink 736 </a>
2eca4eb… ragelink 737 </li>
2eca4eb… ragelink 738
2eca4eb… ragelink 739
2eca4eb… ragelink 740
2eca4eb… ragelink 741
2eca4eb… ragelink 742 </ul>
2eca4eb… ragelink 743 </nav>
2eca4eb… ragelink 744
2eca4eb… ragelink 745 </li>
2eca4eb… ragelink 746
2eca4eb… ragelink 747
2eca4eb… ragelink 748
2eca4eb… ragelink 749 </ul>
2eca4eb… ragelink 750 </nav>
2eca4eb… ragelink 751 </div>
2eca4eb… ragelink 752 </div>
2eca4eb… ragelink 753 </div>
2eca4eb… ragelink 754
2eca4eb… ragelink 755
2eca4eb… ragelink 756
2eca4eb… ragelink 757 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2eca4eb… ragelink 758 <div class="md-sidebar__scrollwrap">
2eca4eb… ragelink 759 <div class="md-sidebar__inner">
2eca4eb… ragelink 760
2eca4eb… ragelink 761
2eca4eb… ragelink 762 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2eca4eb… ragelink 763
2eca4eb… ragelink 764
2eca4eb… ragelink 765
2eca4eb… ragelink 766
2eca4eb… ragelink 767
2eca4eb… ragelink 768
2eca4eb… ragelink 769 <label class="md-nav__title" for="__toc">
2eca4eb… ragelink 770 <span class="md-nav__icon md-icon"></span>
2eca4eb… ragelink 771 Table of contents
2eca4eb… ragelink 772 </label>
2eca4eb… ragelink 773 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2eca4eb… ragelink 774
2eca4eb… ragelink 775 <li class="md-nav__item">
2eca4eb… ragelink 776 <a href="#why-fossil" class="md-nav__link">
2eca4eb… ragelink 777 <span class="md-ellipsis">
2eca4eb… ragelink 778
2eca4eb… ragelink 779 Why Fossil?
2eca4eb… ragelink 780
2eca4eb… ragelink 781 </span>
2eca4eb… ragelink 782 </a>
2eca4eb… ragelink 783
2eca4eb… ragelink 784 </li>
2eca4eb… ragelink 785
2eca4eb… ragelink 786 <li class="md-nav__item">
2eca4eb… ragelink 787 <a href="#what-you-get" class="md-nav__link">
2eca4eb… ragelink 788 <span class="md-ellipsis">
2eca4eb… ragelink 789
2eca4eb… ragelink 790 What You Get
2eca4eb… ragelink 791
2eca4eb… ragelink 792 </span>
2eca4eb… ragelink 793 </a>
2eca4eb… ragelink 794
2eca4eb… ragelink 795 </li>
2eca4eb… ragelink 796
2eca4eb… ragelink 797 <li class="md-nav__item">
2eca4eb… ragelink 798 <a href="#quick-start" class="md-nav__link">
2eca4eb… ragelink 799 <span class="md-ellipsis">
2eca4eb… ragelink 800
2eca4eb… ragelink 801 Quick Start
2eca4eb… ragelink 802
2eca4eb… ragelink 803 </span>
2eca4eb… ragelink 804 </a>
2eca4eb… ragelink 805
2eca4eb… ragelink 806 </li>
2eca4eb… ragelink 807
2eca4eb… ragelink 808 <li class="md-nav__item">
2eca4eb… ragelink 809 <a href="#architecture" class="md-nav__link">
2eca4eb… ragelink 810 <span class="md-ellipsis">
2eca4eb… ragelink 811
2eca4eb… ragelink 812 Architecture
2eca4eb… ragelink 813
2eca4eb… ragelink 814 </span>
2eca4eb… ragelink 815 </a>
2eca4eb… ragelink 816
2eca4eb… ragelink 817 </li>
2eca4eb… ragelink 818
2eca4eb… ragelink 819 <li class="md-nav__item">
2eca4eb… ragelink 820 <a href="#license" class="md-nav__link">
2eca4eb… ragelink 821 <span class="md-ellipsis">
2eca4eb… ragelink 822
2eca4eb… ragelink 823 License
2eca4eb… ragelink 824
2eca4eb… ragelink 825 </span>
2eca4eb… ragelink 826 </a>
2eca4eb… ragelink 827
2eca4eb… ragelink 828 </li>
2eca4eb… ragelink 829
2eca4eb… ragelink 830 </ul>
2eca4eb… ragelink 831
2eca4eb… ragelink 832 </nav>
2eca4eb… ragelink 833 </div>
2eca4eb… ragelink 834 </div>
2eca4eb… ragelink 835 </div>
2eca4eb… ragelink 836
2eca4eb… ragelink 837
2eca4eb… ragelink 838
2eca4eb… ragelink 839 <div class="md-content" data-md-component="content">
2eca4eb… ragelink 840
2eca4eb… ragelink 841 <article class="md-content__inner md-typeset">
2eca4eb… ragelink 842
2eca4eb… ragelink 843
2eca4eb… ragelink 844
2eca4eb… ragelink 845
2eca4eb… ragelink 846
2eca4eb… ragelink 847
2eca4eb… ragelink 848
2eca4eb… ragelink 849
2eca4eb… ragelink 850 <h1 id="fossilrepo">Fossilrepo<a class="headerlink" href="#fossilrepo" title="Permanent link">&para;</a></h1>
2eca4eb… ragelink 851 <p><strong>Self-hosted Fossil forge. One command, full-stack code hosting.</strong></p>
2eca4eb… ragelink 852 <p>Fossilrepo is an omnibus-style installer for a production Fossil SCM server. It packages Fossil, Caddy (SSL/routing), Litestream (S3 backups), and a Django management layer into a single deployable unit.</p>
2eca4eb… ragelink 853 <p>Think GitLab Omnibus, but for Fossil.</p>
2eca4eb… ragelink 854 <h2 id="why-fossil">Why Fossil?<a class="headerlink" href="#why-fossil" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 855 <p>A Fossil repository is a single SQLite file containing the full VCS history, issue tracker, wiki, forum, and timeline. No external services. No rate limits. Portable -- hand the file to someone and they have everything.</p>
2eca4eb… ragelink 856 <ul>
2eca4eb… ragelink 857 <li><strong>Single-file repos</strong> -- each <code>.fossil</code> file is the entire project</li>
2eca4eb… ragelink 858 <li><strong>Built-in everything</strong> -- issues, wiki, forum, timeline, web UI</li>
2eca4eb… ragelink 859 <li><strong>No API rate limits</strong> -- ideal for CI agents and automation</li>
2eca4eb… ragelink 860 <li><strong>Litestream replication</strong> -- continuous backup to S3 for free</li>
2eca4eb… ragelink 861 </ul>
2eca4eb… ragelink 862 <h2 id="what-you-get">What You Get<a class="headerlink" href="#what-you-get" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 863 <table>
2eca4eb… ragelink 864 <thead>
2eca4eb… ragelink 865 <tr>
2eca4eb… ragelink 866 <th>Component</th>
2eca4eb… ragelink 867 <th>Role</th>
2eca4eb… ragelink 868 </tr>
2eca4eb… ragelink 869 </thead>
2eca4eb… ragelink 870 <tbody>
2eca4eb… ragelink 871 <tr>
2eca4eb… ragelink 872 <td><strong>Fossil server</strong></td>
2eca4eb… ragelink 873 <td>Serves all repos from a single process</td>
2eca4eb… ragelink 874 </tr>
2eca4eb… ragelink 875 <tr>
2eca4eb… ragelink 876 <td><strong>Caddy</strong></td>
2eca4eb… ragelink 877 <td>SSL termination, subdomain-per-repo routing</td>
2eca4eb… ragelink 878 </tr>
2eca4eb… ragelink 879 <tr>
2eca4eb… ragelink 880 <td><strong>Litestream</strong></td>
2eca4eb… ragelink 881 <td>Continuous SQLite replication to S3/MinIO</td>
2eca4eb… ragelink 882 </tr>
2eca4eb… ragelink 883 <tr>
2eca4eb… ragelink 884 <td><strong>Django management UI</strong></td>
2eca4eb… ragelink 885 <td>Repository lifecycle, user management, dashboards</td>
2eca4eb… ragelink 886 </tr>
2eca4eb… ragelink 887 <tr>
2eca4eb… ragelink 888 <td><strong>Sync bridge</strong></td>
2eca4eb… ragelink 889 <td>Mirror Fossil repos to GitHub/GitLab (read-only)</td>
2eca4eb… ragelink 890 </tr>
2eca4eb… ragelink 891 <tr>
2eca4eb… ragelink 892 <td><strong>Celery workers</strong></td>
2eca4eb… ragelink 893 <td>Background sync, scheduled tasks</td>
2eca4eb… ragelink 894 </tr>
2eca4eb… ragelink 895 </tbody>
2eca4eb… ragelink 896 </table>
2eca4eb… ragelink 897 <h2 id="quick-start">Quick Start<a class="headerlink" href="#quick-start" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 898 <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="c1"># Clone the repo</span>
2eca4eb… ragelink 899 <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/ConflictHQ/fossilrepo.git
2eca4eb… ragelink 900 <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="nb">cd</span><span class="w"> </span>fossilrepo
2eca4eb… ragelink 901 <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>
2eca4eb… ragelink 902 <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="c1"># Start the full stack</span>
2eca4eb… ragelink 903 <a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>make<span class="w"> </span>build
2eca4eb… ragelink 904 <a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>
2eca4eb… ragelink 905 <a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="c1"># Seed development data</span>
2eca4eb… ragelink 906 <a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>make<span class="w"> </span>seed
2eca4eb… ragelink 907 <a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a>
2eca4eb… ragelink 908 <a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="c1"># Open the dashboard</span>
2eca4eb… ragelink 909 <a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a>open<span class="w"> </span>http://localhost:8000
2eca4eb… ragelink 910 </code></pre></div>
2eca4eb… ragelink 911 <h2 id="architecture">Architecture<a class="headerlink" href="#architecture" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 912 <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>Caddy (SSL termination, routing, subdomain per repo)
2eca4eb… ragelink 913 <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a> +-- fossil server --repolist /data/repos/
2eca4eb… ragelink 914 <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a> +-- /data/repos/
2eca4eb… ragelink 915 <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a> |-- projecta.fossil
2eca4eb… ragelink 916 <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> |-- projectb.fossil
2eca4eb… ragelink 917 <a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> +-- ...
2eca4eb… ragelink 918 <a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>
2eca4eb… ragelink 919 <a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>Litestream -&gt; S3/MinIO (continuous replication, point-in-time recovery)
2eca4eb… ragelink 920 </code></pre></div>
2eca4eb… ragelink 921 <p>New project = <code>fossil init</code>. No restart, no config change. Litestream picks it up automatically.</p>
2eca4eb… ragelink 922 <h2 id="license">License<a class="headerlink" href="#license" title="Permanent link">&para;</a></h2>
2eca4eb… ragelink 923 <p>MIT License -- Copyright (c) 2026 CONFLICT LLC.</p>
2eca4eb… ragelink 924
2eca4eb… ragelink 925
2eca4eb… ragelink 926
2eca4eb… ragelink 927
2eca4eb… ragelink 928
2eca4eb… ragelink 929
2eca4eb… ragelink 930
2eca4eb… ragelink 931
2eca4eb… ragelink 932
2eca4eb… ragelink 933
2eca4eb… ragelink 934
2eca4eb… ragelink 935
2eca4eb… ragelink 936
2eca4eb… ragelink 937 </article>
2eca4eb… ragelink 938 </div>
2eca4eb… ragelink 939
2eca4eb… ragelink 940
2eca4eb… ragelink 941 <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
2eca4eb… ragelink 942
2eca4eb… ragelink 943 <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2eca4eb… ragelink 944 </div>
2eca4eb… ragelink 945
2eca4eb… ragelink 946 <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2eca4eb… ragelink 947
2eca4eb… ragelink 948 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
2eca4eb… ragelink 949 Back to top
2eca4eb… ragelink 950 </button>
2eca4eb… ragelink 951
2eca4eb… ragelink 952 </main>
2eca4eb… ragelink 953
2eca4eb… ragelink 954 <footer class="md-footer">
2eca4eb… ragelink 955
2eca4eb… ragelink 956 <div class="md-footer-meta md-typeset">
2eca4eb… ragelink 957 <div class="md-footer-meta__inner md-grid">
2eca4eb… ragelink 958 <div class="md-copyright">
2eca4eb… ragelink 959
2eca4eb… ragelink 960 <div class="md-copyright__highlight">
2eca4eb… ragelink 961 Copyright &copy; 2026 CONFLICT LLC
2eca4eb… ragelink 962 </div>
2eca4eb… ragelink 963
2eca4eb… ragelink 964
2eca4eb… ragelink 965 Made with
2eca4eb… ragelink 966 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2eca4eb… ragelink 967 Material for MkDocs
2eca4eb… ragelink 968 </a>
2eca4eb… ragelink 969
2eca4eb… ragelink 970 </div>
2eca4eb… ragelink 971
2eca4eb… ragelink 972
2eca4eb… ragelink 973 <div class="md-social">
2eca4eb… ragelink 974
2eca4eb… ragelink 975
2eca4eb… ragelink 976
2eca4eb… ragelink 977
2eca4eb… ragelink 978
2eca4eb… ragelink 979
2eca4eb… ragelink 980
2eca4eb… ragelink 981
2eca4eb… ragelink 982 <a href="https://github.com/ConflictHQ/fossilrepo" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2eca4eb… ragelink 983 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
2eca4eb… ragelink 984 </a>
2eca4eb… ragelink 985
2eca4eb… ragelink 986 </div>
2eca4eb… ragelink 987
2eca4eb… ragelink 988 </div>
2eca4eb… ragelink 989 </div>
2eca4eb… ragelink 990 </footer>
2eca4eb… ragelink 991
2eca4eb… ragelink 992 </div>
2eca4eb… ragelink 993 <div class="md-dialog" data-md-component="dialog">
2eca4eb… ragelink 994 <div class="md-dialog__inner md-typeset"></div>
2eca4eb… ragelink 995 </div>
2eca4eb… ragelink 996
2eca4eb… ragelink 997
2eca4eb… ragelink 998
2eca4eb… ragelink 999
2eca4eb… ragelink 1000
2eca4eb… ragelink 1001 <script id="__config" type="application/json">{"annotate": null, "base": ".", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "assets/javascripts/workers/search.2c215733.min.js", "tags": null, "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": null}</script>
2eca4eb… ragelink 1002
2eca4eb… ragelink 1003
2eca4eb… ragelink 1004 <script src="assets/javascripts/bundle.79ae519e.min.js"></script>
2eca4eb… ragelink 1005
2eca4eb… ragelink 1006
2eca4eb… ragelink 1007 </body>
2eca4eb… ragelink 1008 </html>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button