如何在PowerShell中处理git status --porcelain输出实现邮件HTML换行?
解决Git状态输出在邮件中单行显示的问题
修改思路
- 避免重复执行
git status --porcelain,一次性获取并过滤需要的状态条目 - 给每个条目添加HTML换行标签
<br />,确保邮件中每个文件单独一行 - 调整邮件内容格式,适配HTML显示(需确保邮件发送函数支持HTML格式)
修改后的代码
$output = "" # 一次性获取并过滤需要的Git状态条目(M=修改,D=删除,??=未跟踪) $gitStatus = git status --porcelain | Where { $_ -match '^M |^D |^\?\?' } if ($gitStatus) { # 拼接文件夹名称,使用HTML换行 $output += "${Folder}:<br />" # 给每个状态条目添加<br />,并拼接成字符串 $output += $gitStatus -join "<br />" $output += "<br />" } if (-not [string]::IsNullOrEmpty($output)) { # 若Send-Email支持HTML参数,需指定BodyAsHtml为$true Send-Email -Body $output -BodyAsHtml $true }
关键修改说明
- 单次获取Git状态:将
git status --porcelain的结果提前保存到$gitStatus变量,避免两次执行导致的状态不一致问题 - 精确过滤条目:使用正则
^M |^D |^\?\?精准匹配开头为修改、删除、未跟踪的状态行,避免误匹配文件名中包含M/D的情况 - 添加HTML换行:通过
-join "<br />"将每个状态条目用<br />连接,确保邮件中每个文件单独一行显示 - HTML邮件支持:发送邮件时需确保
Send-Email函数允许设置BodyAsHtml为$true,否则<br />会被当作纯文本显示
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

