-
Notifications
You must be signed in to change notification settings - Fork 424
feat: support copy relative path from link files #4367
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
b1a1d5d
to
74f14de
Compare
/next |
""" Walkthrough本次变更涉及多个文件。首先,在 Changes
Sequence Diagram(s)sequenceDiagram
participant U as 用户
participant F as FileTreeContribution
participant S as FileTreeService
participant P as Path 模块
U->>F: 调用 COPY_RELATIVE_PATH 命令的 execute(uri)
alt 检测到符号链接
F->>S: getNodeByPathOrUri(uri)
S-->>F: 返回符号链接节点
F->>P: 分割并拼接路径字符串
P-->>F: 返回处理后的相对路径
else 非符号链接处理
F->>P: 正常构造相对路径
P-->>F: 返回相对路径
end
F-->>U: 返回相对路径结果
Suggested reviewers
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 ESLint
yarn install v1.22.22 ✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
packages/file-tree-next/src/browser/file-tree-contribution.ts (1)
784-790
: 新增对符号链接文件的支持。新增了对符号链接文件的相对路径复制支持。通过
filestat.isInSymbolicDirectory
判断文件是否在符号链接目录中,并使用Path.separator
分割路径以获取相对路径。建议添加注释说明为什么需要跳过前两个路径段。
if (node.filestat.isInSymbolicDirectory) { - // 软链接文件需要通过直接通过文件树 Path 获取 + // 软链接文件需要通过文件树 Path 获取 + // 跳过前两个路径段以获取相对路径,因为... return await this.clipboardService.writeText(node.path.split(Path.separator).slice(2).join(Path.separator)); }packages/components/src/recycle-tree/tree/TreeNode.ts (1)
239-242
: 优化路径构建逻辑。将原先使用
Path
类实例化和调用.toString()
的路径构建逻辑,替换为直接的字符串拼接方式,从而简化了路径构造过程。这个改动可以提高性能,因为避免了不必要的对象创建。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
packages/components/src/recycle-tree/tree/TreeNode.ts
(1 hunks)packages/file-tree-next/src/browser/file-tree-contribution.ts
(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (9)
- GitHub Check: 🚀🚀🚀 Next Version for pull request
- GitHub Check: unittest (ubuntu-latest, 18.x, jsdom)
- GitHub Check: unittest (ubuntu-latest, 18.x, node)
- GitHub Check: unittest (macos-latest, 18.x, jsdom)
- GitHub Check: unittest (macos-latest, 18.x, node)
- GitHub Check: build (ubuntu-latest, 20.x)
- GitHub Check: build-windows
- GitHub Check: ubuntu-latest, Node.js 20.x
- GitHub Check: build (macos-latest, 20.x)
🔇 Additional comments (1)
packages/file-tree-next/src/browser/file-tree-contribution.ts (1)
53-53
: 导入 Path 模块用于路径操作。导入 Path 模块以支持符号链接文件的路径操作。
🎉 PR Next publish successful! 3.7.1-next-1739430207.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
jest.config.js (1)
20-22
: 测试覆盖率配置更新已完成配置更新清晰地表明了 Test 和 Notebook 模块当前不进行测试覆盖率统计。这种明确的排除有助于其他开发者理解当前的测试范围。
建议在后续工作中:
- 创建任务追踪这些未覆盖模块的测试计划
- 为这些模块逐步添加测试用例
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
jest.config.js
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: unittest (ubuntu-latest, 18.x, jsdom)
- GitHub Check: unittest (ubuntu-latest, 18.x, node)
- GitHub Check: unittest (macos-latest, 18.x, jsdom)
- GitHub Check: unittest (macos-latest, 18.x, node)
- GitHub Check: build (ubuntu-latest, 20.x)
- GitHub Check: build (macos-latest, 20.x)
- GitHub Check: ubuntu-latest, Node.js 20.x
- GitHub Check: build-windows
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
packages/opened-editor/src/browser/services/opened-editor-tree.service.ts (1)
161-173
: 建议增加符号链接文件的相对路径处理
getReadableTooltip
方法目前只处理了file
协议的 URI,建议增加对符号链接文件的特殊处理,以确保显示的提示信息更加友好。建议添加以下处理逻辑:
public async getReadableTooltip(path: URI) { if (path.scheme !== Schemes.file) { return ''; } + // 如果是符号链接,先解析真实路径 + const realPath = await this.resourceService.resolve(path); + if (realPath && realPath.isSymbolicLink) { + path = realPath.targetUri; + } const roots = await this.workspaceService.roots; for (const root of roots) { const rootUri = new URI(root.uri); if (rootUri.isEqualOrParent(path)) { return decodeURIComponent(rootUri.relative(path)?.toString()!); } } return path.toString(); }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
packages/components/src/recycle-tree/tree/TreeNode.ts
(1 hunks)packages/opened-editor/src/browser/opened-editor-node.define.ts
(1 hunks)packages/opened-editor/src/browser/services/opened-editor-tree.service.ts
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/components/src/recycle-tree/tree/TreeNode.ts
⏰ Context from checks skipped due to timeout of 90000ms (7)
- GitHub Check: unittest (ubuntu-latest, 18.x, jsdom)
- GitHub Check: build (ubuntu-latest, 20.x)
- GitHub Check: unittest (ubuntu-latest, 18.x, node)
- GitHub Check: build (macos-latest, 20.x)
- GitHub Check: build-windows
- GitHub Check: ubuntu-latest, Node.js 20.x
- GitHub Check: unittest (macos-latest, 18.x, node)
🔇 Additional comments (3)
packages/opened-editor/src/browser/opened-editor-node.define.ts (1)
73-73
: 使用文件系统路径替代 URI 字符串通过使用
resource.uri.codeUri.fsPath
来获取文件系统路径,可以正确处理符号链接文件的路径。这个改动与 PR 的目标相符,能够确保符号链接文件的相对路径可以被正确复制。packages/opened-editor/src/browser/services/opened-editor-tree.service.ts (2)
130-131
: 使用文件系统路径构建分组树节点路径在分组树模式下,使用
codeUri.fsPath
来获取文件系统路径,确保符号链接文件的路径能够被正确处理。
138-139
: 使用文件系统路径构建非分组树节点路径在非分组树模式下,同样使用
codeUri.fsPath
来获取文件系统路径,保持了代码的一致性,并支持符号链接文件的路径处理。
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4367 +/- ##
==========================================
- Coverage 54.18% 54.17% -0.01%
==========================================
Files 1639 1621 -18
Lines 100306 100268 -38
Branches 21761 21783 +22
==========================================
- Hits 54349 54323 -26
+ Misses 38188 38153 -35
- Partials 7769 7792 +23
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Types
Background or solution
软链接路径不能直接通过 URI 进行相对路径解析,增加兜底方案
Changelog
support copy relative path from link files
Summary by CodeRabbit
EditorFile
类构造函数中的名称属性获取方式,从通用 URI 表示改为更具体的文件系统路径表示。OpenedEditorService
中的 URI 处理逻辑,确保使用文件系统路径的一致性。devDependencies
中新增了@opensumi/ide-utils
依赖。