Skip to content

rdev0x1/echogit

Repository files navigation

echogit: Localized Data Synchronization via Git

The way i work is everything is a git project. Except for the music projects, photos projects and video that are rsync projects. You get it, almost everything are texts files inside git projects :

  • personal notes: markdown projects organized in various folders
  • cv: LaTeX project
  • /etc folder: managed by etckeeper
  • ~/.config : git project
  • contacts: vcf files stored in various folders, with one folder pear category
  • todo: managed by todo.txt (text files)
  • password: managed by pass program (text files)
  • etc

I also don't want to store my personal data in the cloud: I don't need to do so as I have enough devices for redundancy. To make things easier, i did this python project and I share it on MIT license, even if i doubt that there will be others tech user that would find convenient the way I manage my files.

Description:

Echogit is designed for synchronization of data across multiple devices without the need for an internet connection. Utilizing the robustness of git and the security of SSH, it offers a decentralized approach to manage and sync various types of data.

Core Features:

  • Local Synchronization: Synchronize data across your devices using your local network, reducing reliance on cloud services.
  • Git-Based: Leverages git's version control capabilities for efficient and reliable data tracking.
  • SSH Security: Employs SSH for secure data transfer, ensuring your information remains private and secure.

Targeted users:

Tech-savvy individuals who prefer local data management, are comfortable with git and SSH.

Requirements

Echogit uses SSH and Git to synchronize projects between peers. To sync, you need to ensure that:

  1. You have set up SSH key authentication between your local machine and each peer. This avoids the need for password entry during synchronization.

You can copy your SSH public key to a peer by running:

ssh-copy-id user@peer_host

Usage

Synchronizing Projects

Use the following command to sync a folder:

echogit sync [folder]

Listing Projects

echogit list [folder] --remote -p peer_name

Running in TUI Mode

echogit tui

Android support

There is an Android version called echogit-mobile. It provides a UI to control the normal Echogit application through termux and the Termux API. This allows you to manage synchronization on Android devices, using the same functionality available on the desktop version.

Tests

Run the test with:

> pytest

Plugins (optional)

Echogit supports a plugin system for custom behavior during scan, clone, sync, and error events. Plugins live in a directory you configure (default: '~/.config/echogit/plugins') and must expose a 'plugin.py' with a 'register()' function.

Example layout:

~/.config/echogit/plugins/
├── my_metadata_plugin/
│   └── plugin.py
└── notify_rss/
    └── plugin.py

To enable plugins, add these lines to your '~/.config/echogit/config.ini' under '[DEFAULT]':

plugin_dir = ~/.config/echogit/plugins
plugins = my_metadata_plugin, notify_rss

Then, when you run any echogit command, these plugins will be loaded automatically at startup.

Note: The built-in metadata-symlink plugin demonstrates how to manage '.echogit' folders via symlinks. Because externalizing metadata can introduce its own complexity (broken links, path mismatches), you might prefer keeping your metadata files versioned directly inside each Git project. The metadata plugin is available for power users but is entirely optional.

About

A tool for local synchronization of data using Git

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published