1. 涉及技术:

Winservice: 用system身份后台跑;  Quartz:定时任务;  SVN

2. 思路:

Quartz定时调用cmd 程序,执行SVN update 命令,整个程序寄宿在Winservice

3. 步骤:

1)service 用local system账户安装,通过Process 启动cmd 程序。

执行核心代码:

string path = ConfigurationManager.AppSettings["localPath"].ToString();

string username = ConfigurationManager.AppSettings["username"].ToString();

string password = ConfigurationManager.AppSettings["password"].ToString();

    Process p = new Process();
            ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.UseShellExecute = false;
            startInfo.RedirectStandardInput = true;
            startInfo.RedirectStandardOutput = true;
            startInfo.FileName = @"cmd.exe ";
            //startInfo.Arguments = " /c svn update " + path + " --username mashenghao --password mashenghao ";
            p.StartInfo = startInfo;
            p.Start();
            p.StandardInput.WriteLine("svn update " + path + " --username " + username + " --password " + password + " &exit ");
            p.StandardInput.AutoFlush = true;
            string output = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            p.Close();

2) Quartz 定时执行步骤1)

      ISchedulerFactory fact = new StdSchedulerFactory();
            IScheduler sche = fact.GetScheduler();
            sche.Start();
            IJobDetail detail = JobBuilder.Create<AutoUpdateQuartzJob>()
                .WithIdentity("SVNAutoUpdate", "SVNAutoUpdate")
                .Build();
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("SVNAutoUpdateTrigger", "SVNAutoUpdateTrigger")
                .StartNow()
                .WithSimpleSchedule(x => x.WithIntervalInSeconds(15).RepeatForever())
                .Build();
            IJobListener listener = new AutoUpdateQuartzJobListern();
            sche.ScheduleJob(detail, trigger);
3) 安装winservice

cmd 管理员身份运行

>  cd  C:\Windows\Microsoft.NET\Framework\v4.0.30319

> installutil XXX.exe

SVN 定时 更新代码 Demo的更多相关文章

  1. linux下svn定时更新项目

    方法一.用shell脚本定时更新项目   1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test   2.建立脚本文件update.sh,分两步进行.首先利 ...

  2. svn提交更新代码提示Please execute the 'Cleanup' command 的解决办法

    那可能是提交或更新代码的过程意外终止,第二次提交或更新会报这个错误 更新或上传的时候动作没有完成,导致本地存在锁定状态没有释放 或者有文件正在更新或上传,该文件夹被锁定. 解决办法: 将对应文件夹里的 ...

  3. IDEA 在SVN上更新代码错误: Error:Server SSL certificate rejected

    在IDEA中更新代码到SVN中 ,出现了   Error:Server SSL certificate rejected    ---服务器的SSL证书  的错误 之前在网上有找过一些相关的做法,但是 ...

  4. 每隔10秒自动更新svn 定时更新svn 脚本

    任务: */1 * * * * /opt/adobe/fms/webroot/api/svn.sh 这个命令的问题:只更新了版本号,没有更新实际内容,但是直接运行上面shell脚本能更新. 解决:需要 ...

  5. 为什么有的文件从SVN上更新不下来

    前几天使用eclipse的插件从SVN上更新代码,将全部的代码更新下来后启动项目,前台报错说有些js文件找不到,后来检查我的工程里确实没有那些文件,经过检查发现SVN上却有这些文件,那为什么更新不下来 ...

  6. eclipse中使用svn提交,更新代码。

    在新公司工作,版本管理工具变成了svn,之前一直用git作为版本管理,用的编辑IDE是IntelliJIDEA,在这个编辑器下工作,还是很方便的,但是现在使用eclipse和svn.有点不习惯,但还是 ...

  7. svn 更新代码

    SVN 更新代码 --force # 强制覆盖 /usr/bin/svn --username user --password passwd co $Code ${SvnPath}src/ # 检出整 ...

  8. 分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

    分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2 使用sv ...

  9. 解决Idea中没有SVN标识,不能提交、更新代码

    使用idea也不久,今天从svn上down下来的项目导入idea,发现写的代码不能在idea里面更新,记录下解决方案. 步骤 1.点击VCS,然后Enable Version Control Inte ...

随机推荐

  1. OA项目_环境搭建

    OA项目现在要做成微服务,用的框架是springboot,所用的编程工具是idea,maven,做为一个程序员最关心的就是我需要在那个架包中编写代码,我们只需关注domain,repository,s ...

  2. NodeJS学习笔记三

    map map对象是一个简单的键/值映射.任何值(包括对象和原始值)都可以用作一个键或一个值. var m = new Map(); var o = {p: "Hello World&quo ...

  3. dns之缓存。

    1.浏览器缓存.这里以chrome为例.在chrome上输入:chrome://net-internals/#dns 可以查看chrome浏览器的dns缓存信息. 这样. 2.windows系统缓存. ...

  4. Bootstrap fileinput v2.0(ssm版)

    前言bootstrap fileinput是一个很好的文件上传插件.但是官方不出api,这就尴尬了.百度一下,每个人写法都不相同,好多代码本身都是错的.我修改后才能跑起来.综上所述:所以今天我摸索了一 ...

  5. react 修改循环列表的当前单个子项状态:思路 拿原始state数据更改,再做请求

    handleLike(item,index){ var id = item.id; _ENV.post( _ENV.HOST+'/communion/video-up', {'user_id':loc ...

  6. java 中list进行动态remove处理

    java中遍历 list遇到需要动态删除arraylist中的一些元素 的情况 错误的方式 for(int i = 0, len = list.size(); i < len; i++){ if ...

  7. mysql 触发器 trigger用法 one (简单的)

    实例~~ example1: 创建表tab1 1 2 3 4 DROP TABLE IF EXISTS tab1; CREATE TABLE tab1(     tab1_id varchar(11) ...

  8. Redis之Python 使用 Redis

    Python 使用 Redis 参考文档: http://redis.cn/clients.html#python https://github.com/andymccurdy/redis-py 安装 ...

  9. 【转】TCP端口号记录

    转载自:tcp/ip 端口号有哪些 常用端口一览表: 1 传输控制协议端口服务多路开关选择器 2 compressnet 管理实用程序 3 压缩进程 5 远程作业登录 7 回显(Echo) 9 丢弃 ...

  10. POJ 2486 Apple Tree(树形dp)

    http://poj.org/problem?id=2486 题意: 有n个点,每个点有一个权值,从1出发,走k步,最多能获得多少权值.(每个点只能获得一次) 思路: 从1点开始,往下dfs,对于每个 ...