Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Inconsistent symbolic link handling #164

@Atry

Description

@Atry

When I run the following bash script:

#!/usr/bin/env bash
set -exuo pipefail

mkdir branch1
ln -s ./subdir1 branch1/subdir0
mkdir branch1/subdir1
mkdir branch1/subdir1/subdir2
touch branch1/subdir1/subdir2/file1

mkdir branch2
mkdir branch2/subdir0
mkdir branch2/subdir0/subdir2
touch branch2/subdir0/subdir2/file2
mkdir branch2/subdir1
mkdir branch2/subdir1/subdir2
touch branch2/subdir1/subdir2/file3

ratarmount branch1 branch2 merged
ls -l merged/
ls -l merged/subdir0/
ls -l merged/subdir0/subdir2/


ratarmount branch2 branch1 merged_reverse
ls -l merged_reverse/
ls -l merged_reverse/subdir0/
ls -l merged_reverse/subdir0/subdir2/

I got:

+ mkdir branch1
+ ln -s ./subdir1 branch1/subdir0
+ mkdir branch1/subdir1
+ mkdir branch1/subdir1/subdir2
+ touch branch1/subdir1/subdir2/file1
+ mkdir branch2
+ mkdir branch2/subdir0
+ mkdir branch2/subdir0/subdir2
+ touch branch2/subdir0/subdir2/file2
+ mkdir branch2/subdir1
+ mkdir branch2/subdir1/subdir2
+ touch branch2/subdir1/subdir2/file3
+ ratarmount branch1 branch2 merged
Building cache for union mount (timeout after 60s)...
Cached mount sources for 1 folders up to a depth of 0 in 4.17e-05s for faster union mount.
Created mount point at: /home/nixos/ratarmount.upstream/tmp6/merged
+ ls -l merged/
total 2
drwxr-xr-x 1 nixos users 4096 Jul  6 05:42 subdir0
drwxr-xr-x 1 nixos users 4096 Jul  6 05:42 subdir1
+ ls -l merged/subdir0/
total 1
drwxr-xr-x 1 nixos users 4096 Jul  6 05:42 subdir2
+ ls -l merged/subdir0/subdir2/
total 1
-rw-r--r-- 1 nixos users 0 Jul  6 05:42 file1
-rw-r--r-- 1 nixos users 0 Jul  6 05:42 file2
+ ratarmount branch2 branch1 merged_reverse
Building cache for union mount (timeout after 60s)...
Cached mount sources for 1 folders up to a depth of 0 in 3.96e-05s for faster union mount.
Created mount point at: /home/nixos/ratarmount.upstream/tmp6/merged_reverse
+ ls -l merged_reverse/
total 2
lrwxrwxrwx 1 nixos users    9 Jul  6 05:42 subdir0 -> ./subdir1
drwxr-xr-x 1 nixos users 4096 Jul  6 05:42 subdir1
+ ls -l merged_reverse/subdir0/
total 1
drwxr-xr-x 1 nixos users 4096 Jul  6 05:42 subdir2
+ ls -l merged_reverse/subdir0/subdir2/
total 1
-rw-r--r-- 1 nixos users 0 Jul  6 05:42 file1
-rw-r--r-- 1 nixos users 0 Jul  6 05:42 file3

The result is Inconsistent because ls -l merge d_reverse/ includes a subdir0 -> ./subdir1 entry, indicating that the symbolic link branch1/subdir0 is not automatically resolved to a directory by ratarmount, while ls -l merged/ includes file1 and file2, indicating that the symbolic link is automatically resolved to a directory by ratarmount and merged with branch2/subdir0.

I expect the symbolic link is either resolved to a directory in both merged and merged_reverse, or kept as is in both merged and merged_reverse.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions