gpt4 book ai didi

git - 如何使用 powershell 脚本动态添加 git 审阅者?

转载 作者:行者123 更新时间:2023-12-04 14:57:27 25 4
gpt4 key购买 nike

我正在处理一个项目,我想为我的存储库的不同分支添加不同的审阅者。
我通常使用以下命令添加审阅者:

git push --receive-pack='git receive-pack --reviewer=abc.def --reviewer=john.doe' origin HEAD:refs/for/<branch_name>
由于我使用 powershell 终端,因此我编写了一些脚本来简化我的工作。如何根据我当前的存储库分支动态添加不同的审阅者组?
到目前为止,我的 powershell 函数看起来像这样......
$BranchReviewerMap = @{ 
'devO' = "'git receive-pack --reviewer=abc.def --reviewer=efg.hij'"
'devI' = "'git receive-pack --reviewer=m.ks --reviewer=t.ch --reviewer=imt.h'"
'devT' = "'git receive-pack --reviewer=m.ks --reviewer=t.ch --reviewer=ay.an'"
'test' = "'git receive-pack --reviewer=m.ks'"
}

function mkb_git_push {
[CmdletBinding()]
param (
[ValidateSet("merge", "commit", "test")]
[String] $commit_type = "commit"
)
$default_commit = "commit"
$test_commit = "test"
Clear-Host

# ===========>>> Please ignore below parts. These are working just fine <<<=========== #
# Get Current branch
$cur_branch = git branch --show-current
# Some other calculation and logic, which works.
# ===========>>> Please ignore above parts. These are working just fine <<<=========== #

#Not able to make it work. Tried both from below two lines.
$reviewer = [String] $BranchReviewerMap[$cur_branch]
#$reviewer = $BranchReviewerMap[$cur_branch]
git push --receive-pack=$reviewer origin HEAD:refs/for/$cur_branch
}
我得到的错误是..

fatal: Gerrit Code Review: $reviewer: not foundfatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repositoryexists.


我不是在寻找任何 if()-else if()-else 类型的解决方案。
仅供引用:这是我的第一篇文章。请忽略我在帖子中的错误。

最佳答案

至少有一个问题在于您如何构建哈希表:
不包括嵌入式 '...' - 引用条目值;在条目定义期间,语法引用就足够了(您可以在此处使用单引号,因为这些值不引用 PowerShell 变量):

$BranchReviewerMap = @{ 
'devO' = "git receive-pack --reviewer=abc.def --reviewer=efg.hij"
'devI' = "git receive-pack --reviewer=m.ks --reviewer=t.ch --reviewer=imt.h"
'devT' = "git receive-pack --reviewer=m.ks --reviewer=t.ch --reviewer=ay.an"
'test' = "git receive-pack --reviewer=m.ks"
}
PowerShell 会自动确保 --receive-pack=$reviewer作为单个参数传递给 git .
警告 : 在 Windows 上,如果 $reviewer包含空格(就像这里的情况),PowerShell 会将整个参数包装在 "..." 中幕后,而不仅仅是后面的部分 = .
例如,在幕后使用的实际 Windows 命令行可能如下所示:
# Command line actually used, as rebuilt by PowerShell behind the scenes. 
git push "--receive-pack=git receive-pack --reviewer=m.ks" origin HEAD:refs/for/test
然而,似乎 git在 Windows 上接受这种引用风格;相比之下,其他具有类似选项的 CLI 可能不会,例如 msiexec .

关于git - 如何使用 powershell 脚本动态添加 git 审阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67675114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com