* Silence warnings when collecting alt files (#521)
* Adjust handling of encrypt patterns to match 3.3.0 and older
* Make encrypt exclude patterns only match encrypted files
* Automatically exclude alt and template files (#234)
* Support negative alt conditions (#365)
* Handle filenames with space in bash completion (#341)
* Add new yadm.filename template variable (#520)
By calling __gitcompappend with the same suffix as the completion for git
does (i.e. " ") we can remove the call to sort -u as it is no longer
needed (bash seems to remove duplicates) and then spaces are handled correctly.
Also make the completion available in testhost.
unless yadm.auto-exclude is set to false (#234, #465).
Alt files exclude pattern will be written to $GIT_DIR/info/exclude.yadm-alt and
encrypt files exclude patthern to ...yadm-encrypt. Then these two files will be
merged together and added to $GIT_DIR/info/exclude whenever one of them has
changed.
This matches the behavior before 3.4.0.
Silent errors from ls-files to avoid warnings about e.g. directories that
aren't readable and also list files that would have been encrypted had they not
been tracked in git (#521).
Fix the patterns written to info/exclude so that they match the same files as
are encrypted (e.g. *.key should only match .key files in the topdir, not in
subdirs).
* Improve and harden alt file regeneration (#466)
* Fix "yadm config" in fish completion (#491)
* Fix "yadm clone" when not run in "$YADM_WORK" (#513)
* Output the actual paths in help message (#376)
* Verify all alt conditions for templates (#478)
* Ignore case in alt and default template conditions (#455, #456)
* Fall back to ID for distro family if ID_LIKE is not available (#494)
* Support overriding distro and distro family (#430)
* Improve support for Bash 3 (the default version on macOS)
* Make "yadm clone --recursive" work as expected (#517)
* Don't include files multiple times in archive (#125)
* Document YADM_HOOK_DATA and YADM_HOOK_DIR env variables (#343)
* Support alt dirs with deeply nested tracked files (#495)
The --recursive switch was ignored when YADM clones a dotfile repository.
This commit causes "yadm clone --recursive" to also clone submodules
in one go, similar to what GIT does when given the --recursive switch.
Move common template logic out to a new template() function that calls one of
the existing template processors and then handles writing the result and
copying permissions.
* Simplify score_file() by using case in instead of nested ifs with regexps.
* Merge record_score() and record_template().
* Alt condition processing no longer stops when a template condition is seen
but continues processing to verify that all conditions are valid (as the
documentation says it should). Fixes#478.
* Support alt dirs with deeply nested tracked files (fixes#490).
* Use git ls-files to filter out which tracked files to consider for alt
processing. Should speed up auto-alt (#505).
* Use nocasematch when comparing distro and distro_family. Fixed#455.
* Update base image to Ubuntu 24.10. This uses a python version where j2cli no
longer works when installed using pip so use the version from Ubuntu instead
which has been patched to work.
* Update shellcheck, pylint, pytest, isort, flake8, black and yamllint to the
latest versions. This closes#502.
* Use a longer expect timeout to fix tests failing when gpg is killed due to
this timeout.
* Explicitly flush gpg-agent's cached passwords to fix failing tests with
latest gnupg. Also clean up after tests to avoid having gpg-agents running
after the test (e.g. when running tests directly without docker).
* Support nested ifs in default template (#436)
* Support include and ifs in default template includes (#406)
* Support environment variables in ifs in default template (#488)
* Support != in default template (#358, #477)
* Fix multiple classes in default template on macOS (#437)
The awk script now performs all processing in the BEGIN block using an
implementation that is capable of handling if statements which contain nested
if statments (fixes#436). To make nested ifs look better, if, else and endif
lines can now have optional whitespace before {%.
Includes are now handled in the same way as the main file which means that
included files can both include other files and have if statements in addition
to variables (fixes#406). Include lines can now also have optional whitespace
before {%.
All variables are handled in the same way now so it's now possible to use env
variables in if statements (fixes#488).
Also add support for != in addition to == (fixes#358). Thus it's now
e.g. possible to check if a variable is set (#477) by doing:
{% if yadm.class != ""%}
Class is set to {{ yadm.class }}
{% endif %}
A non-existing yadm or env variable is now replaced with the empty string.