mirror of
https://git.fightbot.fun/hxuanyu/BingPaper.git
synced 2026-02-15 07:19:33 +08:00
新增脚本:添加批处理和 PowerShell 脚本用于项目版本标签的自动化创建与推送
This commit is contained in:
53
scripts/tag.bat
Normal file
53
scripts/tag.bat
Normal file
@@ -0,0 +1,53 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
:: 切换到项目根目录
|
||||
cd /d %~dp0..
|
||||
|
||||
:: 获取版本号
|
||||
set TAG_NAME=%1
|
||||
|
||||
if "%TAG_NAME%"=="" (
|
||||
echo Usage: .\scripts\tag.bat ^<version^>
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: 确保在 master 分支
|
||||
for /f "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do set CURRENT_BRANCH=%%i
|
||||
if not "%CURRENT_BRANCH%"=="master" (
|
||||
echo Error: Must be on master branch to tag. Current branch: %CURRENT_BRANCH%
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: 检查是否有未提交的代码
|
||||
set CHANGES=
|
||||
for /f "tokens=*" %%i in ('git status --porcelain') do set CHANGES=%%i
|
||||
if not "%CHANGES%"=="" (
|
||||
echo Error: You have uncommitted changes. Please commit or stash them first.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: 拉取最新代码
|
||||
echo Updating master branch...
|
||||
git pull origin master
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
|
||||
:: 检查本地和远端是否一致
|
||||
for /f "tokens=*" %%i in ('git rev-parse @') do set LOCAL=%%i
|
||||
for /f "tokens=*" %%i in ('git rev-parse @{u}') do set REMOTE=%%i
|
||||
|
||||
if not "%LOCAL%"=="%REMOTE%" (
|
||||
echo Error: Local branch is not in sync with remote. Please push your changes first.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: 创建并推送 tag
|
||||
echo Creating tag %TAG_NAME%...
|
||||
git tag -f "%TAG_NAME%"
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
|
||||
echo Pushing tag %TAG_NAME% to remote...
|
||||
git push origin "%TAG_NAME%" -f
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
|
||||
echo Done! GitHub Action should be triggered shortly.
|
||||
50
scripts/tag.ps1
Normal file
50
scripts/tag.ps1
Normal file
@@ -0,0 +1,50 @@
|
||||
# 切换到项目根目录
|
||||
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
if ($ScriptDir) { Set-Location (Join-Path $ScriptDir "..") }
|
||||
|
||||
# 获取版本号
|
||||
$TagName = $args[0]
|
||||
|
||||
if (-not $TagName) {
|
||||
Write-Host "Usage: .\scripts\tag.ps1 <version>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 确保在 master 分支
|
||||
$CurrentBranch = git rev-parse --abbrev-ref HEAD
|
||||
if ($CurrentBranch -ne "master") {
|
||||
Write-Host "Error: Must be on master branch to tag. Current branch: $CurrentBranch" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 检查是否有未提交的代码
|
||||
$Changes = git status --porcelain
|
||||
if ($Changes) {
|
||||
Write-Host "Error: You have uncommitted changes. Please commit or stash them first." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 拉取最新代码
|
||||
Write-Host "Updating master branch..."
|
||||
git pull origin master
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
# 检查本地和远端是否一致
|
||||
$Local = git rev-parse @
|
||||
$Remote = git rev-parse @{u}
|
||||
|
||||
if ($Local -ne $Remote) {
|
||||
Write-Host "Error: Local branch is not in sync with remote. Please push your changes first." -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 创建并推送 tag
|
||||
Write-Host "Creating tag $TagName..."
|
||||
git tag -f "$TagName"
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
Write-Host "Pushing tag $TagName to remote..."
|
||||
git push origin "$TagName" -f
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
Write-Host "Done! GitHub Action should be triggered shortly."
|
||||
Reference in New Issue
Block a user