添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

只用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);
    }

}

  • 时间:
  • 分类: 默认分类
  • error_page 404 = /404.php?$args;

    设置 error_page 的时候带上 $args 参数

  • 时间:
  • 分类: 默认分类
  • 访问网络共享盘的时候显示网络错误,但是其他人访问时是正常的 或者出现无法访问,你可能没有权限使用网络资源的提示 原因 一般可能组策略中的 启用不安全的来宾登录 被禁用了。

    以下三种方法都可以解决:

    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