Git for Windows Portable 檔案精簡化
4 |
在 web.config PowerShell 更新函式庫中,我借用 git diff 比對 web.config 修改前後變化。由於並非所有主機都會安裝 Git for Windows,我想到讓工具自帶可攜版 Git for Windows Portable 的解法,但有點美中不足,Git for Windows Portable 容量高遠 271MB:
為了簡單的異動對照功能,包進 6052 個檔案佔用近 300MB 超不划算,但 git diff 已用得順手,實在不想花時間找替代方案,於是我把腦筋動到「整理一份能跑 git diff 的最精簡版本」。
方法不難,只需要夠強的動機跟一點耐心。用 Process Monitor 觀察 Git for Windows 執行 git diff 過程讀到哪些檔案:(小技巧:Filter 條件可設定檔案路徑 (Path) 以 GitPortal 起始 + Result 等於 SUCCESS,聚焦成功讀取的檔案)
git diff 過程動用了 git.exe 跟 less.exe 兩個執行檔、一些 dll 程式庫及設定檔。Process Monitor 可將存取記錄匯出成 PML( Process Monitor 專屬格式)、XML 或 CSV,大家知道我要做什麼了吧?
沒錯,那就寫一段 PowerShell 將用到的檔案自動打包吧!
$dupCheck = @{}
Get-Content D:\GitFileLog.CSV | ConvertFrom-Csv |
ForEach-Object {
$srcPath = $_.Path
if (Test-Path $srcPath -PathType Leaf) {
$dstPath = $srcPath.Replace('X:\Github\PSLab\IisConfig\GitPortable\', 'D:\GitCompact\')
if (!$dupCheck.ContainsKey($dstPath)) {
$dupCheck.Add($dstPath, $true)
[System.IO.Directory]::CreateDirectory([System.IO.Path]::GetDirectoryName($dstPath)) | Out-Null
Copy-Item $srcPath $dstPath
}
}
}
精簡版共 16 個檔案合計 9.5MB,體積縮小到原來的 3.5%,實測也能順利跑完 git diff,大成功!
I want to use git diff but Git for Windows Portable take more than 270MB, so I use Process Monitor to pick required file to create a minimal version for git diff.
Comments
# by Jackson2847
需要檔案清單 XD
# by Jeffrey
to Jackson2847,最後一張圖左側有清單,共 16 個檔案。
# by erik
剛好需要,找到這篇非常有用的方法。 謝謝大大。 經過測試,若不filter "CloseFile" 可能會多抓一些其他沒用的檔案。 PS: 我不是需要 git diff, 我是需要執行bash script + curl + sed.
# by 王佐
为什么我的依赖没有dll