只用JGit把项目中更新的文件,打包成一个zip压缩包,上传到服务器上面解压即可完成更新。
首先maven导入需要的JGit库
<!-- https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.12.0.202106070339-r</version>
</dependency>
制作zip补丁包代码如下,实际使用可选择实际的提交版本作为原始版本。
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.diff.DiffEntry;
import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.treewalk.AbstractTreeIterator;
import org.eclipse.jgit.treewalk.CanonicalTreeParser;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
import java.util.stream.StreamSupport;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Main {
public static void main(String[] args) throws IOException, GitAPIException {
Path root = Path.of("这里更改为项目目录");//项目文件目录
Path patchFile = Path.of("这里更改为patch.zip输出路径");//输出的补丁文件路径
Git git = Git.open(root.toFile());
Repository repo = git.getRepository();
ObjectReader reader = repo.newObjectReader();
//获取最近10次提交的变更
List<RevCommit> commitList =
StreamSupport.stream(git.log().setMaxCount(10).call().spliterator(),false).toList();
//这里获取第10次为要制作补丁的版本
RevCommit oldVersion = commitList.get(commitList.size()-1);
//获取最近一次变更提交作为更新目标版本
RevCommit newVersion = commitList.get(0);
//制作补丁文件
makePatch(git,oldVersion,newVersion,root,patchFile);
}
public static AbstractTreeIterator createIterator(ObjectReader reader, RevCommit version) throws IOException {
CanonicalTreeParser parser = new CanonicalTreeParser();
parser.reset(reader, version.getTree());
return parser;
}
public static void makePatch(Git git,RevCommit oldVersion,RevCommit newVersion,Path root,Path patchFile) throws IOException, GitAPIException {
ObjectReader reader = git.getRepository().newObjectReader();
ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(patchFile));
git.diff().setOldTree(createIterator(reader,oldVersion)).setNewTree(createIterator(reader,newVersion)).call().
stream().filter(d-> d.getChangeType() != DiffEntry.ChangeType.DELETE).map(DiffEntry::getNewPath)
.forEach(p->{
Path path = root.resolve(p);
ZipEntry e = new ZipEntry(p);
System.out.println("add file: "+e);
try {
e.setLastModifiedTime(Files.getLastModifiedTime(path));
zipOut.putNextEntry(e);
Files.copy(path,zipOut);
zipOut.closeEntry();
} catch (IOException ioException) {
ioException.printStackTrace();
}
});
//添加更新日志
zipOut.putNextEntry(new ZipEntry("update.txt"));
String updateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(newVersion.getCommitTime()), ZoneId.systemDefault()).toString();
zipOut.write("""
更新日期:$date
更新版本:$version
""".replaceAll("\\$date", updateTime).replaceAll("\\$version",newVersion.getId().getName()).getBytes(StandardCharsets.UTF_8));
zipOut.close();
System.out.println("Make patch done:"+patchFile);
}
}
作者:
Q
时间:
分类:
默认分类
error_page 404 = /404.php?$args;
设置
error_page
的时候带上
$args
参数
作者:
Q
时间:
分类:
默认分类
访问网络共享盘的时候显示网络错误,但是其他人访问时是正常的 或者出现无法访问,你可能没有权限使用网络资源的提示 原因 一般可能组策略中的 启用不安全的来宾登录 被禁用了。
以下三种方法都可以解决:
1.修改组策略
在运行中输入 gpedit.msc 展示如图所示
以此打开管理模板->网络->LANMAN工作站->启动不安全的来宾登录 将已禁用选项改为已启用.
2.修改注册表
以管理员权限运行CMD并运行 regedit ,找到路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
双击AllowInsecureGuestAuth,然后在数值数据中填入1。
3.Bat批处理脚本修改
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t "REG_DWORD" /d "1" /f