小脚本:文件保存后,自动上传到git

devtools/2024/10/17 17:45:36/

闲来无事写写小脚本


假设已经有一个脚本

@echo off:START
:: 获取当前脚本的路径
cd /d %~dp0:: 清空提交注释变量的值
set commit_msg=:: 提示用户输入提交注释
set /p commit_msg=请输入提交注释(输入 n 退出)::: 如果用户输入内容为 n,则退出脚本
if /i "%commit_msg%"=="n" (exit
):: 如果用户没有输入内容,则使用默认的提交注释
if "%commit_msg%"=="" (set "commit_msg=自动推送: %date:~0,10%,%time:~0,8%"
):: 自动提交
git init 
git add . 
git commit -m "%commit_msg%" 
git push origin master
@echo 已经完成,:: 回到第一步,让用户输入
goto START

用来做git自动推送的。现在我们希望稍微修改这个脚本,满足以下功能:

  1. 获取该bat脚本所在文件夹下的所有文件,以及所有子文件夹的所有文件的修改时间,取最新时间,记为last_mod_time.
  2. 每隔1秒,重新获取修改时间,记为mod_time
  3. 判断,如果mod_time>last_mod_time,这表示文件在最近出现了修改;于是,触发上面自动提交的脚本(此时直接提交即可,无需用户输入任何内容)
  4. 完成之后,将last_mod_time修改为mod_time
    用windows下的bat文件来写:
@echo on
setlocal enabledelayedexpansion:: 获取当前脚本的路径
cd /d %~dp0:: 初始化Git仓库(如果还没有初始化)
git init:MONITOR
:: 强行添加所有文件到暂存区
git add .:: 尝试提交更改,使用当前日期和时间作为提交信息,并将输出重定向到变量
set "commit_msg=自动推送: %date% %time%"
git commit -m "%commit_msg%" 2>&1 | find "nothing to commit, working tree clean" >nulif errorlevel 1 (:: 如果有提交内容echo 有更改提交,推送到远程仓库...git pushecho 已经完成
) else (:: 如果没有提交内容echo 没有检测到更改,休息1秒后继续监控...
):: 等待1秒
timeout /t 1 >nul:: 继续监控  
goto MONITOR

git_pull_81">自动git pull

@echo on:: 获取当前脚本的路径
cd /d %~dp0:MONITOR
:: 从远程仓库拉取最新代码
git pull:: 等待1秒
timeout /t 1 >nul:: 继续监控
goto MONITOR

http://www.ppmy.cn/devtools/56447.html

相关文章

three.js - matcap材质(MeshMatcapMaterial)

说一下matcap纹理 先总结:MeshMatcapMaterial材质,通过采样含有光照信息的贴图来模拟光照效果。这种材质特别适用于模拟静态光源下的光照,并且,因其简单性和快速性而被广泛应用于各种场景。但是,由于其性能考虑&#x…

el-tree结构清空选中节点

<el-tree:data"data"show-checkboxdefault-expand-allnode-key"id"ref"tree"highlight-current:props"defaultProps"> </el-tree>this.$refs.tree.setCheckedKeys(this.$refs.tree.getCheckedNodes(),false);

【C++笔记整理—第1期】

C笔记整理 本系列是C语言基础语法的学习笔记整理。 文章目录 C笔记整理结构体定义及初始化结构体数组用指向结构体变量的指针构成链表函数传参的三种形式动态分配和撤销内存空间用typedef声明新的类型名 类和对象概述特点面向对象的软件工程 类的声明和对象的定义声明类类型 …

如何使用 asyncio.log 启用 Debug 日志

如何使用 asyncio.log 启用 Debug 日志 1. 导入必要的模块2. 配置日志记录3. 启用 asyncio 的调试日志4. 示例代码总结 在 Python 中使用 asyncio 模块时&#xff0c;有时我们需要查看调试日志来了解程序的运行情况。本文将介绍如何使用 asyncio.log 启用调试日志。 1. 导入必…

Python+requests+pytest+excel+allure 接口自动化测试实战

定义&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Pytest是Python的另一个第三方单元测试库。它的目的…

vue3 window.location 获取正在访问的地址,也可以通过useRoute来获取相关信息。

1、一般我们在开发的vue3项目的时候&#xff0c;地址是这样&#xff1a;http://192.168.1.101:3100/#/login 然后我们在布署完成以后一般是这样https://xxx.yyyyy.com/uusys/#/login 其实xxx可以是www&#xff0c;也可以是一个二级域名 yyyyy.com是域名&#xff0c;uusys一般…

Dubbo 3.x源码(22)—Dubbo服务引用源码(5)服务引用bean的获取以及懒加载原理

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo3.1版本的服务引入的总体流程&#xff0c;当然真正的服务远程引入、以及配置迁移啥的都还没讲&#xff0c;但是本次我们先不接着讲MigrationRuleListener#onRefer方法&#xff0c;而是先…

【2024.6.23】今日科技时事:科技前沿大事件

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…