在還沒有使用devops CI/CD的專案時,將差異檔匯出後deploy到production這個工作,一直是許多人心裡的痛點,但是工欲善其事必先利其器,這裡使用三種方式來進行POC
1. tortoisegit
2. git extensions
3. 命令列來將檔案匯出
原本已經測試過,但是太久沒有使用就又遇到了git extensions輸出檔不如預期的狀況,找了好久才發現原來是選取的順序錯了,記得要使用前先閱讀複習,可以省下許多時間
1.1 tortoisegit Show log
1.2 選取兩個版本 Compare revisions
1.3 差異檔全選Ctrl+A,export selection to 準備打包的目錄,預設是以較舊的版本為base,抓新的版本,若是出問題要還原,則按右上角圖示,就會變成新版本為base,還原舊的版本
2.Git Extensions的也是選兩個版本,但是有順序性的,先選舊的本,再選新的版本,才會匯出新的版本,若是要還原,就是先選新,再選舊,直接archive this commit
不需要特別打勾,若是順序錯了就會匯出不包含更新的檔案..
3.命令列來將檔案匯出
https://blog.miniasp.com/post/2014/04/01/Git-Export-Only-Added-Modified-Files
我只試出來Windows 環境要加
解決輸出中文編碼的檔名
git config –global core.quotepath false
git diff-tree -r –no-commit-id –name-only –diff-filter=ACMRT HEAD
可以查出差異檔 , 至於文章中的cmd我在中文環境下會失敗
原來的cmd我把git diff改成上面那一行,才符合我預期的導出差異檔
@ECHO OFF
setlocal enabledelayedexpansion
SET zipfile=update.zip
IF “%1″==”” GOTO Help
IF NOT “%2″==”” SET zipfile=%2
set output=
for /f “delims=” %%a in (‘git diff-tree -r –no-commit-id –name-only –diff-filter=ACMRT %1^^’) do ( set output=!output! “%%a” )
git archive -o %zipfile% HEAD %output%
endlocal
GOTO Exit
:Help
ECHO.
ECHO 用法: git-export-changes ^<ref^> ^<filename.zip^>
ECHO.
ECHO 輸入 ^<ref^> 的時候,可用 HEAD,該程式會自動跟前一個版本做比較
ECHO 若沒輸入 ^<filename.zip^> 的時候,預設為 updates.zip 並輸出在當前目錄
ECHO.
PAUSE
:Exit
留言