config.el --- manage and sync your Emacs configuration

A package for visiting, versioning, and syncing your Emacs
configuration across machines using Git.

Available commands:

  M-x config-visit
  M-x config-visit-early-init
  M-x config-list-packages
  M-x config-list-non-packages
  M-x config-install-package
  M-x config-install-all-packages
  M-x config-delete-package
  M-x config-delete-all-packages
  M-x config-visit-package
  M-x config-vcs
  M-x config-vcs-setup
  M-x config-vcs-add-files
  M-x config-clone
  M-x config-remote
  M-x config-diff
  M-x config-commit
  M-x config-push
  M-x config-pull


INSTALLATION

Add the wkzelpa package archive to your Emacs configuration:

  (add-to-list 'package-archives
               '("wkzelpa" . "https://elpa.wkz-devel.org/packages/") t)

Then refresh the package list:

  M-x package-refresh-contents


Install manually:

  M-x package-install RET config RET


Install with use-package and the :vc keyword (Emacs 30+):

  (use-package config
    :vc "https://git.wkz-devel.org/w96k/config.el.git")


WORKFLOW

  If you keep your Emacs configuration in a Git repository, config.el
  can clone, track, and sync it across machines.

  Set up a new machine by cloning your dotfiles repo and linking it
  into your Emacs configuration:

    1. M-x config-clone
         Enter the remote URL (e.g.
         https://git.example.com/you/emacs-config.git) and a target
         directory (e.g. ~/projects/emacs-config).  For private HTTPS
         repos you will be prompted for username and password.

    2. M-x config-vcs-setup
         This creates symlinks from your Emacs directory to the
         cloned repository so that Emacs uses the versioned files.
         Since the repo already exists, it skips repo initialization.

  Start a brand-new config repo on your first machine:

    1. M-x config-vcs-setup
         Choose a directory (e.g. ~/projects/emacs-config) and a VCS
         backend (e.g. Git).  This initializes the repo, copies your
         existing config files into it, and replaces them with
         symlinks.

    2. M-x config-remote
         Set the remote origin URL so you can push to your Git host.

  Add more files to the repo (copies the file and replaces the
  original with a symlink):

    M-x config-vcs-add-files

  Day-to-day:

    M-x config-pull          Get latest changes from the remote
    M-x config-visit         Edit your init file
    M-x config-commit        Stage and commit your changes
    M-x config-push          Push commits to the remote

REQUIREMENTS

  Emacs 27.1 or later


DEVELOPMENT

  Byte-compile:

    make bytecompile

  Run tests:

    make test

  Byte-compile and test:

    make check

  Clean compiled files:

    make clean


NOTE

  VCS operations are built on vc.el and support any backend it
  provides (Git, Hg, Bzr, etc.).  However, the test suite runs
  against Git, so Git support is first-class while other backends
  are best-effort.


LICENSE

  GNU General Public License v3
