Yet Another Dotfiles Manager
Go to file
Erik Flodin f45e66d4da
Rework clone
Instead of doing work to find the default branch just to be able to
set up the repository before doing a fetch, do a "git clone" and let
git handle it.

Use -c core.sharedrepository=0600 to get the same result as
--shared=0600 passed to init.

Use --separate-git-dir to get the git directory in $YADM_REPO. Use a
temporary dir as work tree and remove it right after the clone is
done.

When the clone is done, iterate over all missing files in $YADM_WORK
and perform a checkout. If local files exists that differ compared
with the cloned ones the local files are left intact and the user is
instructed to deal with the conflicts.
2021-01-08 22:05:46 +01:00
.github Run "make test" in github workflow 2020-12-30 12:54:13 +01:00
completion Rework zsh completion fallback 2021-01-06 20:36:07 +01:00
contrib Update version number and update documentation 2021-01-07 09:24:11 -06:00
test Rework clone 2021-01-08 22:05:46 +01:00
.gitattributes Force `eol=lf` 2017-01-09 16:52:01 -06:00
.gitignore Use a common target to pick yadm to test in test/scripthost 2020-12-30 12:01:40 +01:00
CHANGES Update version number and update documentation 2021-01-07 10:49:26 -06:00
CONTRIBUTORS Update version number and update documentation 2021-01-07 09:24:11 -06:00
LICENSE Update GPLv3 LICENSE information 2019-03-14 18:25:02 -05:00
Makefile Use local version of yadm by default (in testhost/scripthost) 2021-01-02 00:05:00 +01:00
README.md Update version number and update documentation 2021-01-07 10:49:26 -06:00
bootstrap Standardize on &> when not appending output 2019-12-04 22:39:00 -06:00
pylintrc Move min-similarity-lines to new section 2019-10-02 15:16:10 -05:00
pytest.ini Mark deprecated tests 2019-10-02 15:16:09 -05:00
yadm Rework clone 2021-01-08 22:05:46 +01:00
yadm.1 Update version number and update documentation 2021-01-07 10:49:26 -06:00
yadm.md Update version number and update documentation 2021-01-07 09:24:11 -06:00
yadm.spec Update version number and update documentation 2021-01-07 10:49:26 -06:00

README.md

yadm - Yet Another Dotfiles Manager

Latest Version Homebrew Version OBS Version Arch Version License
Master Update Develop Update Website Update
Master Status Develop Status GH Pages Status Dev Pages Status

https://yadm.io/

yadm is a tool for managing dotfiles.

  • Based on Git, with full range of Git's features
  • Supports system-specific alternative files or templated files
  • Encryption of private data using GnuPG, OpenSSL, transcrypt, or git-crypt
  • Customizable initialization (bootstrapping)
  • Customizable hooks for before and after any operation

Complete features, usage, examples and installation instructions can be found on the yadm.io website.

A very quick tour

# Initialize a new repository
yadm init

# Clone an existing repository
yadm clone <url>

# Add files/changes
yadm add <important file>
yadm commit

# Encrypt your ssh key
echo '.ssh/id_rsa' > ~/.config/yadm/encrypt
yadm encrypt

# Later, decrypt your ssh key
yadm decrypt

# Create different files for Linux vs MacOS
yadm add path/file.cfg##os.Linux
yadm add path/file.cfg##os.Darwin

If you enjoy using yadm, consider adding a star to the repository on GitHub. The star count helps others discover yadm.