diff options
Diffstat (limited to 'baserock-system-config-sync/baserock-system-config-sync')
-rwxr-xr-x | baserock-system-config-sync/baserock-system-config-sync | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/baserock-system-config-sync/baserock-system-config-sync b/baserock-system-config-sync/baserock-system-config-sync index 7b7c697..061c86c 100755 --- a/baserock-system-config-sync/baserock-system-config-sync +++ b/baserock-system-config-sync/baserock-system-config-sync @@ -54,8 +54,17 @@ check_same_type() { type1="$(file_type $1)" type2="$(file_type $2)" if [ "$type1" != "$type2" ]; then - die "ERROR: found two different types for '$3':" \ - "$type1 and $type2" + if [ "$type1" = symlink ] || [ "$type2" = symlink ]; then + # We allow moving content and leaving a compatibility symlink, as + # long as the content of the file didn't change. + if ! cmp -s "$1" "$2"; then + die "ERROR: $3: replacing a file with a symlink is only " \ + "supported if there are no changes to the content." + fi + else + die "ERROR: found two different types for '$3':" \ + "$type1 and $type2" + fi fi } |