我的脚本需要一些帮助;我已经完成了第一部分,但第二部分我并不完全确定是否需要第二部分。 首先,脚本从分支输出文件和哈希值。在哈希旁边,我设法添加了一个符号,我可以在以后更改输出" hash"我要提出的第二部分" file"在输出的每个文件旁边,下面我已经包括输出应该是什么,就像那样;但我似乎无法获得" file"每个文件名旁边的符号。
$GitList = git log master..branch2 --pretty=format:'%H' --reverse
foreach ($hash in $GitList) {
"$hash hash"
$files = git show $hash --pretty="format:" --name-only
$files
}
#-------------------------------output should be like below
37b970b35681728db2faa4135681728d hash
branch2/ScriptPart1.ps1 file
37b970b371a7805a657030f687135681728d hash
branch2/ScriptPart2.ps1 file
branch2/ScriptPart3.ps1 file
37b970b30a137b970b381e5d5135681728d hash
branch2/ScriptPart2.ps1 file
321b2feb5d37b970b32d47f4135681728d hash
提前致谢
答案 0 :(得分:2)
我只会做一个快速而肮脏的foreach-object并完成它......有点像:
$files | Foreach-Object { "{0} file" -f $_ }
答案 1 :(得分:0)
您的主要问题可能是,该行的返回值:
git show $hash --pretty="format:" --name-only
由PowerShell作为字符串数组处理,其中包含两个项目,其中第一个项目包含空字符串。
直接处理第二项是实现您想要做的事情的方法:
$GitList = git log master --pretty=format:'%H' --reverse
foreach ($hash in $GitList) {
"$hash hash"
(git show $hash --pretty="format:" --name-only)[1] + ' file'
}
顺便说一句:根据您的情况,您可以考虑使用PSObjects作为输出。特别是如果您计划通过PowerShell进一步处理脚本的输出:
foreach ($hash in $GitList) {
$file = (git show $hash --pretty="format:" --name-only)[1]
New-Object -Type psobject -Property @{'Hash'= $hash; 'File' = $file}
}