如何通过返回码检测TortoiseSVN更新冲突以控制WebLogic启动
Absolutely, you can implement this by either checking the exit code of TortoiseProc.exe or scanning for conflict-specific files after the update. Let’s walk through both practical approaches:
1. Check the Exit Code of TortoiseProc.exe
TortoiseSVN’s TortoiseProc.exe returns specific exit codes that let you know the outcome of the update operation. Here are the key codes you care about:
0: Update completed successfully with no conflicts or errors1: The user canceled the update operation2: Errors occurred during the update (this includes conflicts)
The critical thing here is to run TortoiseProc.exe synchronously so you can capture its exit code. Use START /WAIT to ensure your script waits for the update to finish before proceeding.
Here’s a modified batch script example:
@echo off REM Run SVN update and wait for it to finish START /WAIT TortoiseProc.exe /command:update /path:"my_path" /closeonend:0 REM Check the exit code to decide next steps IF %errorlevel% EQU 0 ( echo SVN update completed without issues. Starting WebLogic... REM Replace with your actual WebLogic start command start "" "C:\path\to\weblogic\startup.cmd" ) ELSE ( echo SVN update hit a problem (either conflicts or user cancellation). Skipping WebLogic startup. )
2. Scan for Conflict-Specific Files
If you want to specifically target only conflicts (ignoring user cancellations), you can check for the files SVN creates when conflicts occur. When a conflict happens, SVN generates these files in your working copy:
filename.mine: Your local version of the file before the updatefilename.r[XXXX]: The server’s old version (XXXX is the revision number)filename.r[YYYY]: The server’s new version (YYYY is the latest revision)
You can search for these files using a batch command, and only start WebLogic if none are found:
@echo off START /WAIT TortoiseProc.exe /command:update /path:"my_path" /closeonend:0 REM Search for conflict-related files in the working copy dir /s /b "my_path\*.mine" "my_path\*.r*" | findstr /r "\.r[0-9]*$" >nul REM If no conflict files are found, start WebLogic IF %errorlevel% EQU 1 ( echo No SVN conflicts detected. Launching WebLogic... start "" "C:\path\to\weblogic\startup.cmd" ) ELSE ( echo Conflicts found in the SVN update. WebLogic startup skipped. )
The findstr command filters to ensure we only match files ending with .r followed by numbers (to avoid false positives with files that naturally have .r in their names).
Bonus: Combine Both Methods for Precision
If you want to cover all bases—skip WebLogic for both conflicts and user cancellations, but also explicitly flag conflicts when they happen—you can combine both checks:
@echo off START /WAIT TortoiseProc.exe /command:update /path:"my_path" /closeonend:0 IF %errorlevel% NEQ 0 ( dir /s /b "my_path\*.mine" "my_path\*.r*" | findstr /r "\.r[0-9]*$" >nul IF %errorlevel% EQU 0 ( echo SVN conflicts detected! WebLogic startup aborted. ) ELSE ( echo Update was canceled by user. WebLogic startup skipped. ) ) ELSE ( echo Update successful. Starting WebLogic... start "" "C:\path\to\weblogic\startup.cmd" )
内容的提问来源于stack exchange,提问作者Bala Ji

