Skip to content

feat(drivers/alias): support move direct within same backend#2777

Open
qiuxiuya wants to merge 7 commits into
OpenListTeam:mainfrom
qiuxiuya:alias_move_direct
Open

feat(drivers/alias): support move direct within same backend#2777
qiuxiuya wants to merge 7 commits into
OpenListTeam:mainfrom
qiuxiuya:alias_move_direct

Conversation

@qiuxiuya

Copy link
Copy Markdown

Summary / 摘要

为 alias 驱动的 move 操作新增 MoveDirect 选项。当源后端数量少于目标后端数量时,不再直接报错 ErrNotEnoughSrcObjs,而是在同一后端上执行 move,跳过无法匹配的目标目录。

用户可感知的行为变化

  • 在源对象所在后端数量少于目标路径所在后端数量时,move 操作不再必然失败,只要源和目标存在于同一后端即可成功。
  • 新增MoveDirect配置项,用户可通过配置将其关闭以回退到原有严格行为。

实现变化

  • drivers/alias/meta.go 中新增 MoveDirect 字段。

  • drivers/alias/util.go 中新增 getMoveObjsDirect 方法,按挂载点将目标目录分组,遍历源对象时仅匹配同挂载点的目标目录。

  • 修改 getMoveObjs 方法:当 MoveDirect 开启且 len(tmpSrcObjs) < len(dstObjs) 时,调用 getMoveObjsDirect 替代直接返回错误。

  • This PR has breaking changes.
    / 此 PR 包含破坏性变更。

  • This PR changes public API, config, storage format, or migration behavior.
    / 此 PR 修改了公开 API、配置、存储格式或迁移行为。

  • This PR requires corresponding changes in related repositories.
    / 此 PR 需要关联仓库同步修改。

Related Issues / 关联 Issue

Testing / 测试

  • go test ./...
  • Manual test / 手动测试:
    • 创建 alias 驱动,挂载多个后端存储。
    • 在源文件后端少于目标后端的情况下执行 move 操作,验证 move 仅在同后端发生。
    • 关闭 MoveDirect(设为 false)后重试,验证回退到原有 ErrNotEnoughSrcObjs 行为。

Checklist / 检查清单

  • I have read CONTRIBUTING.
    / 我已阅读 CONTRIBUTING
  • I confirm this contribution follows the repository license, contribution policy, and code of conduct.
    / 我确认此贡献符合仓库许可证、贡献规范和行为准则。
  • I have formatted the changed code with gofmt, go fmt, or prettier where applicable.
    / 我已按适用情况使用 gofmtgo fmtprettier 格式化变更代码。
  • I have requested review from relevant maintainers or code owners where applicable.
    / 我已在适用情况下请求相关维护者或代码所有者审查。

AI Disclosure / AI 使用声明

  • This PR includes AI-assisted content.
    / 此 PR 包含 AI 辅助内容。

Tools used / 使用工具:

  • ChatGPT
  • Codex
  • GitHub Copilot
  • Claude
  • Gemini
  • Other (please specify) / 其他(请注明):

Usage scope / 使用范围:

  • Code generation / 代码生成

  • Refactoring / 重构

  • Documentation / 文档

  • Tests / 测试

  • Translation / 翻译

  • Review assistance / 审查辅助

  • I have reviewed and validated all AI-assisted content included in this PR.
    / 我已审核并验证此 PR 中的所有 AI 辅助内容。

  • I have ensured that all AI-assisted commits include Co-Authored-By attribution.
    / 我已确保所有 AI 辅助提交都包含 Co-Authored-By 归属信息。

  • I can reproduce all AI-assisted content included in this PR without any AI tools.
    / 我可以在没有任何 AI 工具的情况下重现此 PR 中包含的所有 AI 辅助内容。

jyxjjj and others added 7 commits July 9, 2026 12:28
* fix: replace strings.HasPrefix with utils.IsSubPath for path validation

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

* fix: re-validate shared paths to ensure they remain within the creator's base path

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>

---------

Signed-off-by: MadDogOwner <xiaoran@xrgzs.top>
Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
…m#2757)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…eam#2756)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…eam#2754)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…tTeam#2739)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…istTeam#2743)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@jyxjjj

jyxjjj commented Jul 10, 2026

Copy link
Copy Markdown
Member

Also see: #2644

@xrgzs xrgzs added enhancement Module: Driver Driver-Related Issue/PR labels Jul 14, 2026
@xrgzs xrgzs changed the title feat(alias): support move direct within same backend feat(drivers/alias): support move direct within same backend Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Module: Driver Driver-Related Issue/PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants