批量更新和打包多個Git庫目錄

2021-08-15 09:25:39 字數 2802 閱讀 3214

建立乙個專門存放git庫專案的目錄,例如d:\git。

project專案的本地git庫目錄為d:\git\project\.git。

更新(git pull)d:\git目錄下的所有git/hg專案,在該目錄下執行gitpullall.bat批處理檔案:

:: gitpullall.bat

@echo off

setlocal enableextensions

set mygit="d:\program files\git\bin\git.exe"

set myhg="d:\program files\tortoisehg\hg.exe"

for /d %%x in (*) do (

if exist "%%x\.git\" (

cd /d "%%x"

echo ***** git pull %%x

%mygit% pull --recurse-submodules=yes --ff-only --all --progress

cd /d ..

) else if exist "%%x\.hg\" (

cd /d "%%x"

echo ***** hg pull %%x

%mygit% pull -u

cd /d ..

) else echo ..... skipped %%x

):bye

pause

endlocal

如果只需要fetch所有remote源,執行gitfetchall.bat批處理檔案:

:: gitfetchall.bat

@echo off

setlocal enableextensions

set mygit="d:\program files\git\bin\git.exe"

for /d %%x in (*) do (

if exist "%%x\.git\" (

cd /d "%%x"

echo ***** git fetching %%x

%mygit% fetch --all --recurse-submodules=yes -v --progress

cd /d ..

) else echo ..... skipped %%x

):bye

pause

endlocal

# 打包乙個或多個git庫

:: packdir.bat

@echo off

setlocal enableextensions

set my7z="d:\program files\7-zip\7z.exe"

if "%1" == "" (

for /d %%x in (*) do (

if exist "%%x\.git\" (

del "%%x.7z" 1>nul 2>&1

echo ***** packing %%x\.git\ to %%x.7z

%my7z% a -mx9 "%%x.7z" "%%x\.git\" 1>nul

) else echo ..... skipped %%x

)) else (

del "%1.7z" 1>nul 2>&1

if exist "%1\.git\" (

echo ***** packing %1\.git\ to %1.7z

%my7z% a -mx9 "%1.7z" "%1\.git\" 1>nul

) else for /d %%x in (*) do (

if exist "%%x\.git\" (

echo ***** packing %%x\.git\ to %1.7z

%my7z% a -mx9 "%1.7z" "%%x\.git\" 1>nul

) else echo ..... skipped %%x

)):bye

pause

endlocal

在d:\git目錄下帶引數project執行packdir.bat批處理檔案,則僅將project\.git\目錄打包為project.7z。

如果引數不是乙個子目錄名,則將所有子專案的.git\目錄打為乙個整包,包名為「引數.7z」。

如果不帶引數,則對當前目錄下所有專案的.git\目錄分別打包,包名為對應「子目錄名.7z」,包內儲存路徑"子目錄名\.git\"。

將打包檔案解壓後進入.git\上級專案目錄,執行"git checkout -f --"即可恢復該專案**。

如果需要批量恢復所有子專案目錄下的**,執行gitcheckoutall.bat批處理檔案:

:: gitcheckoutall.bat

@echo off

setlocal enableextensions

set mygit="d:\program files\git\bin\git.exe"

for /d %%x in (*) do (

if exist "%%x\.git\" (

cd /d "%%x"

echo ***** git checkout %%x

%mygit% checkout --recurse-submodules -f --

cd /d ..

) else echo ..... skipped %%x

):bye

pause

endlocalsetlocal enableextensions

Hibernate批量更新和批量刪除

在最近的銀行系統中多處涉及到批量操作問題,起初用hibernate的更新用法沒太注意,開發的時候由於資料量少,看不出有什麼效能問題,到後來造大量資料測試的時候,發現反應超慢,後倆經過仔細分析考慮,採用了儲存過程的方式來解決,果然系統反應快了很多,以下就是解決問題的過程,以客戶資訊表customers...

在Hibernate中處理批量更新和批量刪除

page load marshal data pump 批量更新是指在乙個事務中更新大批量資料,批量刪除是指在乙個事務中刪除大批量資料。以下程式直接通過hibernate api批量更新customers表中年齡大於零的所有記錄的age欄位 tx session.begintransaction i...

在Hibernate應用中批量更新和批量刪除

批量更新是指在乙個事務中更新大批量資料,批量刪除是指在乙個事務中刪除大批量資料。以下程式直接通過hibernate api批量更新customers表中年齡大於零的所有記錄的age欄位 tx session.begintransaction iterator customers session.fi...