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-sync18
1 files changed, 15 insertions, 3 deletions
diff --git a/baserock-system-config-sync/baserock-system-config-sync b/baserock-system-config-sync/baserock-system-config-sync
index cb37a8a..8bc4790 100755
--- a/baserock-system-config-sync/baserock-system-config-sync
+++ b/baserock-system-config-sync/baserock-system-config-sync
@@ -103,11 +103,23 @@ merge() {
if [ -d "$vp" -a ! -h "$vp" ]; then
mkdir "$vt"
elif [ -h "$vp" ]; then
- # chose a symbolic link in this order
- # of preference: Vuser, V2, V1
- if [ -h "$vu" ]; then
+ # Symbolic links.
+ if [ -h "$vu" -a -h "$v1" ]; then
+ if [ "$(readlink $v1)" == "$(readlink $vu)" ]; then
+ # User hasn't overriden the old v1 value: switch
+ # to v2.
+ cp -a "$v2" "$vt"
+ else
+ # User overwrote the v1 value; keep what they did
+ cp -a "$vu" "$vt"
+ fi
+ elif [ -h "$vu" ]; then
+ # Old behaviour that may not make sense: preserve user
+ # created symlink, if original was not a link
cp -a "$vu" "$vt"
elif [ -h "$v2" ]; then
+ # Old behaviour that may not make sense: use newly
+ # created link, if original was not a link
cp -a "$v2" "$vt"
else
cp -a "$v1" "$vt"