Skip to main content

A Modern way to sync files

Project description


HoloSync

HoloSync is a flexible Python utility for syncing code files (skills, scripts, or any directory content) from a folder in a GitHub repository to your local directory. Supports public and private repos, selective file syncing, local-over-remote file protection, and easy integration.


Features

  • Sync entire folders or select specific files.
  • Skip or override existing local files.
  • Supports private repos (via GitHub token).
  • Branch selection—sync from any branch, not just master/main.
  • Simple, readable code—ready to drop into any project.
  • Preserves your local changes by default.

Installation

Simply copy HoloSync into your project, or package as you like.

Dependencies:

  • Python 3.10+
  • requests

Usage

1. Basic Example (Sync All Files)

from HoloSync import HoloSync

syncer = HoloSync(
    githubRepo='TristanMcBrideSr/SkillForge',
    repoFolder='SkillForge',
    syncDir='./skills'
)
syncer.startSync()

2. Sync Only Specific Files

syncer = HoloSync(
    githubRepo='your-username/your-repo',
    repoFolder='MySkills',
    syncDir='./skills'
)
# Only sync 'weather.py' and 'research.py'
syncer.startSync(syncList=['weather', 'research'])

3. Override Existing Local Files

syncer = HoloSync(
    githubRepo='TristanMcBrideSr/SkillForge',
    repoFolder='SkillForge',
    syncDir='./skills'
)
# Force override any local file with the downloaded version
syncer.startSync(override=True)

4. Sync From a Private Repo

syncer = HoloSync(
    githubRepo='your-username/private-repo',
    repoFolder='MySkills',
    syncDir='./skills'
)
# Provide a GitHub token (classic or fine-grained with repo read access)
syncer.startSync(githubToken='YOUR_GITHUB_TOKEN')

5. Sync From a Different Branch

syncer = HoloSync(
    githubRepo='TristanMcBrideSr/SkillForge',
    repoFolder='SkillForge',
    syncDir='./skills'
)
syncer.startSync(branch='dev')  # Sync from 'dev' branch

Parameters

HoloSync constructor

  • githubRepo: GitHub repo in the form "owner/repo" (required)
  • repoFolder: Folder inside the repo to sync from (required)
  • syncDir: Local directory to sync files to (required)

startSync(**kwargs)

  • skillList (list): Only these files will be synced (by name, .py optional).
  • override (bool): If True, always overwrite existing local files.
  • githubToken (str): Personal GitHub token for private repo access.
  • branch (str): Branch to sync from (default "master").

How It Works

  • Downloads a zip of the specified repo+branch.

  • Extracts just the folder you specify.

  • Copies each file:

    • By default: only new files are copied (existing files are untouched).
    • With override=True: always overwrites local files.
  • Lets you pick which files to sync, or sync all.


Error Handling

  • Raises if folders/files are missing.
  • Logs sync actions and errors to Python logger.
  • Skips files that already exist locally, unless override is set.

Example: Complete Workflow

syncer = HoloSync(
    githubRepo='my-org/myrepo',
    repoFolder='skills',
    syncDir='./skills'
)
syncer.startSync(
    syncList=['my_skill', 'other_skill.py'],
    override=False,
    githubToken=os.getenv('GITHUB_TOKEN'), # If syncing from a private repo else you can omit this
    branch='main'
)

Code Examples

You can find code examples on my GitHub repository.


License

This project is licensed under the Apache License, Version 2.0. Copyright 2025 Tristan McBride Sr.


Acknowledgements

Project by:

  • Tristan McBride Sr.
  • Sybil

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

holosync-0.1.0.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

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

holosync-0.1.0-py3-none-any.whl (3.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: holosync-0.1.0.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for holosync-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b5eca03f50f1c47237692b1ed591e70b4919604866a04a9070c8fcd7204d6100
MD5 4b93f752f6fcfdbe7117b8d25e7cb835
BLAKE2b-256 41156f7c351e1d4ea310e6c7f87f70213ac06977249ec14821c9e6830053dd25

See more details on using hashes here.

File details

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

File metadata

  • Download URL: holosync-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for holosync-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49e4451a076e7fe1ca61ceb2d3688a5410cff55e01449195f46e3c1adba28e75
MD5 d2ead7a4d7c3a208c589f6a9aa870c47
BLAKE2b-256 9a387af3c3dee4f86cf4aed2d2c17a4c3653ee5cb8db654371176efcac14004c

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