From 02f78dc3d7bd69a8279a4170a3b98a200cdeb55f Mon Sep 17 00:00:00 2001 From: Muayyad alsadi <alsadi@gmail.com> Date: Fri, 10 Dec 2021 02:06:43 +0200 Subject: [PATCH] FIXES #333: when volumes are merged, remove duplicates --- podman_compose.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/podman_compose.py b/podman_compose.py index 215e7f5..7a39366 100755 --- a/podman_compose.py +++ b/podman_compose.py @@ -867,7 +867,15 @@ def rec_merge_one(target, source): if type(value2)!=type(value): raise ValueError("can't merge value of {} of type {} and {}".format(key, type(value), type(value2))) if is_list(value2): - value.extend(value2) + if key == 'volumes': + # clean duplicate mount targets + pts = set([ v.split(':', 1)[1] for v in value2 if ":" in v ]) + del_ls = [ ix for (ix, v) in enumerate(value) if ":" in v and v.split(':', 1)[1] in pts ] + for ix in reversed(del_ls): + del value[ix] + value.extend(value2) + else: + value.extend(value2) elif is_dict(value2): rec_merge_one(value, value2) else: