• SVN版本号打包脚本工具


    做网页游戏开发的时候,经常会触及到对文件版本号的管理。
    最近由于做新项目的原因,把原来手写版本号的方法改进了一下,借由svn的版本号生成及用java写了个xml解析输出文件,把手动的东西都变成全自动。

    主要是思路是这样的:
    1.用svn脚本生成版本的xml文件,这里要用到svn工具,这个是官方的下载地址:http://subversion.apache.org/packages.html
    2.对生成的xml文件(如svn.xml)进行解析并打包。输出个二进制文件(如svn.dat)
    3.工具里对版本号文件进行压缩。

    下面贴出来部分关键的代码:

    生成svn版本号的脚本

    svn status [path] -v --xml > c:svn.xml


    主代码,打包输出并压缩几个步骤在这里

    //获取XML
    Document documet = GetDocument(path);
    //解析
    HashMap<String, Integer> map = readFromDocument(documet);
    //输出二进制文件
    outputBinary(map, outPath);
    //压缩
    compress(outPath);    

    解析svn版本号文件

    //获取主路径
    Element element = (Element)documet.getElementsByTagName("target").item(0);
    mainPath = element.getAttribute("path") + "\";
    mainPath = mainPath.replaceAll("\\", "\\\\");;
    
    HashMap<String, Integer> map = new HashMap<>(); 
    NodeList list = documet.getElementsByTagName("entry");
    for(int i = 0; i < list.getLength(); i++) {
        element = (Element)list.item(i);
        String path = element.getAttribute("path");
        File file = new File(path);
        if(file.isFile()) {
            if(path.length() != mainPath.length()) path = path.replaceFirst(mainPath, "");
            //wc-status   commit revision
            Element verEle = (Element)(element.getElementsByTagName("commit").item(0));
            Integer version = Integer.parseInt( verEle.getAttribute("revision") );
            System.out.println(path + ":" + version);
            map.put(path, version);
        }
    }
    return map;

    压缩输出的文件

    System.out.println("#start to compress " + path);
    BufferedInputStream in = new BufferedInputStream(new FileInputStream(path));
    ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
    
    byte[] temp = new byte[1024];
    int size = 0;
    while ((size = in.read(temp)) != -1) {
        out.write(temp, 0, size);
    }
    in.close();
    byte[] data = out.toByteArray();
    byte[] output = CompressionUtil.compress(data, CompressionUtil.Level.BEST_COMPRESSION);
    System.out.println("before : " + (data.length ) + "byte");        /// 1024
    System.out.println("after : " + (output.length ) + "byte");        // 1024
    
    FileOutputStream fos = new FileOutputStream(path);
    fos.write(output);
    out.close();
    fos.close();


    整个工具的代码在这里 http://files.cnblogs.com/yans/VersionPacking.rar

    调用java去打包的脚本

    java -jar VersionPacking.jar [path] [outputfile]

    其中path是svn.xml的路径, outputfile是输出的目录

  • 相关阅读:
    Dapper的基本 理论 知识
    路由
    WebForm+一般处理程序+Ajax聊天
    Jquer + Ajax 制作上传图片文件
    (3.4)表相关操作之完整性约束
    (3.3)表相关操作之数据类型
    (3.2)表相关操作之表的增删改查
    (3.1)表相关操作之存储引擎介绍
    常用模块
    模块与包
  • 原文地址:https://www.cnblogs.com/yans/p/svn_deliver.html
Copyright © 2020-2023  润新知