1
0
mirror of https://github.com/gluster/glusterdocs.git synced 2026-02-06 09:46:46 +01:00
Files
2024-03-07 13:07:38 +00:00

4882 lines
92 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">
<meta name="description" content="Project documentation for Gluster Filesystem">
<link rel="canonical" href="http://docs.gluster.org/Developer-guide/Simplified-Development-Workflow/">
<link rel="prev" href="../Developers-Index/">
<link rel="next" href="../compiling-rpms/">
<link rel="icon" href="../../images/favicon.ico">
<meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6">
<title>Simplified Development Workflow - Gluster Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.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>
<link rel="stylesheet" href="../../css/custom.css">
<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="slate" data-md-color-primary="" data-md-color-accent="">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#simplified-development-workflow-for-glusterfs" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Gluster Docs" class="md-header__button md-logo" aria-label="Gluster Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Gluster Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Simplified Development Workflow
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="" data-md-color-accent="" aria-label="Bring back the sunshine" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Bring back the sunshine" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="" data-md-color-accent="" aria-label="Turn off the lights" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Turn off the lights" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/gluster/glusterdocs/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 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 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</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="Gluster Docs" class="md-nav__button md-logo" aria-label="Gluster Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
Gluster Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/gluster/glusterdocs/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 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 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false">
Getting started with GlusterFS
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Getting started with GlusterFS" data-md-level="1">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting started with GlusterFS
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Administrator-Guide/GlusterFS-Introduction/" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="../../Quick-Start-Guide/Quickstart/" class="md-nav__link">
Quick Start Guide
</a>
</li>
<li class="md-nav__item">
<a href="../../Quick-Start-Guide/Architecture/" class="md-nav__link">
Architecture
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false">
Install Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Install Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Install Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Install-Guide/Overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Common-criteria/" class="md-nav__link">
Common Criteria
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Setup-virt/" class="md-nav__link">
Setting up in virtual machines
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Setup-Bare-metal/" class="md-nav__link">
Setting up on physical servers
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Setup-aws/" class="md-nav__link">
Deploying in AWS
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Install/" class="md-nav__link">
Install
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Configure/" class="md-nav__link">
Configure
</a>
</li>
<li class="md-nav__item">
<a href="../../Install-Guide/Community-Packages/" class="md-nav__link">
Community Packages
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
<label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false">
Administration Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Administration Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Administration Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Administrator-Guide/overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/" class="md-nav__link">
Index
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Start-Stop-Daemon/" class="md-nav__link">
Managing the Gluster Service
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Storage-Pools/" class="md-nav__link">
Managing Trusted Storage Pools
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_5" type="checkbox" id="__nav_4_5" >
<label class="md-nav__link" for="__nav_4_5" tabindex="0" aria-expanded="false">
Setting Up Storage
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Setting Up Storage" data-md-level="2">
<label class="md-nav__title" for="__nav_4_5">
<span class="md-nav__icon md-icon"></span>
Setting Up Storage
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Administrator-Guide/setting-up-storage/" class="md-nav__link">
Setting Up Storage
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Brick-Naming-Conventions/" class="md-nav__link">
Brick Naming Conventions
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/formatting-and-mounting-bricks/" class="md-nav__link">
Formatting and Mounting Bricks
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Access-Control-Lists/" class="md-nav__link">
Access Control Lists
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Handling-of-users-with-many-groups/" class="md-nav__link">
Handling of users that belong to many groups
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Setting-Up-Volumes/" class="md-nav__link">
Setting Up Volumes
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Setting-Up-Clients/" class="md-nav__link">
Setting Up Clients
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Managing-Volumes/" class="md-nav__link">
Managing Volumes
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Building-QEMU-With-gfapi-For-Debian-Based-Systems/" class="md-nav__link">
Building QEMU with gfapi For Debian Based Systems
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/GlusterFS-Filter/" class="md-nav__link">
GlusterFS Filter
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Logging/" class="md-nav__link">
Logging
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_13" type="checkbox" id="__nav_4_13" >
<label class="md-nav__link" for="__nav_4_13" tabindex="0" aria-expanded="false">
Features
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Features" data-md-level="2">
<label class="md-nav__title" for="__nav_4_13">
<span class="md-nav__icon md-icon"></span>
Features
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Administrator-Guide/setting-up-storage/" class="md-nav__link">
Setting Up Storage
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Automatic-File-Replication/" class="md-nav__link">
Replication
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Geo-Replication/" class="md-nav__link">
Geo Replication
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Directory-Quota/" class="md-nav__link">
Quotas
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Managing-Snapshots/" class="md-nav__link">
Snapshots
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Trash/" class="md-nav__link">
Trash
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/io_uring/" class="md-nav__link">
io_uring
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Monitoring-Workload/" class="md-nav__link">
Monitoring Workload
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Object-Storage/" class="md-nav__link">
Object Storage
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/GlusterFS-Cinder/" class="md-nav__link">
GlusterFS Cinder
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/GlusterFS-Keystone-Quickstart/" class="md-nav__link">
GlusterFS Keystone Quickstart
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Gluster-On-ZFS/" class="md-nav__link">
Gluster On ZFS
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Bareos/" class="md-nav__link">
Configuring Bareos to store backups on Gluster
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/SSL/" class="md-nav__link">
SSL
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Puppet/" class="md-nav__link">
Puppet Gluster
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/RDMA-Transport/" class="md-nav__link">
RDMA Transport
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/GlusterFS-iSCSI/" class="md-nav__link">
GlusterFS iSCSI
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/NFS-Ganesha-GlusterFS-Integration/" class="md-nav__link">
Configuring NFS-Ganesha server
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Linux-Kernel-Tuning/" class="md-nav__link">
Linux Kernel Tuning
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Network-Configurations-Techniques/" class="md-nav__link">
Network Configuration Techniques
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Performance-Testing/" class="md-nav__link">
Performance Testing
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Performance-Tuning/" class="md-nav__link">
Performance Tuning
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Export-And-Netgroup-Authentication/" class="md-nav__link">
Export and Netgroup Authentication
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Consul/" class="md-nav__link">
Consul integration
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Split-brain-and-ways-to-deal-with-it/" class="md-nav__link">
Split brain and ways to deal with it
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/arbiter-volumes-and-quorum/" class="md-nav__link">
Arbiter volumes and quorum options
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Thin-Arbiter-Volumes/" class="md-nav__link">
Thin Arbiter volumes
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Trash/" class="md-nav__link">
Trash for GlusterFS
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Tuning-Volume-Options/" class="md-nav__link">
Tuning Volume Options
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Mandatory-Locks/" class="md-nav__link">
Mandatory Locks
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/GlusterFS-Coreutils/" class="md-nav__link">
GlusterFS coreutilities
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Events-APIs/" class="md-nav__link">
Events APIs
</a>
</li>
<li class="md-nav__item">
<a href="../../Administrator-Guide/Hook-scripts/" class="md-nav__link">
Managing GlusterFS Volume Life-Cycle Extensions with Hook Scripts
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false">
CLI Reference
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="CLI Reference" data-md-level="1">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
CLI Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../CLI-Reference/cli-main/" class="md-nav__link">
Overview
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../presentations/" class="md-nav__link">
Presentations
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked>
<label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true">
Developers Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Developers Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Developers Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../Developers-Index/" class="md-nav__link">
Developers Home
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Simplified Development Workflow
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
Simplified Development Workflow
</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="#initial-preparation" class="md-nav__link">
Initial preparation
</a>
<nav class="md-nav" aria-label="Initial preparation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#get-the-source" class="md-nav__link">
Get the source
</a>
</li>
<li class="md-nav__item">
<a href="#dev-system-setup" class="md-nav__link">
Dev system setup
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#actual-development" class="md-nav__link">
Actual development
</a>
<nav class="md-nav" aria-label="Actual development">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#create-a-development-branch" class="md-nav__link">
Create a development branch
</a>
</li>
<li class="md-nav__item">
<a href="#hack" class="md-nav__link">
Hack
</a>
</li>
<li class="md-nav__item">
<a href="#tests" class="md-nav__link">
Tests
</a>
</li>
<li class="md-nav__item">
<a href="#regression-test" class="md-nav__link">
Regression test
</a>
</li>
<li class="md-nav__item">
<a href="#commit-your-changes" class="md-nav__link">
Commit your changes
</a>
</li>
<li class="md-nav__item">
<a href="#submit-for-review" class="md-nav__link">
Submit for review
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#review-process" class="md-nav__link">
Review process
</a>
<nav class="md-nav" aria-label="Review process">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#automated-verification" class="md-nav__link">
Automated verification
</a>
</li>
<li class="md-nav__item">
<a href="#formal-review" class="md-nav__link">
Formal review
</a>
</li>
<li class="md-nav__item">
<a href="#resubmission" class="md-nav__link">
Resubmission
</a>
</li>
<li class="md-nav__item">
<a href="#verification" class="md-nav__link">
Verification
</a>
</li>
<li class="md-nav__item">
<a href="#acceptance" class="md-nav__link">
Acceptance
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../compiling-rpms/" class="md-nav__link">
Compiling RPMS
</a>
</li>
<li class="md-nav__item">
<a href="../Development-Workflow/" class="md-nav__link">
Development-Workflow
</a>
</li>
<li class="md-nav__item">
<a href="../Building-GlusterFS/" class="md-nav__link">
Build and Install GlusterFS
</a>
</li>
<li class="md-nav__item">
<a href="../Projects/" class="md-nav__link">
Project Ideas
</a>
</li>
<li class="md-nav__item">
<a href="../Easy-Fix-Bugs/" class="md-nav__link">
EasyFix bugs
</a>
</li>
<li class="md-nav__item">
<a href="../Fixing-issues-reported-by-tools-for-static-code-analysis/" class="md-nav__link">
Fixing issues reported by tools for static code analysis
</a>
</li>
<li class="md-nav__item">
<a href="../Backport-Guidelines/" class="md-nav__link">
Backport Guidelines
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" tabindex="0" aria-expanded="false">
Contributors Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Contributors Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Contributors Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Contributors-Guide/Index/" class="md-nav__link">
Index
</a>
</li>
<li class="md-nav__item">
<a href="../../Contributors-Guide/Bug-Reporting-Guidelines/" class="md-nav__link">
Bug reporting guidelines
</a>
</li>
<li class="md-nav__item">
<a href="../../Contributors-Guide/Bug-Triage/" class="md-nav__link">
Bug Triage
</a>
</li>
<li class="md-nav__item">
<a href="../../Contributors-Guide/GlusterFS-Release-process/" class="md-nav__link">
GlusterFS Release process
</a>
</li>
<li class="md-nav__item">
<a href="../../Contributors-Guide/Guidelines-For-Maintainers/" class="md-nav__link">
Guidelines For Maintainers
</a>
</li>
<li class="md-nav__item">
<a href="../../Contributors-Guide/Adding-your-blog/" class="md-nav__link">
Adding your gluster blog
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" tabindex="0" aria-expanded="false">
Ops Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Ops Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Ops Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Ops-Guide/Overview/" class="md-nav__link">
Index
</a>
</li>
<li class="md-nav__item">
<a href="../../Ops-Guide/Tools/" class="md-nav__link">
Tools
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
<label class="md-nav__link" for="__nav_10" tabindex="0" aria-expanded="false">
Upgrade-Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Upgrade-Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Upgrade-Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/" class="md-nav__link">
Upgrade-Guide Index
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/op-version/" class="md-nav__link">
Op-version
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/generic-upgrade-procedure/" class="md-nav__link">
Generic upgrade procedure
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-11/" class="md-nav__link">
Upgrade to 11
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-10/" class="md-nav__link">
Upgrade to 10
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-9/" class="md-nav__link">
Upgrade to 9
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-8/" class="md-nav__link">
Upgrade to 8
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-7/" class="md-nav__link">
Upgrade to 7
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-6/" class="md-nav__link">
Upgrade to 6
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-5/" class="md-nav__link">
Upgrade to 5
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-4.1/" class="md-nav__link">
Upgrade to 4.1
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-4.0/" class="md-nav__link">
Upgrade to 4.0
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.13/" class="md-nav__link">
Upgrade to 3.13
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.12/" class="md-nav__link">
Upgrade to 3.12
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.11/" class="md-nav__link">
Upgrade to 3.11
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.10/" class="md-nav__link">
Upgrade to 3.10
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.9/" class="md-nav__link">
Upgrade to 3.9
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.8/" class="md-nav__link">
Upgrade to 3.8
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.7/" class="md-nav__link">
Upgrade to 3.7
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.6/" class="md-nav__link">
Upgrade to 3.6
</a>
</li>
<li class="md-nav__item">
<a href="../../Upgrade-Guide/upgrade-to-3.5/" class="md-nav__link">
Upgrade to 3.5
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" >
<label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false">
Release Notes
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Release Notes" data-md-level="1">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
Release Notes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/" class="md-nav__link">
index
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_2" type="checkbox" id="__nav_11_2" >
<label class="md-nav__link" for="__nav_11_2" tabindex="0" aria-expanded="false">
RELEASE 11.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 11.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_2">
<span class="md-nav__icon md-icon"></span>
RELEASE 11.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/11.0/" class="md-nav__link">
11.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/11.1/" class="md-nav__link">
11.1
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_3" type="checkbox" id="__nav_11_3" >
<label class="md-nav__link" for="__nav_11_3" tabindex="0" aria-expanded="false">
RELEASE 10.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 10.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_3">
<span class="md-nav__icon md-icon"></span>
RELEASE 10.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/10.5/" class="md-nav__link">
10.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/10.4/" class="md-nav__link">
10.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/10.3/" class="md-nav__link">
10.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/10.2/" class="md-nav__link">
10.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/10.1/" class="md-nav__link">
10.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/10.0/" class="md-nav__link">
10.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_4" type="checkbox" id="__nav_11_4" >
<label class="md-nav__link" for="__nav_11_4" tabindex="0" aria-expanded="false">
RELEASE 9.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 9.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_4">
<span class="md-nav__icon md-icon"></span>
RELEASE 9.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/9.6/" class="md-nav__link">
9.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/9.5/" class="md-nav__link">
9.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/9.4/" class="md-nav__link">
9.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/9.3/" class="md-nav__link">
9.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/9.2/" class="md-nav__link">
9.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/9.1/" class="md-nav__link">
9.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/9.0/" class="md-nav__link">
9.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_5" type="checkbox" id="__nav_11_5" >
<label class="md-nav__link" for="__nav_11_5" tabindex="0" aria-expanded="false">
RELEASE 8.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 8.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_5">
<span class="md-nav__icon md-icon"></span>
RELEASE 8.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/8.6/" class="md-nav__link">
8.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/8.5/" class="md-nav__link">
8.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/8.4/" class="md-nav__link">
8.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/8.3/" class="md-nav__link">
8.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/8.2/" class="md-nav__link">
8.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/8.1/" class="md-nav__link">
8.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/8.0/" class="md-nav__link">
8.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_6" type="checkbox" id="__nav_11_6" >
<label class="md-nav__link" for="__nav_11_6" tabindex="0" aria-expanded="false">
RELEASE 7.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 7.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_6">
<span class="md-nav__icon md-icon"></span>
RELEASE 7.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/7.9/" class="md-nav__link">
7.9
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.8/" class="md-nav__link">
7.8
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.7/" class="md-nav__link">
7.7
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.6/" class="md-nav__link">
7.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.5/" class="md-nav__link">
7.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.4/" class="md-nav__link">
7.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.3/" class="md-nav__link">
7.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.2/" class="md-nav__link">
7.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.1/" class="md-nav__link">
7.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/7.0/" class="md-nav__link">
7.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_7" type="checkbox" id="__nav_11_7" >
<label class="md-nav__link" for="__nav_11_7" tabindex="0" aria-expanded="false">
RELEASE 6.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 6.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_7">
<span class="md-nav__icon md-icon"></span>
RELEASE 6.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/6.10/" class="md-nav__link">
6.10.
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.9/" class="md-nav__link">
6.9
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.8/" class="md-nav__link">
6.8
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.7/" class="md-nav__link">
6.7
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.6/" class="md-nav__link">
6.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.5/" class="md-nav__link">
6.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.4/" class="md-nav__link">
6.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.3/" class="md-nav__link">
6.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.2/" class="md-nav__link">
6.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.1/" class="md-nav__link">
6.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/6.0/" class="md-nav__link">
6.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_8" type="checkbox" id="__nav_11_8" >
<label class="md-nav__link" for="__nav_11_8" tabindex="0" aria-expanded="false">
RELEASE 5.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 5.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_8">
<span class="md-nav__icon md-icon"></span>
RELEASE 5.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/5.13/" class="md-nav__link">
5.13
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.12/" class="md-nav__link">
5.12
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.11/" class="md-nav__link">
5.11
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.10/" class="md-nav__link">
5.10.
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.9/" class="md-nav__link">
5.9
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.8/" class="md-nav__link">
5.8
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.6/" class="md-nav__link">
5.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.5/" class="md-nav__link">
5.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.3/" class="md-nav__link">
5.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.2/" class="md-nav__link">
5.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.1/" class="md-nav__link">
5.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/5.0/" class="md-nav__link">
5.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_9" type="checkbox" id="__nav_11_9" >
<label class="md-nav__link" for="__nav_11_9" tabindex="0" aria-expanded="false">
RELEASE 4.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 4.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_9">
<span class="md-nav__icon md-icon"></span>
RELEASE 4.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/4.1.10/" class="md-nav__link">
4.1.10
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.9/" class="md-nav__link">
4.1.9
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.8/" class="md-nav__link">
4.1.8
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.7/" class="md-nav__link">
4.1.7
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.6/" class="md-nav__link">
4.1.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.5/" class="md-nav__link">
4.1.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.4/" class="md-nav__link">
4.1.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.3/" class="md-nav__link">
4.1.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.2/" class="md-nav__link">
4.1.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.1/" class="md-nav__link">
4.1.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.1.0/" class="md-nav__link">
4.1.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.0.2/" class="md-nav__link">
4.0.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.0.1/" class="md-nav__link">
4.0.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/4.0.0/" class="md-nav__link">
4.0.0
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11_10" type="checkbox" id="__nav_11_10" >
<label class="md-nav__link" for="__nav_11_10" tabindex="0" aria-expanded="false">
RELEASE 3.x
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="RELEASE 3.x" data-md-level="2">
<label class="md-nav__title" for="__nav_11_10">
<span class="md-nav__icon md-icon"></span>
RELEASE 3.x
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../release-notes/3.13.2/" class="md-nav__link">
3.13.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.13.1/" class="md-nav__link">
3.13.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.13.0/" class="md-nav__link">
3.13.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.15/" class="md-nav__link">
3.12.15
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.14/" class="md-nav__link">
3.12.14
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.13/" class="md-nav__link">
3.12.13
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.12/" class="md-nav__link">
3.12.12
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.11/" class="md-nav__link">
3.12.11
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.10/" class="md-nav__link">
3.12.10
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.9/" class="md-nav__link">
3.12.9
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.8/" class="md-nav__link">
3.12.8
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.7/" class="md-nav__link">
3.12.7
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.6/" class="md-nav__link">
3.12.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.5/" class="md-nav__link">
3.12.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.4/" class="md-nav__link">
3.12.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.3/" class="md-nav__link">
3.12.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.2/" class="md-nav__link">
3.12.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.1/" class="md-nav__link">
3.12.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.12.0/" class="md-nav__link">
3.12.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.11.3/" class="md-nav__link">
3.11.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.11.2/" class="md-nav__link">
3.11.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.11.1/" class="md-nav__link">
3.11.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.11.0/" class="md-nav__link">
3.11.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.12/" class="md-nav__link">
3.10.12
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.11/" class="md-nav__link">
3.10.11
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.10/" class="md-nav__link">
3.10.10
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.9/" class="md-nav__link">
3.10.9
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.8/" class="md-nav__link">
3.10.8
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.7/" class="md-nav__link">
3.10.7
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.6/" class="md-nav__link">
3.10.6
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.5/" class="md-nav__link">
3.10.5
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.4/" class="md-nav__link">
3.10.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.3/" class="md-nav__link">
3.10.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.2/" class="md-nav__link">
3.10.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.1/" class="md-nav__link">
3.10.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.10.0/" class="md-nav__link">
3.10.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.9.0/" class="md-nav__link">
3.9.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.7.1/" class="md-nav__link">
3.7.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.7.0/" class="md-nav__link">
3.7.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.6.3/" class="md-nav__link">
3.6.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.6.0/" class="md-nav__link">
3.6.0
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.5.4/" class="md-nav__link">
3.5.4
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.5.3/" class="md-nav__link">
3.5.3
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.5.2/" class="md-nav__link">
3.5.2
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.5.1/" class="md-nav__link">
3.5.1
</a>
</li>
<li class="md-nav__item">
<a href="../../release-notes/3.5.0/" class="md-nav__link">
3.5.0
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_12" type="checkbox" id="__nav_12" >
<label class="md-nav__link" for="__nav_12" tabindex="0" aria-expanded="false">
GlusterFS Tools
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="GlusterFS Tools" data-md-level="1">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
GlusterFS Tools
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../GlusterFS-Tools/" class="md-nav__link">
GlusterFS Tools List
</a>
</li>
<li class="md-nav__item">
<a href="../../GlusterFS-Tools/glusterfind/" class="md-nav__link">
glusterfind
</a>
</li>
<li class="md-nav__item">
<a href="../../GlusterFS-Tools/gfind-missing-files/" class="md-nav__link">
gfind missing files
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_13" type="checkbox" id="__nav_13" >
<label class="md-nav__link" for="__nav_13" tabindex="0" aria-expanded="false">
Troubleshooting Guide
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Troubleshooting Guide" data-md-level="1">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
Troubleshooting Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Troubleshooting/" class="md-nav__link">
Index
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_13_2" type="checkbox" id="__nav_13_2" >
<label class="md-nav__link" for="__nav_13_2" tabindex="0" aria-expanded="false">
Components
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Components" data-md-level="2">
<label class="md-nav__title" for="__nav_13_2">
<span class="md-nav__icon md-icon"></span>
Components
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Troubleshooting/troubleshooting-glusterd/" class="md-nav__link">
Troubleshooting CLI and glusterd
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/troubleshooting-georep/" class="md-nav__link">
Troubleshooting Geo-replication
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/troubleshooting-gnfs/" class="md-nav__link">
Troubleshooting gNFS
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/troubleshooting-afr/" class="md-nav__link">
Troubleshooting Self-heal
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/resolving-splitbrain/" class="md-nav__link">
Troubleshooting Split-Brains
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/troubleshooting-filelocks/" class="md-nav__link">
Troubleshooting File Locks
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_13_3" type="checkbox" id="__nav_13_3" >
<label class="md-nav__link" for="__nav_13_3" tabindex="0" aria-expanded="false">
Issues
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Issues" data-md-level="2">
<label class="md-nav__title" for="__nav_13_3">
<span class="md-nav__icon md-icon"></span>
Issues
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Troubleshooting/troubleshooting-memory/" class="md-nav__link">
Debugging Memory Leaks
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/gluster-crash/" class="md-nav__link">
Crashes
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " data-md-toggle="__nav_13_4" type="checkbox" id="__nav_13_4" >
<label class="md-nav__link" for="__nav_13_4" tabindex="0" aria-expanded="false">
Tools
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" aria-label="Tools" data-md-level="2">
<label class="md-nav__title" for="__nav_13_4">
<span class="md-nav__icon md-icon"></span>
Tools
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../Troubleshooting/statedump/" class="md-nav__link">
Statedump
</a>
</li>
<li class="md-nav__item">
<a href="../../Troubleshooting/gfid-to-path/" class="md-nav__link">
gfid to path
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../glossary/" class="md-nav__link">
Glossary
</a>
</li>
<li class="md-nav__item">
<a href="../../google64817fdc11b2f6b6.html" class="md-nav__link">
Google Site Verification
</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="#initial-preparation" class="md-nav__link">
Initial preparation
</a>
<nav class="md-nav" aria-label="Initial preparation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#get-the-source" class="md-nav__link">
Get the source
</a>
</li>
<li class="md-nav__item">
<a href="#dev-system-setup" class="md-nav__link">
Dev system setup
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#actual-development" class="md-nav__link">
Actual development
</a>
<nav class="md-nav" aria-label="Actual development">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#create-a-development-branch" class="md-nav__link">
Create a development branch
</a>
</li>
<li class="md-nav__item">
<a href="#hack" class="md-nav__link">
Hack
</a>
</li>
<li class="md-nav__item">
<a href="#tests" class="md-nav__link">
Tests
</a>
</li>
<li class="md-nav__item">
<a href="#regression-test" class="md-nav__link">
Regression test
</a>
</li>
<li class="md-nav__item">
<a href="#commit-your-changes" class="md-nav__link">
Commit your changes
</a>
</li>
<li class="md-nav__item">
<a href="#submit-for-review" class="md-nav__link">
Submit for review
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#review-process" class="md-nav__link">
Review process
</a>
<nav class="md-nav" aria-label="Review process">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#automated-verification" class="md-nav__link">
Automated verification
</a>
</li>
<li class="md-nav__item">
<a href="#formal-review" class="md-nav__link">
Formal review
</a>
</li>
<li class="md-nav__item">
<a href="#resubmission" class="md-nav__link">
Resubmission
</a>
</li>
<li class="md-nav__item">
<a href="#verification" class="md-nav__link">
Verification
</a>
</li>
<li class="md-nav__item">
<a href="#acceptance" class="md-nav__link">
Acceptance
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="simplified-development-workflow-for-glusterfs">Simplified development workflow for GlusterFS</h1>
<p>This page gives a simplified model of the development workflow used by
the GlusterFS project. This will give the steps required to get a patch
accepted into the GlusterFS source.</p>
<p>Visit <a href="../Development-Workflow/">Development Work Flow</a> a more
detailed description of the workflow.</p>
<h2 id="initial-preparation">Initial preparation</h2>
<p>The GlusterFS development workflow revolves around
<a href="http://github.com/gluster/glusterfs/">GitHub</a> and
<a href="http://build.gluster.org">Jenkins</a>.
Using these both tools requires some initial preparation.</p>
<h3 id="get-the-source">Get the source</h3>
<p>Git clone the GlusterFS source using</p>
<pre class="no-copy"><code class="language-console">git clone git@github.com:${username}/glusterfs.git
cd glusterfs/
git remote add upstream git@github.com:gluster/glusterfs.git
</code></pre>
<p>This will clone the GlusterFS source into a subdirectory named glusterfs
with the devel branch checked out.</p>
<h3 id="dev-system-setup">Dev system setup</h3>
<p>You should install and setup Git on your development system. Use your
distribution specific package manger to install git. After installation
configure git. At the minimum, set a git user email. To set the email
do,</p>
<pre class="no-copy"><code class="language-console">git config --global user.name &lt;name&gt;
git config --global user.email &lt;email address&gt;
</code></pre>
<p>Next, install the build requirements for GlusterFS. Refer
<a href="../Building-GlusterFS/#Build Requirements">Building GlusterFS - Build Requirements</a>
for the actual requirements.</p>
<h2 id="actual-development">Actual development</h2>
<p>The commands in this section are to be run inside the glusterfs source
directory.</p>
<h3 id="create-a-development-branch">Create a development branch</h3>
<p>It is recommended to use separate local development branches for each
change you want to contribute to GlusterFS. To create a development
branch, first checkout the upstream branch you want to work on and
update it. More details on the upstream branching model for GlusterFS
can be found at <a href="../Development-Workflow/#branching-policy">Development Work Flow - Branching_policy</a>.
For example if you want to develop on the devel branch,</p>
<pre><code class="language-console">git checkout devel
git pull
</code></pre>
<p>Now, create a new branch from devel and switch to the new branch. It is
recommended to have descriptive branch names. Do,</p>
<pre class="no-copy"><code class="language-console">git branch issueNNNN
git checkout issueNNNN
</code></pre>
<p>or,</p>
<pre class="no-copy"><code class="language-console">git checkout -b issueNNNN upstream/main
</code></pre>
<p>to do both in one command. Here, NNNN is the Issue ID in glusterfs repository.</p>
<h3 id="hack">Hack</h3>
<p>Once you've switched to the development branch, you can perform the
actual code changes. <a href="../Building-GlusterFS/">Build</a> and test to
see if your changes work.</p>
<h3 id="tests">Tests</h3>
<p>Unless your changes are very minor and trivial, you should also add a
test for your change. Tests are used to ensure that the changes you did
are not broken inadvertently. More details on tests can be found at
<a href="../Development-Workflow/#test-cases">Development Workflow - Test cases</a>
and
<a href="../Development-Workflow/#regression-tests-and-test-cases">Development Workflow - Regression tests and test cases.</a></p>
<h3 id="regression-test">Regression test</h3>
<p>Once your change is working, locally you can run the regression test suite
to make sure you haven't broken anything. The regression test suite requires a
working GlusterFS installation and needs to be run as root. To run the
regression test suite, do</p>
<pre><code class="language-console">make install
./run-tests.sh
</code></pre>
<p>or, After uploading the patch The regression tests would be triggered
by a comment "/run regression" from developers in the @gluster organization.</p>
<h3 id="commit-your-changes">Commit your changes</h3>
<p>If you haven't broken anything, you can now commit your changes. First
identify the files that you modified/added/deleted using git-status and
stage these files.</p>
<pre class="no-copy"><code class="language-console">git status
git add &lt;list of modified files&gt;
</code></pre>
<p>Now, commit these changes using</p>
<pre><code class="language-console">git commit -s
</code></pre>
<p>Provide a meaningful commit message. The commit message policy is
described at <a href="../Development-Workflow/#commit-policy">Development Work Flow - Commit policy</a>.
It is essential that you commit with the '-s' option, which will
sign-off the commit with your configured email.</p>
<h3 id="submit-for-review">Submit for review</h3>
<p>To submit your change for review, run the rfc.sh script,</p>
<pre><code class="language-console">./rfc.sh
</code></pre>
<p>or</p>
<pre class="no-copy"><code class="language-console">git push origin HEAD:issueNNN
</code></pre>
<p>More details on the rfc.sh script are available at
<a href="../Development-Workflow/#rfc.sh">Development Work Flow - rfc.sh</a>.</p>
<h2 id="review-process">Review process</h2>
<p>Your change will now be reviewed by the GlusterFS maintainers and
component owners. You can follow and take part in the review process
on the change at the review url. The review process involves several steps.</p>
<p>To know component owners , you can check the "MAINTAINERS" file in root
of glusterfs code directory</p>
<h3 id="automated-verification">Automated verification</h3>
<p>Every change submitted to github triggers an initial automated
verification on <a href="http://build.gluster.org">jenkins</a> known as smoke tests.
The automated verification ensures that your change doesn't break the build
and has an associated bug-id. Developers get a chance to retrigger the smoke tests using "/recheck smoke" as comment.</p>
<p>More details can be found at <a href="../Development-Workflow/#auto-verification">Development Work Flow - Auto verification</a>.</p>
<h3 id="formal-review">Formal review</h3>
<p>Once the auto verification is successful, the component owners will
perform a formal review. If they are okay with your change, they will
give a positive review. If not they will give a negative review and add
comments on the reasons.</p>
<p>More information regarding the review qualifiers and disqualifiers is
available at <a href="../Development-Workflow/#submission-qualifiers">Development Work Flow - Submission Qualifiers</a>
and
<a href="../Development-Workflow/#submission-disqualifiers">Development Work Flow - Submission Disqualifiers</a>.</p>
<p>If your change gets a negative review, you will need to address the
comments and resubmit your change.</p>
<h3 id="resubmission">Resubmission</h3>
<p>Switch to your development branch and make new changes to address the
review comments. Build and test to see if the new changes are working.</p>
<p>Stage your changes and commit your new changes in new commits using,</p>
<pre><code class="language-console">git commit -a -s
</code></pre>
<p>Now you can resubmit the commit for review using the rfc.sh script or git push.</p>
<p>The formal review process could take a long time. To increase chances
for a speedy review, you can add the component owners as reviewers on
the pull request. This will ensure they notice the change. The
list of component owners can be found in the MAINTAINERS file present in
the GlusterFS source</p>
<h3 id="verification">Verification</h3>
<p>After a component owner has given a positive review, a developer will
run the regression test suite on your change to verify that your change
works and hasn't broken anything. This verification is done with the
help of jenkins.</p>
<p>If the verification fails, you will need to make necessary changes and
resubmit an updated commit for review.</p>
<h3 id="acceptance">Acceptance</h3>
<p>After successful verification, a maintainer will Squash and merge
your change into the upstream GlusterFS source. Your change
will now be available in the upstream git repo for everyone to use.</p>
</article>
</div>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" hidden>
<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 8v12Z"/></svg>
Back to top
</a>
</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": ["navigation.top", "navigation.instant", "navigation.tracking"], "search": "../../assets/javascripts/workers/search.e5c33ebb.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"}}</script>
<script src="../../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="../../js/custom-features.js"></script>
</body>
</html>