Upgrading from Version 1
Beginning with version 2.0.0, yadm introduced a few major changes which may require you to adjust your configurations.
If you want to retain yadm’s old behavior until you transition your
configurations, you can set an environment variable YADM_COMPATIBILITY=1
.
Doing so will automatically use the old yadm directory, and process alternates the same as version 1.
This compatibility mode is deprecated, and will be removed in future versions.
This mode exists solely for transitioning to the new paths and naming of alternates.
New yadm directory location
yadm now uses the XDG Base Directory Specification to find its configurations.
For the majority of users, this means configurations will now be in
$HOME/.config/yadm
instead of the old location of $HOME/.yadm
.
You can customize the base directory by specifying an environment variable
named XDG_CONFIG_HOME
.
If you previously had configurations in $HOME/.yadm
, the easiest way
to migrate is to use the new yadm upgrade
command. This command will move your
existing repo and configurations to the new directory, and rename any yadm
configurations that are tracked by your repo. Upgrading will also re-initialize
all submodules you have added (otherwise they will be broken when the repo
moves).
New alternate file naming convention
The naming conventions for alternate files have been changed. Read full details about the new naming convention here.
This table of examples should help you understand how to translate old filenames to new ones.
Conditions | Old suffix | New suffix |
---|---|---|
Default file | ## |
##default |
MacOS host | ##Darwin |
##o.Darwin |
yadm.class = “work” | ##work |
##c.work |
Linux host named “dromio” | ##Linux.dromio |
##o.Linux,h.dromio |
Linux host named “dromio” with user named “antipholus” | ##Linux.dromio.antipholus |
##o.Linux,h.dromio,u.antipholus |
Host named “luciana” | ##%.luciana |
##h.luciana |
Any Linux host with user named “egeon” | ##Linux.%.egeon |
##o.Linux,u.egeon |
User named “balthazar” | ##%.%.balthazar |
##u.balthazar |
A Jinja template | ##yadm.j2 |
##template.j2 |
Built-in template processing
Older versions supported Jinja templates if envtpl was installed. New versions support multiple template processors, including a built-in processor. The built-in processor has a limited feature set, but should be sufficient for most users needs (without having to install additional software). Read full details here.
Option yadm.cygwin-copy
changed to yadm.alt-copy
Older versions supported a yadm.cygwin-copy
option, because some software
doesn’t work well with CYGWIN symlinks. Now that option has been renamed to
yadm.alt-copy
, and can be used on any system, not just CYGWIN. So if you have
a system which doesn’t fully support symlinks, you can have alternates created
as files instead.