【开发工具】如何自动更新本地仓库代码(一)

简介: 【开发工具】如何自动更新本地仓库代码(一)

缘起


  • 在实际应用中,代码仓库要么使用svn、要么使用git。为了开发时可以使用最新代码,经常需要将本地代码与服务器代码保持一致,手动操作固然可行,但可以有更好的选择;


  • 可利用定时机制,定时从svn或git服务器更新代码,实际操作中,需要解决两个问题:定时、更新代码。


Windows下的定时问题


利用windows自带“任务计划程序”


  • windows管理工具——>任务计划程序——>创建任务进入定时任务



- 创建任务中,常规选项卡中,建议勾选不管用户登陆和不存储密码选项:



  • 建立触发器,对应触发方式,可一次,也可每天每周这种:



  • 指定具体的操作,如执行某个bat文件:



schtasks


  • 计划命令和程序以定期或在特定时间运行,在计划中添加和删除任务,启动和停止按需任务,以及显示和更改计划任务。


  • schtasks.exe工具与控制面板中的 “计划任务” 执行相同的操作。 可以将这些工具一起使用,并且可以互换使用。


schtasks /create /tn "test" /tr "\"C:\svn update\code-update.bat"" /sc HOURLY /mo 1 


at命令


  • 从Win8开始不再支持at命令;


  • at仅能执行一次,无法周期执行;


vbs脚本


  • 下面是一个简单的例子,每小时执行一次code-update.bat脚本,其他定时情况可参考:


Set ws=wscript.createobject("wscript.shell")
dim bat
'svn-update.bat即为更新本地代码的bat脚本,默认与当前脚本存储在同一目录下
bat="cmd.exe /c code-update.bat"
do
'0表示不显示窗口,1显示,调试用
ws.run bat,0
'每小时执行一次
wscript.sleep 3600000
echo begin next execute
loop


python语言


  • 可使用Python 实现定时任务,实际有很多种,常见下面几种:


循环 sleep


threading模块中的Timer


使用schedule模块


APScheduler定时框架


Celery分布式系统


  • 这里仅提供一个使用schedule的例子:


import datetime
import schedule
import time
def code-update():
    #仅举例做定时任务,不做实际的更新动作
    print('Begin to update local code')
def tasklist():
    #创建一个按1小时的间隔执行任务
    schedule.every(3600).seconds.do(code-update)
    #每1分钟检查一次
    while True:
        schedule.run_pending()
        time.sleep(60)
#清空任务
schedule.clear()
#开始执行
tasklist()


Linux下的定时问题



  • 以crontab为例来说明,每小时执行一次代码更新动作:


*/60  * * * * code-update.sh #每60分钟即每小时执行一次
相关文章
|
分布式计算 监控 搜索推荐
Elasticsearch之SearchScroll原理剖析和优化
Elasticsearch是一款优秀的开源企业级搜索引擎,其查询接口主要为Search接口,提供了丰富的各类查询、排序、统计聚合等功能。本文将要介绍的是另一个查询接口SearchScroll,同时介绍一下我们在这方面做的一些性能和稳定性等方面的优化工作。   Elasticsearch的SearchScroll接口可用于从索引中检索大量数据,或者是所有的数据,值得注意的是Elasti
5487 0
Elasticsearch之SearchScroll原理剖析和优化
|
供应链 关系型数据库 MySQL
可重复读解决了哪些问题
在数据库事务处理中,隔离级别是一个核心概念,它决定了事务在并发执行时如何相互隔离。MySQL的隔离级别之一“可重复读(REPEATABLE READ)”解决了多个并发事务中的数据一致性问题。本文将详细探讨可重复读隔离级别解决了哪些问题。
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能舆情监测与分析
【8月更文挑战第16天】 使用Python实现深度学习模型:智能舆情监测与分析
914 1
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
1886 5
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
11月前
|
人工智能 前端开发 架构师
2025年前端局势分析,我该不该转行?
2024年,前端领域经历了快速变化,AIGC的兴起和市场HC减少使得前端工程师面临挑战。尽管AI工具如通义灵码和Cursor能高效生成代码,但AI无法完全取代前端工程师,因其缺乏逻辑、沟通和创新能力。前端工作不仅限于编码,还包括需求分析、代码评审等。未来,前端不会“死亡”,而是持续演变。面对大环境的压力,提升综合能力、拥抱变化、持续学习和保持身心健康是关键。转型方向包括升管理、做架构师或转讲师等。稳住2025年,需适应变化、不断学习并探索更多可能性。
1901 16
|
前端开发 JavaScript 算法
使用 JavaScript 数组方法实现排序与去重
【10月更文挑战第21天】通过灵活运用 `sort()` 方法和 `filter()` 方法,我们可以方便地实现数组的排序和去重。同时,深入理解排序和去重的原理,以及根据实际需求进行适当的优化,能够更好地应对不同的情况。可以通过实际的项目实践来进一步掌握这些技巧,并探索更多的应用可能性。
379 59
Vue3拖拽插件(vuedraggable@next)
vuedraggable 是一款 Vue2 拖拽插件,可轻松实现列表项的拖拽排序与交互。通过简单配置,即可在不同区域间拖动元素并实现数据同步。支持多种事件监听和自定义样式。
1547 2
Vue3拖拽插件(vuedraggable@next)
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
Rust 安全 调度
从零构建梦想操作系统:用Rust语言亲手打造专属内核,你也可以成为系统开发者!
【8月更文挑战第31天】开发操作系统内核虽具挑战,却也充满乐趣。本文将指导你从零开始,使用Rust语言构建一个简单的操作系统内核。首先安装Rust环境和交叉编译工具链,然后创建新项目`my_kernel`。通过修改`Cargo.toml`和编写启动函数,结合串口输出和`multiboot2`库,最终使用QEMU运行内核。此教程旨在帮助你理解Rust在系统开发中的应用,激发深入探索的兴趣。
824 1

热门文章

最新文章