svn 批处理
@echo off
setlocal enabledelayedexpansion
:: 记录脚本本身的文件名(不带路径)
set "self=%~nx0"
echo ---------------------------------------------
echo SVN 强制同步脚本 - 保证本地与远程一致
echo 所有本地修改、未受控文件将被清除!
echo ---------------------------------------------
:: 暂存状态文件
set tempFile=__temp_svn_status.txt
svn status > "%tempFile%"
:: 删除未受版本控制的文件和文件夹
echo.
echo 正在删除未受控文件...
for /f "tokens=1,* delims= " %%a in (%tempFile%) do (
if "%%a"=="?" (
set "filepath=%%b"
set "filename=%%~nxb"
:: 判断是否为当前脚本
if /i "!filename!" NEQ "!self!" if /i "!filename!" NEQ "%tempFile%" (
echo 删除未受控文件:!filepath!
if exist "!filepath!" (
del /f /q "!filepath!" 2>nul
rmdir /s /q "!filepath!" 2>nul
)
)
)
)
:: 清理冲突文件和锁
echo.
echo 正在还原本地所有改动并解决冲突(包括冲突文件 C)...
svn revert -R .
:: 清理所有本地临时文件(如 lock)
svn cleanup
:: 强制更新到远程最新
echo.
echo 正在更新到远程仓库最新版本...
svn update --accept theirs-full
:: 删除临时文件
del "%tempFile%"
echo.
echo 本地仓库已完全同步为远程版本
pause