YADM(1) General Commands Manual YADM(1) (NAME) yadm - (SYNOPSIS) yadm command [options] yadm git-command-or-alias [options] yadm init [-f] [-w dir] yadm clone url [-f] [-w dir] [-b branch] [--bootstrap] [--no-bootstrap] yadm config name [value] yadm config [-e] yadm list [-a] yadm bootstrap yadm encrypt yadm decrypt [-l] yadm alt yadm perms yadm enter [command] yadm git-crypt [options] yadm transcrypt [options] yadm upgrade [-f] yadm introspect category (DESCRIPTION) yadm Git . yadm . yadm . (COMMANDS) git-command git-alias yadm git(1) . Git yadm . Git work-tree ( $HOME) . git add commit push pull . config . gitconfig ( ). alt ALTERNATES TEMPLATES . yadm . yadm.auto-alt "false" . bootstrap $HOME/.config/yadm/bootstrap . clone url . HEAD (check out) . work-tree . $HOME/.local/share/yadm/repo.git . $HOME work-tree -w. -fyadm. HEAD -b. yadm bootstrap ( ). --bootstrap --no-bootstrap bootstrap . config yadm . git-config(1) . CONFIGURATION . decrypt $HOME/.local/share/yadm/archive . work-tree ( $HOME) . -l . encrypt $HOME/.config/yadm/encrypt . ENCRYPTION . enter Git . ( "exit"). yadm "git" . Git tig vim-fugitive git-cola . "enter" Git . Emacs Tramp Magit : (add-to-list 'tramp-methods '("yadm" (tramp-login-program "yadm") (tramp-login-args (("enter"))) (tramp-login-env (("SHELL") ("/bin/sh"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-args ("-c")))) (magit- status "/yadm::") . git-crypt options git-crypt git-crypt yadm . git-crypt git . https://github.com/AGWA/git-crypt . gitconfig git config. yadm config yadm . status . yadm . Git ( ) . yadm gitconfig --unset status.showUntrackedFiles help yadm. init dotfile. $HOME/.local/share/yadm/repo.git . $HOME work-tree -w . -f yadm . list yadm. -a . . introspect category yadm. : commands configs repo switches. (introspection) . perms PERMISSIONS. yadm . yadm.auto-perms "false" . transcrypt options transcrypt transcrypt yadm . transcrypt git . https://github.com/elasticdog/transcrypt . upgrade yadm . . "yadm upgrade" . yadm . . yadm (index) (stage) . (submodules) de-initialize re- initialize . de-initialize . . -f "upgrade" de-initialization . "yadm upgrade" "yadm status" (commit) . https://yadm.io/docs/upgrade_from_2 . version yadm..SH " (OPTIONS)" yadm . (FILES) . () . (alias) yadm . : alias yadm='yadm --yadm-repo /alternate/path/to/repo' . . -Y, --yadm-dir yadm. yadm . --yadm-data yadm. yadm . --yadm-repo yadm. --yadm-config yadm. --yadm-encrypt yadm. --yadm-archive yadm. --yadm-bootstrap bootstrap yadm. (CONFIGURATION) yadm $HOME/.config/yadm/config . git-config(1) . yadm config ( git-config ) . (alternates) : yadm config yadm.auto-alt false : yadm.alt-copy "true" () . . yadm.auto-alt ALTERNATES. "yadm alt" . . yadm.auto-exclude (template) $HOME/.config/yadm/encrypt. . yadm.auto-perms PERMISSIONS. yadm perms . . yadm.auto-private-dirs PERMISSIONS. yadm.cipher encrypt/decrypt . "gpg" "openssl" . "gpg" . ENCRYPTION . yadm.git-program "git". "git" $PATH . yadm.gpg-perms $HOME/.gnupg/*. . yadm.gpg-program "gpg". "gpg" $PATH . yadm.gpg-recipient / gpg. (key ID) . . ( ). . "ASK" gpg . ENCRYPTION . . yadm.openssl-ciphername (cipher) openssl . "aes-256-cbc" . yadm.openssl-old openssl pbkdf2 . . "true" openssl openssl . . yadm.openssl-program "openssl". "openssl" $PATH . yadm.ssh-perms $HOME/.ssh/*. . <<>> (local) $HOME/.config/yadm/config . local.class . . : yadm config --add local.class local.arch (architecture) . local.hostname (hostname) . local.os (OS) . local.user (user) . local.distro (distro) . local.distro-family (distro family) ..SH " (ALTERNATES)" . yadm (symbolic link) . . <<##>> . ##[,,...] / (attribute/value) . <<>> . . <<~>> / (false) . [~][.] : (case-insensitive) . : template, t (template processor) . TEMPLATES . user, u . : id -u -n. hostname, h (short hostname) . uname -n . class, c local.class . (Class) yadm config local.class . local.class CONFIGURATION . distro_family, f . ID_LIKE /etc/os-release ( ID ID_LIKE ) . distro, d . lsb_release -si ID /etc/os-release . os, o . uname -s . arch, a . uname -m . default . extension, e <<>> . (highlight) . : <> uname <> <> . . <<>> . yadm $HOME/.config/yadm/encrypt . <<>> . (template) . . ( <<~>>) () . . $HOME/.config/yadm/alt . . . yadm : - $HOME/path/example.txt##default - $HOME/path/example.txt##class.Work - $HOME/path/example.txt##class.Work,~os.Darwin - $HOME/path/example.txt##os.Darwin - $HOME/path/example.txt##os.Darwin,hostname.host1 - $HOME/path/example.txt##os.Darwin,hostname.host2 - $HOME/path/example.txt##os.Linux - $HOME/path/example.txt##os.Linux,hostname.host1 - $HOME/path/example.txt##os.Linux,hostname.host2 Macbook <> yadm : $HOME/path/example.txt -> $HOME/path/example.txt##os.Darwin,hostname.host2 Macbook <> yadm : $HOME/path/example.txt -> $HOME/path/example.txt##os.Darwin hostname . Linux <> : $HOME/path/example.txt -> $HOME/path/example.txt##os.Linux Solaris : $HOME/path/example.txt -> $HOME/path/example.txt##default Macbook class <> : $HOME/path/example.txt -> $HOME/path/example.txt##class.Work class os . class <> Windows Subsystem for Linux os WSL : $HOME/path/example.txt -> $HOME/path/example.txt##class.Work,~os.Darwin <<##default>> . yadm . yadm . yadm.auto-alt . yadm alt . info/exclude . yadm.auto-exclude . Class ( ) . class class local.class . yadm yadm config . class <> : yadm config local.class Work architecture os hostname user distro distro_family local.arch local.os local.hostname local.user local.distro local.distro-family (override) ..SH " (TEMPLATES)" <<##>> . : default yadm . Jinja . awk *nix . <> ( <<##template>>). : if (case-insensitive) . ESH ESH POSIX . . : <% yadm config mysection.myconfig %> ESH <> . j2cli Jinja j2cli <> <> . envtpl Jinja envtpl <> <> . : <> j2cli envtpl ( ) . . : Default Jinja or ESH ------------- ------------- ---------------------------- yadm.arch YADM_ARCH uname -m yadm.class YADM_CLASS yadm.classes YADM_CLASSES yadm.distro YADM_DISTRO lsb_release -si yadm.distro_family YADM_DISTRO_FAMILY ID_LIKE /etc/os- release yadm.filename yadm.hostname YADM_HOSTNAME uname -n ( ) yadm.os YADM_OS uname -s yadm.source YADM_SOURCE yadm.user YADM_USER id -u -n env.VAR VAR : <> <> uname <> . : lsb_release DISTRO ID /etc/os-release . : whatever##template {% if yadm.user == "harvey" %} config={{yadm.class}}-{{yadm.os}} {% else %} config=dev-whatever {% include "whatever.extra" %} {% endif %} <> whatever : config=work-Linux ( whatever.extra admin=false ) : config=dev-whatever admin=false Jinja whatever##template.j2 : {% if YADM_USER == 'harvey' -%} config={{YADM_CLASS}}-{{YADM_OS}} {% else -%} config=dev-whatever {% include 'whatever.extra' %} {% endif -%} ESH whatever##template.esh : <% if [ "$YADM_USER" = "harvey" ]; then -%> config=<%= $YADM_CLASS %>-<%= $YADM_OS %> <% else -%> config=dev-whatever <%+ whatever.extra %> <% fi -%> info/exclude . yadm.auto-exclude ..SH " (ENCRYPTION)" SSH GPG . (plain text) Git . yadm Git . . gpg(1) openssl(1) . gpg yadm.cipher openssl . ( ) $HOME/.config/yadm/encrypt . work-tree ( $HOME) . : .ssh/*.key .gnupg/*.gpg (* ? [) . "**" . (tilde) . . . <> . yadm encrypt . $HOME/.local/share/yadm/archive . <> <> yadm . yadm decrypt . PERMISSIONS . yadm.gpg-recipient . : . $HOME/.config/yadm/encrypt yadm encrypt info/exclude . . yadm.auto-exclude . transcrypt git-crypt transcrypt git-crypt . yadm transcrypt yadm git-crypt . git . : - https://github.com/elasticdog/transcrypt - https://github.com/AGWA/git-crypt.SH " (PERMISSIONS)" Git (check out) umask . yadm . <<>> (group) <<>> (others) : - $HOME/.local/share/yadm/archive - $HOME/.config/yadm/encrypt - SSH .ssh/* - GPG .gnupg/* yadm . yadm.auto-perms . yadm perms . .ssh yadm.ssh-perms . .gnupg yadm.gpg-perms . clone .ssh .gnupg clone yadm work-tree 0700 . Git .ssh .gnupg yadm Git 0700 . yadm.auto-private-dirs . (HOOKS) yadm . <<>> (hook) . yadm $HOME/.config/yadm/hooks . pre_ post_ . yadm pull post_pull . . pre_ yadm yadm . pre_commit yadm commit . (short-circuit) pre_ . : YADM_HOOK_COMMAND YADM_HOOK_DATA yadm YADM_HOOK_DIR yadm YADM_HOOK_EXIT yadm YADM_HOOK_FULL_COMMAND yadm ( ) YADM_HOOK_REPO yadm YADM_HOOK_WORK (work-tree).SH " (FILES)" yadm << yadm>> . yadm <> . $XDG_CONFIG_HOME $XDG_CONFIG_HOME/yadm $HOME/.config/yadm . yadm << yadm>> . yadm <> . $XDG_DATA_HOME $XDG_DATA_HOME/yadm $HOME/.local/share/yadm . yadm . . << (OPTIONS)>> . $HOME/.config/yadm yadm. yadm . $HOME/.local/share/yadm yadm. yadm . $YADM_DIR/config yadm. $YADM_DIR/alt << >> . $HOME . $YADM_DATA/repo.git Git yadm. $YADM_DIR/encrypt (globs) / . $YADM_DATA/archive yadm encrypt . (EXAMPLES) yadm init yadm add .bash_profile ; yadm commit .bash_profile Git yadm remote add origin origin yadm push -u origin master (push) master origin echo .ssh/*.key >> $HOME/.config/yadm/encrypt yadm encrypt ; yadm add ~/.local/share/yadm/archive ; yadm commit (REPORTING BUGS) GitHub : https://github.com/yadm-dev/yadm/issues.SH " (AUTHORS)" Tim Byrne Erik Flodin (SEE ALSO) git(1), gpg(1) openssl(1) transcrypt(1) git-crypt(1) https://yadm.io 3.5.0 March 3, 2025 YADM(1)