Skip to content

feat(alias): support writing to non-ambiguous paths#8216

Merged
xhofe merged 3 commits intoAlistGo:mainfrom
KirCute:feat/alias-writable
Mar 27, 2025
Merged

feat(alias): support writing to non-ambiguous paths#8216
xhofe merged 3 commits intoAlistGo:mainfrom
KirCute:feat/alias-writable

Conversation

@KirCute
Copy link
Copy Markdown
Contributor

@KirCute KirCute commented Mar 23, 2025

别名驱动支持所有不冲突路径的写入操作。

举例说明:假设 A,B 两驱动的内容如下:

A
└ dir1
  ├ file1
  ├ file2
  └ dir2

B
├ dir1
│ └ file1
└ dir3

现将它们引入到一个别名驱动内,打开别名驱动的“可写”和“同名保护”两个选项,则

  • /dir1下不可以上传文件、创建文件夹,也不能作为驱动内复制、移动、解压操作的目标文件夹(以下称“写入操作”),因为 A、B 两驱动都有路径/dir1,不能确定在此处进行写入操作时应该写入到哪个驱动。
  • /下不可以进行写入操作,原因同上, A、B 两驱动都有根目录/
  • /dir1/dir2下可以进行写入操作,因为只有驱动 A 有文件夹dir2,在此处写入不存在歧义,如果手动在驱动 B 的文件夹dir1下创建文件夹dir2,则/dir1/dir2会重新变得不可写入。
  • /dir3下可以进行写入操作,原因同上。
  • /dir1/file1不可以作为驱动内复制、移动、解压操作的源文件,也不可以删除或重命名,因为不能确定进行操作的文件来自哪个驱动。
  • /dir1不可以被复制、移动、解压、删除、重命名,原因同上。
  • /dir1/file2可以被复制、移动、解压、删除、重命名(请注意,此处对删除和重命名操作的支持并不来源于这个 PR,而是来源于 feat(alias): support Rename and Remove #6478),因为对其操作是无歧义的。

对于不展开用法,例如如下配置:

a:驱动1路径
a:驱动2路径
b:驱动3路径

  • /目录不可写
  • /a目录不可写,原因与展开用法的/不可写一致
  • /b目录可以作为驱动内复制、移动、解压操作的目标文件夹,可以上传子文件和创建子文件夹,但不可以被复制、移动、删除、重命名

关闭“同名保护”时,所有冲突操作优先对排序在上的驱动进行,这种用法的稳定性未知,不建议这么使用。

alias 驱动新加入配置选项“可写”,只有打开时这个 PR 提供的特性才会发生作用,此外,原 #6478 提供的特性现在也必须打开“可写”才能使用。

@xhofe xhofe merged commit 9a9aee9 into AlistGo:main Mar 27, 2025
12 checks passed
@KirCute KirCute deleted the feat/alias-writable branch March 27, 2025 15:18
@ming380203
Copy link
Copy Markdown

A
└ dir1
├ file1
├ file2
└ dir2

B
├ dir1
│ └ file1
└ dir3

@ming380203
Copy link
Copy Markdown

a:驱动1路径
a:驱动2路径
b:驱动3路径

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants