Skip to main content

Quarto GitHub Pages branch graft tool

Project description

quarto-graft

A Python CLI for multi-author Quarto documentation using git worktrees

Quarto Graft is a command-line tool that lets multiple authors collaborate on a single Quarto website without merge conflicts. Each author works in an isolated git branch (a "graft"), and the main branch (the "trunk") automatically assembles everything into one unified, searchable site.

Key Concepts

Trunk

The trunk is your main branch and the foundation of your Quarto site. It defines:

  • The overall site structure (navbar, sidebar, styling)
  • Collars: named attachment points where grafts connect (e.g., "main", "notes", "bugs")
  • Site configuration and templates

Grafts

Grafts are isolated git branches where authors work independently. Each graft:

  • Runs in its own git worktree with its own dependencies
  • Can use any language or environment (Python, R, Julia, etc.)
  • Specifies which collar it attaches to
  • Gets automatically included in the trunk's navigation

Collars

Collars are attachment points in the trunk's _quarto.yaml that organize grafts into sections:

sidebar:
  contents:
    - section: My Grafts
      contents:
        - _GRAFT_COLLAR: main
    - section: Notes
      contents:
        - _GRAFT_COLLAR: notes

Templates

Everything is template-based and customizable:

  • Trunk templates: Define your site's look, feel, and structure
  • Graft templates: Provide starter content for different types of contributions
  • Templates use Jinja2 for configuration
  • Create custom templates for your organization

Why Use Quarto Graft?

Traditional multi-author collaboration problems:

  • Merge conflicts on main
  • Shared dependencies causing version conflicts
  • One author's broken code blocks everyone
  • Can't use different languages/tools per section

Quarto Graft solutions:

  • ✅ Each author owns a branch = zero merge conflicts
  • ✅ Each graft has independent dependencies
  • ✅ Broken grafts use last-good fallbacks with warnings
  • ✅ Mix Python, R, Julia, or any language per graft
  • ✅ Trunk never executes contributor code, only renders artifacts
  • ✅ Organize content with multiple collars (sections)

What You Get

  • 🚀 Python CLI (quarto-graft) for project management
  • 📦 Customizable trunk and graft templates
  • 🔧 Git worktree-based isolation
  • 🎯 Multiple collar attachment points
  • 🔄 Automatic navigation updates
  • 💾 Last-good build fallbacks
  • 🔍 Full-site search across all grafts
  • ⚡ Fast trunk builds (no code execution)

Who This Is For

  • Multi-author books and research publications
  • Data science teams (quant research, education platforms)
  • Internal documentation portals
  • Open source projects with distributed contributors
  • Anyone managing versioned, multi-contributor content

Quick Start

# Install
pip install quarto-graft

# Initialize a trunk (main site)
quarto-graft trunk init my-project

# Create a graft (contributor branch)
cd my-project
quarto-graft graft create demo --collar main

# Build and preview
quarto-graft build
quarto preview

License

Released under the MIT License. Free to use, modify, and redistribute with attribution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quarto_graft-0.0.1.tar.gz (742.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quarto_graft-0.0.1-py3-none-any.whl (766.7 kB view details)

Uploaded Python 3

File details

Details for the file quarto_graft-0.0.1.tar.gz.

File metadata

  • Download URL: quarto_graft-0.0.1.tar.gz
  • Upload date:
  • Size: 742.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quarto_graft-0.0.1.tar.gz
Algorithm Hash digest
SHA256 210749645f095ec5e45df051d5cd8d741347a1b8fce9736874696a2748a7b2e7
MD5 636b70e410674d5b5a49bb4786adf6c0
BLAKE2b-256 5d7ed5ae20c0d09d35f24f4770f8ed3fe532578cd143d7096e7ba0a4d17f19fc

See more details on using hashes here.

File details

Details for the file quarto_graft-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: quarto_graft-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 766.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quarto_graft-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9990b6a77bcb1bf66555892d5ce8f2cc9b081ff0615635fc3f9954194c19fc56
MD5 1a3942e203c3392daa06130093987c06
BLAKE2b-256 ac261ef00b45e745c829f3fccf217c9413dd183fc17dc3e379bbc1eda2bc1f13

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page