• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

svn客户端代码版本号自动更新依赖Lua

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先,依赖于提交前拿项目根的最大版本号,然后加1再提交

依赖:Lua和Subversion

不清楚这个流程是否有问题,望高人指点。实现如下:

文档类有个静态变量表示svn的版本

public static const SVN_VERSION : String = "71";

然后项目根目录下有个比处理hook.bat,是入口

@echo off
setlocal enabledelayedexpansion
::Lua路径
SET LUA_PATH=D:\Lua\
SET LOCAL_PATH=%~dp0
%LUA_PATH%lua
.exe -e "local_path='%LOCAL_PATH:\=\\%';file_name='src\\LocalFile.as';dofile('%LUA_PATH%\\svn\\hook.lua');"
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 错误
exit 1

file_name:表示要替换的文件在项目的相对路径,在我这里是LocalFile.as

在Lua的svn的下面有个hook.lua的文件是实际查找替换的文件,在我这里是D:\Lua\svn\hook.lua

下面是lua的代码

--初始化
svn
= {};
--设置svn的路径
svn.bin
= "C:\\Program Files\\Subversion\\bin\\";
--要替换的文件相对路径
svn.fileName
= file_name;
svn.localPath
= local_path.."";
function os.capture(cmd, raw)
local f
= assert(io.popen(cmd, 'r'))
local s
= assert(f:read('*a'))
f:close()
if raw then return s end
s
= string.gsub(s, '^%s+', '')
s
= string.gsub(s, '%s+$', '')
s
= string.gsub(s, '[\n\r]+', ' ')
return s
end
function svn.info(path)
local s
= os.capture("\"".. svn.bin .."svn.exe\" info "..path,1);
if s then
return s;
else
return nil;
end
end
function svn.getHeadVersion(path)
local s
= svn.info(path);
if s then
local info
= s;
io.write(s);
s
= info:match("最后修改的版本:(%d*)");
end
return s;
end
function svn.getInfo(path)
local info
= {};
local s
= svn.info(path);
for k,v in s:gmatch("([^:]+):%s*([^\r\n]+)[\r\n]+") do
info[k]
=v
end
return info;
end
--先拿版本库的根
local local_info
= svn.getInfo(svn.localPath);
--再拿版本库根的最新版本
local ii
= svn.getInfo(local_info["版本库根"]);
--local ss = svn.getHeadVersion("svn://192.168.1.243/Flash");
local _version
= ii["最后修改的版本"] + 1;
local _root
= ii["版本库根"];
if _version and svn.fileName and svn.localPath and svn.localPath ~= '' then
file
= io.open(svn.localPath..svn.fileName,"r");
local v
= _version;
ss
= file:read("*a");
ss
= ss:gsub("SVN_VERSION%s?:%s?String%s?=%s?\"(%d*)\"","SVN_VERSION : String = \""..v.."\"",1);
file:close();
file
= nil;
file
= io.open(svn.localPath..svn.fileName,"w");
file:write(ss);
file:close();

else
do
local message
= "";
if not _version then message = message.."_version 为空"; end
if not svn.fileName then message = message.."svn.fileName 为空"; end
if not svn.localPath then message = message.."svn.localPath 为空"; end
if svn.localPath == "" then message = message.."svn.localPath 为\"\""; end
error(
"错误 in lua"..message);
end

end

在这里要指定svn的bin目录,我的Subversion是中文版,不知道其他的情况怎么样

使用方法是在客户端挂re-commit hook就可以了,指定项目路径和执行文件的路径就好了

还有,或许这个东西用bat或者vb都是很简单,但我不怎么精通,哎

今天就到这里吧


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua 函数发布时间:2022-07-22
下一篇:
lua--点击关闭窗口中的子界面发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap