SVN可以使用svn update path的方式將服務器上最新的版本同步到本地,
也可以使用svn commit path的方式將本地的版本同步到服務器上,但是commit僅支持已經版本控制過的文件,
對於新加的目錄或文件並不支持,所以爲了能夠實現該功能,花了半天時間寫了個bat來處理,
實現原理是先查找新添加的文件,然後使用svn add path添加入版本庫,而後再svn commit。
貼出供大家參考:
svn_commit.bat
------------------------------------------------------
@echo off
REM 設置SVN目錄
set SVN_DB="D:\SHARE\DOCUMENT\SVN"
REM 同步
svn update %SVN_DB%
REM 顯示目錄下未commit各文件狀態到臨時文件,每個狀態一行
svn status %SVN_DB% > c:\svn.txt
REM 解析臨時文件,對各狀態進行解析,新建的目錄進行add
for /f "delims=" %%i in (c:\svn.txt) do (
call svn_commit_one.bat "%%i"
)
REM 統一提交
svn commit %SVN_DB% -m "服務器自動處理"
svn_commit_one.bat
---------------------------------------------------
REM 讀取參數
SET SVN_PARA=%1
REM 讀取第一位狀態
SET SVN_TYPE=%SVN_PARA~1,1%
REM 讀取後續狀態的文件名
SET SVN_FILE="%SVN_PARA~9%
REM 如果狀態是?,則目錄是未綁定狀態,先添加
IF "%SVN_TYPE%" == "?" (svn add %SVN_FILE%)
也可以使用svn commit path的方式將本地的版本同步到服務器上,但是commit僅支持已經版本控制過的文件,
對於新加的目錄或文件並不支持,所以爲了能夠實現該功能,花了半天時間寫了個bat來處理,
實現原理是先查找新添加的文件,然後使用svn add path添加入版本庫,而後再svn commit。
貼出供大家參考:
svn_commit.bat
------------------------------------------------------
@echo off
REM 設置SVN目錄
set SVN_DB="D:\SHARE\DOCUMENT\SVN"
REM 同步
svn update %SVN_DB%
REM 顯示目錄下未commit各文件狀態到臨時文件,每個狀態一行
svn status %SVN_DB% > c:\svn.txt
REM 解析臨時文件,對各狀態進行解析,新建的目錄進行add
for /f "delims=" %%i in (c:\svn.txt) do (
call svn_commit_one.bat "%%i"
)
REM 統一提交
svn commit %SVN_DB% -m "服務器自動處理"
svn_commit_one.bat
---------------------------------------------------
REM 讀取參數
SET SVN_PARA=%1
REM 讀取第一位狀態
SET SVN_TYPE=%SVN_PARA~1,1%
REM 讀取後續狀態的文件名
SET SVN_FILE="%SVN_PARA~9%
REM 如果狀態是?,則目錄是未綁定狀態,先添加
IF "%SVN_TYPE%" == "?" (svn add %SVN_FILE%)