summaryrefslogtreecommitdiff
path: root/baserock-system-config-sync/baserock-system-config-sync
diff options
context:
space:
mode:
Diffstat (limited to 'baserock-system-config-sync/baserock-system-config-sync')
-rwxr-xr-xbaserock-system-config-sync/baserock-system-config-sync13
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
}