Skip to content

fix: 修复空文件下载时 FileAlreadyExistsException 和 WebdavProtocol 调试代码遗留问题 + 添加 GitHub Actions 工作流#4

Closed
creeperCN wants to merge 1 commit intoBalloonUpdate:mainfrom
creeperCN:fix/temp-file-and-webdav-bugs
Closed

fix: 修复空文件下载时 FileAlreadyExistsException 和 WebdavProtocol 调试代码遗留问题 + 添加 GitHub Actions 工作流#4
creeperCN wants to merge 1 commit intoBalloonUpdate:mainfrom
creeperCN:fix/temp-file-and-webdav-bugs

Conversation

@creeperCN
Copy link
Copy Markdown
Contributor

问题概述

本次 PR 修复了两个关键 Bug,并新增了两个 GitHub Actions 工作流:


问题 1: FileAlreadyExistsException 导致程序崩溃

文件位置: Work.java:438-444

问题描述:
当下载空文件时,如果临时文件已存在(上次更新中断残留),Files.createFile() 会抛出 FileAlreadyExistsException,导致整个更新过程崩溃。

错误日志:

Mcpatch[ 04-04 12:46:21.122 ERROR ] Crash 好像出现了错误
Mcpatch[ 04-04 12:46:21.122 ERROR ] Crash FileAlreadyExistsException: ...\.mcpatch-temp\config\xaeropatreon.txt.temp

修复方案:
创建空文件前,先检查临时文件是否存在,如果存在则先删除再创建。


问题 2: WebdavProtocol 调试代码遗留导致协议无法使用

文件位置: WebdavProtocol.java:137-141

问题描述:
代码中遗留了调试代码,条件 desc.length() > -999 永远为 true,导致 Webdav 协议下载文件时必定抛出异常,Webdav 协议完全无法使用

修复方案:
删除遗留的调试代码。


新增: GitHub Actions 工作流

1. build.yml - 自动构建

  • 推送到 main/master 分支时自动触发
  • PR 到 main/master 分支时自动触发
  • 构建完成后上传 artifact 保留 7 天

2. manual-release.yml - 手动发布

  • 手动触发,可输入版本号
  • 可选择是否为预发布版本或草稿
  • 自动创建 Git tag 并发布 Release
  • 自动生成 changelog

测试

  • 项目可正常编译 (./gradlew shadowJar)
  • 修复后逻辑正确
  • 不影响其他功能

修改文件

文件 修改类型
Work.java Bug 修复
WebdavProtocol.java 删除调试代码
.github/workflows/build.yml 新增文件
.github/workflows/manual-release.yml 新增文件

新增两个工作流:

1. build.yml - 自动构建
   - 推送到 main/master 分支时自动触发
   - PR 到 main/master 分支时自动触发
   - 构建完成后上传 artifact 保留 7 天

2. manual-release.yml - 手动发布
   - 手动触发,可输入版本号
   - 可选择是否为预发布版本或草稿
   - 自动创建 Git tag 并发布 Release
   - 自动生成 changelog
@creeperCN creeperCN closed this Apr 4, 2026
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.

1 participant