|
|
前段时间看到某个群里有人说代码损坏又没有备份导致了源码无法找回,突发奇想可以使用git仓库来白嫖代码备份空间,还有版本控制的功能,然后搜了一下相关资料,搜索结果推荐使用git hook,但是无法实时感知文件变化进行备份,然后另辟蹊径使用批处理来达到目的。
原理就是间隔一定时间就检查一遍当前仓库文件的git状态,这个方法不需要繁琐的检测文件变动,还能实时提交代码备份。
修改INTERVAL的值来控制检测时间间隔,单位是秒,检测到状态更改后会自动执行add、commit、push。
注意,如果文件过多变动过快的话建议把间隔时间加大,避免提交失败等情况的出现,如果远程仓库有新提交的话一定要先执行git pull再打开本工具。
- @echo off
- cd /d %~dp0
- chcp 65001 >nul
- set INTERVAL=3
- echo ========================================
- echo Git自动同步助手已启动
- echo ========================================
- :loop
- git status --porcelain 2>nul | findstr "^" >nul
- if %errorlevel% equ 0 (
- setlocal enabledelayedexpansion
-
- set d=%date%
- set d=!d:/=!
- set d=!d:-=!
- set d=!d: =!
- set d=!d:周=!
- set d=!d:一=!
- set d=!d:二=!
- set d=!d:三=!
- set d=!d:四=!
- set d=!d:五=!
- set d=!d:六=!
- set d=!d:日=!
-
- set t=%time: =0%
- set t=!t::=!
- set t=!t:.=!
-
- set msg=自动备份_!d!_!t:~0,6!
-
- echo.
- echo ----------------------------------------
- echo [%date% %time%] 发现变动
-
- echo [1.变更清单]
- git status -s
-
- echo [2.提交更改]
- git add .
- git commit -m "!msg!"
-
- echo [3.推送远程]
- git push
-
- if !errorlevel! equ 0 (
- echo [%date% %time%] 同步成功
- ) else (
- echo [%date% %time%] 同步失败
- powershell -Command "Add-Type -AssemblyName PresentationFramework; [System.Windows.MessageBox]::Show('Git Sync Failed', 'GitHelper', 'OK', 'Error')"
- )
-
- echo ----------------------------------------
- endlocal
- )
- timeout /t %INTERVAL% /nobreak >nul
- goto loop
复制代码
|
|