我们正在努力将GitLab(企业版)集成到我们的工具中,但仍然在我们的愿望清单中的一件事是通过命令行(或批处理文件或类似文件)在GitLab中创建合并请求.我们希望将其整合到我们的工具中.在这里和网上搜索让我相信使用原生GitLab是不可能的,但我们需要额外的工具.
我对么?我想用什么样的工具呢?
Ahm*_*rif 16
从GitLab 11.10开始,如果您使用的是git 2.10或更高版本,则可以从命令行自动创建合并请求,如下所示:
git push -o merge_request.create
Run Code Online (Sandbox Code Playgroud)
可以在文档中找到更多信息。
jax*_*orm 13
它不是原生支持的,但它并不难拼凑起来.gitlab API支持打开MR:https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#create-mr
您可以使用以下实用程序。
披露:我开发了它。
https://github.com/vishwanatharondekar/gitlab-cli
您可以使用此创建合并请求。
它具有的某些功能。
如果您在此命令 ( git push -o merge_request.create)之前推送您的分支,它将不起作用。Git 将响应Everything up-to-date并且不会创建合并请求(gitlab 12.3)。
当我尝试从服务器上删除我的分支(不要删除您的本地分支!!!)时,它以这种形式对我有用。
git push --set-upstream origin your-branch-name -o merge_request.create
我创建了一个 shell 函数,可以使用所需的参数打开 GitLab MR 网页。
根据您当前所在的 git 存储库的目录,它:
作为可选的第一个参数,您可以提供目标分支。否则,GitLab 默认为您的默认分支,通常为master或main。
gmr() {
# A quick way to open a GitLab merge request URL for the current git branch
# you're on. The optional first argument is the target branch.
repo_path=$(git remote get-url origin --push | sed 's/^.*://g' | sed 's/.git$//g')
current_branch=$(git rev-parse --abbrev-ref HEAD)
if [[ -n $1 ]]; then
target_branch="&merge_request[target_branch]=$1"
else
target_branch=""
fi
xdg-open "https://gitlab.com/$repo_path/merge_requests/new?merge_request[source_branch]=$current_branch$target_branch"
}
Run Code Online (Sandbox Code Playgroud)
您可以在 URL 中设置更多默认值,例如合并后删除源分支:
&merge_request[force_remove_source_branch]=true
Run Code Online (Sandbox Code Playgroud)
或受让人给某人:
&merge_request[assignee_ids][]=12345
Run Code Online (Sandbox Code Playgroud)
或者添加审稿人:
&merge_request[reviewer_ids][]=54321
Run Code Online (Sandbox Code Playgroud)
您可以通过搜索 GitLab MR 网页的源代码来轻松找到可能的查询字符串参数merge_request[。
自 GitLab 15.7(2022 年 12 月)起,GitLab CLIglab正式集成到 GitLab。
\n\n介绍 GitLab CLI
\n命令行是软件工程师\xe2\x80\x99s 工具包中最重要的工具之一,他们的大部分流程和工作都围绕可用的工具进行。他们通过样式自定义 CLI 并将其扩展至应用程序,以确保执行任务时的最高效率。CLI 是开发人员完成工作所依赖的脚本和工作流程的支柱。
\n为了支持更多已经在工作的开发人员\xe2\x80\x99,我们\xe2\x80\x99 采用了开源项目
\nglab,这将构成 GitLab\xe2\x80\x99 原生 CLI 体验的基础。
\nGitLab CLI 将 GitLab 与 Git 和您的代码结合在一起,无需应用程序或选项卡切换。您可以在我们的博客文章中了解我们对 glab 的采用、我们与 1Password 的合作伙伴关系以及如何为该项目做出贡献。
\n特别感谢克莱门特·萨姆创建 glab 并将其未来交给我们。
\n\n
这意味着您可以使用以下命令创建 MRglab mr create:
glab mr create -a username -t "fix annoying bug"\nRun Code Online (Sandbox Code Playgroud)\n
除了回答@AhmadSherif,您还可以merge_request.target=<branch_name>用于声明目标分支。
示例用法:
git push -o merge_request.create -o merge_request.target=develop origin feature
Run Code Online (Sandbox Code Playgroud)
简单这个:
根据 Gitlab 文档,您可以为此命令定义别名以简化使用。
git config --global alias.mwps "push -o merge_request.create -o
merge_request.target=master -o merge_request.merge_when_pipeline_succeeds"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49844 次 |
| 最近记录: |