LinuxCommandLibrary

yadm

Manage dotfiles across multiple computers

TLDR

Override the yadm directory. yadm stores its configurations relative to this directory

$ yadm --yadm-dir
copy

Override the yadm data directory: yadm stores its data relative to this directory
$ yadm --yadm-data
copy

Override the location of the yadm repository
$ yadm --yadm-repo
copy

Override the location of the yadm configuration file
$ yadm --yadm-config
copy

Override the location of the yadm encryption configuration
$ yadm --yadm-encrypt
copy

Override the location of the yadm encrypted files archive
$ yadm --yadm-archive
copy

Override the location of the yadm bootstrap program
$ yadm --yadm-bootstrap
copy

SYNOPSIS

yadm [options] command [command-options]

PARAMETERS

--help
    Show help message and exit

--version
    Show version information and exit

--verbose
    Enable verbose output

--profile profile_name
    Specify a profile to use

--config config_file
    Specify a different config file

init
    Initialize a new yadm repository

clone repository_url
    Clone an existing yadm repository

add file...
    Add files to the yadm repository

remove file...
    Remove files from the yadm repository

checkout
    Checkout files from the yadm repository

push
    Push changes to the remote repository

pull
    Pull changes from the remote repository

status
    Show the status of the yadm repository

link
    Link files to system

DESCRIPTION

yadm is a tool for managing dotfiles using a Git repository. It simplifies the process of keeping your configuration files (like `.bashrc`, `.vimrc`, etc.) synchronized across multiple machines. Instead of manually copying or creating symlinks, yadm automates the process by creating a bare Git repository in your home directory. This allows you to version control your dotfiles, track changes, and easily deploy them to new systems. yadm manages conflicting files by creating symlinks from files stored in the repository to the locations outside the repository. It supports different profiles (using the `--profile` option) to handle machine-specific configurations. This enables users to maintain distinct settings for different environments. yadm also provides features for bootstrapping a new machine by cloning the dotfiles repository and setting up the necessary symlinks, making it easy to get a consistent configuration on any system. The `yadm` command is a wrapper around common `git` commands to achieve desired functionality.

CAVEATS

yadm creates a bare Git repository in your home directory. Backups of your dotfiles are highly recommended before running the init command.
It is crucial to understand how bare Git repositories work to avoid unintended consequences.

<B>PROFILES</B>

Profiles enable you to maintain different configurations for different machines. You can create profile-specific files (e.g., `~/.bashrc.d/bashrc.home`) and then activate the appropriate profile using the `--profile` option. This is useful for managing settings that are specific to a particular environment.

<B>BOOTSTRAPPING</B>

yadm simplifies the process of setting up a new machine with your dotfiles. By using `yadm clone`, you can quickly clone your dotfiles repository and create the necessary symlinks. This ensures that your new system is configured consistently with your other environments, saving you time and effort.

HISTORY

yadm was created to simplify the management of dotfiles, addressing the complexities of manually tracking and syncing configuration files across multiple machines. It builds upon the power of Git for version control and provides a convenient wrapper around common Git operations, tailored for dotfile management. The project evolved to include features like profiles to support machine-specific configurations and automated bootstrapping for new systems, making it a robust and user-friendly solution for maintaining consistent dotfile setups.

SEE ALSO

git(1), rsync(1), cp(1)

Copied to clipboard