Subversion版本控制資訊的清除

2021-04-30 14:42:29 字數 1617 閱讀 3582

有時候,你可能得到乙份**,裡面含有很多的.svn目錄,這就是subversion的版本控制資訊儲存的目錄,如果你只想要源**樹,你就得想麼辦法來清除它們。

你可以有很多種方法來實現,這裡提供一種基於windows命令列指令碼的實現。

@setlocal

@set startdir=%cd%

@set /a foldercounter=0

:: 如果指定了掃瞄路徑,則進入該路徑進行處理;否則,從當前路徑開始處理。

@if not "%1"=="" ( if exist %1/nul cd /d %1 )

@echo start directory is [%cd%]

:: 設定臨時檔案名稱

@set tempfile=templst%date:~5,2%%date:~8,2%.txt

@echo tempfile=%tempfile%

:: 搜尋所有的.svn目錄

@dir /s /ad /b | findstr /e /c:".svn"  > %tempfile%

:: 如果是_svn目錄,就用下面一行**

::@dir /s /ad /b | findstr /e /c:"_svn" > %tempfile%

::type %tempfile%

:: 刪除.svn目錄樹

@for /f "tokens=2* delims=:" %%i in (%tempfile%) do @if not "%%i"=="" (

@echo folder=[%%i]

@rd /s /q "%%i"

@set /a foldercounter+=1

):: 刪除建立的臨時檔案

@del /q %tempfile%

@cd /d %startdir%

@echo return to directory [%cd%]

@endlocal

@exit /b 0

在軟體測試過程中,我遇到了帶有版本資訊的很大的目錄樹,通過測試之後,階段性備份源**時不需要版本控制資訊了怎麼辦,於是就寫了上面一段指令碼,實現了所需要的功能。因為以前在網上看過類似的需求,所以貼出來與大家共享。

後來上網碰到了一段更高效的實現是利用for /f in(.)  的列舉特性,新增注釋和必要的輸出資訊後的**如下:

@echo off

@echo 刪除svn版本控制資訊

::for /r [[drive:]path] %variable in (set) do command [command-parameters]

::::    檢查以 [drive:]path 為根的目錄樹,指向每個目錄中的

::    for 語句。如果在 /r 後沒有指定目錄,則使用當前

::    目錄。如果set僅為乙個單點(.)字元,則列舉該目錄樹(不含檔案)。

for /r . %%i in (.) do @if exist "%%i/.svn" (

@echo "folder=[%%i/.svn]"

@rd /s /q "%%i/.svn"

)@echo completed.

它遞迴處理當前目錄及其所有子目錄,刪除所有的.svn資訊

版本控制系統Subversion

系統提供撤銷的功能對我們實際開發中特別重要。改動後撤銷幾乎也是我們每個人經常做的事情。再多人進行同乙個專案的開發或者測試的時候,版本的唯一性 類似於臨界區資源 也就是說a 和 b 兩個人協同工作的時候不能同時對同乙個檔案改動,並儲存成功。否則就會出現不一致問題。版本控制系統很好的解決了這一問題,並且...

Subversion 版本管理

最近用了subversion,感覺不錯.來個walkthrough吧 先建乙個專案叫 my project svn mkdir svn 再把這個專案check out到本地當前目錄,別忘了那一點 svn co svn 在本地搗鼓你的專案,如此這搬 my project src main src te...

subversion版本控制系統的搭建和使用

subversion 版本控制系統 主要功能是儲存每一次修改 安裝包 subversion mkdir var svn svnadmin create var svn xixi 建立乙個xixi的版本庫 ls var svn xixi conf db format hooks locks readm...