Skip to main content

Share documentation files between Git repositories

Project description

tlc-shared-docs

Share documentation files between Git repositories. Pull files from a remote repo into your local docs tree, or push local files back — all configured through a single shared.json.

Installation

pip install tlc-shared-docs

Quick Start

1. Create the config

Create docs/source/shared/shared.json in your project:

{
  "source_repo": {
    "url": "https://github.com/your-org/shared-docs.git",
    "branch": "main"
  },
  "shared_files": [
    {
      "remote_path": "guides/getting-started.md",
      "local_path": "getting-started.md",
      "action": "get"
    },
    {
      "remote_path": "guides/api-reference.md",
      "local_path": "api-reference.md",
      "action": "push"
    }
  ]
}

2. Pull shared files

tlc-shared-docs get

This fetches every file with "action": "get" from the remote repo and saves it locally.

3. Push local files

tlc-shared-docs push

This pushes every file with "action": "push" to the remote repo. If a remote file has changed since you last pulled, the command aborts with a conflict warning. Use --force to overwrite:

tlc-shared-docs push --force

4. Preview changes

Both commands support --dry-run:

tlc-shared-docs get --dry-run
tlc-shared-docs push --dry-run

Configuration Reference

shared.json

Field Description
source_repo.url Git clone URL for the shared repo
source_repo.branch Branch to pull from / push to (default: main)
shared_files[].remote_path Path to the file in the remote repo (supports glob patterns for get)
shared_files[].local_path Local destination path (relative to docs/source/shared/)
shared_files[].action get (pull from remote) or push (push to remote). Default: get

Wildcard / glob patterns

The remote_path field supports glob patterns for get actions, allowing you to fetch multiple files with a single entry:

{
  "remote_path": "stories/**/*",
  "local_path": "stories",
  "action": "get"
}

Supported patterns:

  • * — matches any file in a single directory (e.g., docs/*.md)
  • **/* — matches files recursively across directories (e.g., stories/**/*)
  • ? — matches a single character (e.g., chapter?.md)
  • [seq] — matches any character in the set (e.g., file[0-9].txt)

When using globs, local_path acts as the destination directory. Matched files preserve their directory structure relative to the non-glob prefix of the pattern. For example:

Pattern Matched remote file local_path Written to
stories/**/* stories/ch1/intro.md mystories mystories/ch1/intro.md
Global/*.gitignore Global/Vim.gitignore ignores ignores/Vim.gitignore
*.md README.md docs docs/README.md

Local path resolution

  • Relative paths (e.g., guide.md) resolve relative to docs/source/shared/.
  • Absolute paths (starting with /, e.g., /src/docs/guide.md) resolve relative to the project root.

Git ignore

On first run, tlc-shared-docs get creates docs/source/shared/ with a .gitignore that tracks only shared.json — all fetched files are ignored so they don't bloat your repo.

The auto-generated docs/source/shared/.gitignore contains:

# Auto-generated by tlc-shared-docs
# Ignore all fetched shared files; only track the config
*
!.gitignore
!shared.json

This means:

  • shared.json is committed to your repo (so teammates share the same config)
  • All fetched/pushed doc files are ignored locally
  • The .gitignore itself is also tracked

Requirements

  • Python 3.9+
  • Git installed and on PATH
  • Valid Git credentials for the source repo

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

tlc_shared_docs-0.1.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

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

tlc_shared_docs-0.1.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file tlc_shared_docs-0.1.0.tar.gz.

File metadata

  • Download URL: tlc_shared_docs-0.1.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.6 Windows/11

File hashes

Hashes for tlc_shared_docs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 80b418141faef51f954b73abd9021286aae3fc6223722d68007ef1746edb8dfa
MD5 f0bb65b6f53f9704ba52c215b5fc57b7
BLAKE2b-256 620eb71ed5164cf6978ed43f88464a459c3fdd07704706713354c36515c6599d

See more details on using hashes here.

File details

Details for the file tlc_shared_docs-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tlc_shared_docs-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.6 Windows/11

File hashes

Hashes for tlc_shared_docs-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db7d8b754e28220c46b73b1e68d7188e6987b5cd1124df9222b9c279e61113a0
MD5 6fd97409f3f30b56f34d905089501583
BLAKE2b-256 46b34cad932ae0ad72bd57da360eed3806dd245e5e557ed36f0e52b238868798

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