在還沒有使用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

最後修改日期: 15/03/2021

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。