mad*_*jar 16 git merge shallow-clone
我正在尝试做什么:测试来自github的pull请求.我想在本地将pull请求合并到master中并对结果运行一些测试.由于存储库很大,我做了一个浅层克隆.
为了能够进行合并,我获取越来越多的提交(git fetch
增加--depth
),直到我merge-commit
掌握了拉取请求.
但是,它每次都不起作用.看起来我不仅需要合并库,还需要master..merge
_base范围内的每个提交.但我不确定该怎么做.
所以,问题是:如何获取足够的历史记录来进行合并?
Ada*_*dam 10
如果您有feature
分支时的历史master
但不想要 master 的完整历史,那么您可以估计分支日期并使用;
git fetch --shallow-since=<date> origin master
Run Code Online (Sandbox Code Playgroud)
很难使用任何其他形式的 ofgit fetch
来做你想做的事情(查询远程的合并基础),因为git fetch
获取 refs。可能没有您要查找的参考。
您可以使用以下脚本自动挖掘。
while [ -z $( git merge-base master feature ) ]; do
git fetch -q --deepen=1 origin master feature;
done
Run Code Online (Sandbox Code Playgroud)
我最近遇到了这个问题,找到了一种节省大量时间的方法,从 API获取合并基础提交,而不是下载足够的存储库信息来计算它https://docs.github.com/en/rest/commits /commits#比较两个提交
此 api 调用相当于
gh api \
repos/my_github_user/my_repo/compare/main...my_pr_branch \
| jq -r '.merge_base_commit.sha'"
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以卷曲
curl -s -H "Authorization: token $GITHUB_TOKEN" \
https://api.github.com/repos/my_user/my_repo/compare/main...my_pr_branch
Run Code Online (Sandbox Code Playgroud)
这是我的 github 工作流程/操作的更多内容
- name: Fetch merge base SHA from API
run: |
my_merge_base_cmd="gh api repos/github/github/compare/${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} | jq -r '.merge_base_commit.sha'"
echo $my_merge_base_cmd
my_merge_base=$(eval $my_merge_base_cmd)
echo "MY_MERGE_BASE_SHA=$my_merge_base" >> $GITHUB_ENV
- name: Fetch merge base SHA
run: |
echo $MY_MERGE_BASE_SHA
git fetch \
--no-tags \
--prune \
--progress \
--no-recurse-submodules \
--depth=1 \
origin $MY_MERGE_BASE_SHA
- name: Checkout merge base SHA
run: |
echo $MY_MERGE_BASE_SHA
git checkout \
--force \
$MY_MERGE_BASE_SHA
Run Code Online (Sandbox Code Playgroud)
基本上,一旦我检查了合并基础 SHA,我就可以构建工件并比较我在 PR 分支上构建的工件
如果你需要合并基础和 PR之间的提交,你也必须浅获取它们,但至少使用合并基础你知道你的终点
请注意,最好使用sha
,而不是ref
API 调用来获取合并基础,因为ref
可以更改它指向的内容(例如,有人将 main 合并到其 PR 分支中),从而导致竞争条件。
你需要的(我认为),以 catch-22 的方式,是 'git describe --all --first-parent' 来告诉你来自适当分支的给定提交的深度。然而,在进行浅层提取之前,我不确定如何从 Github 获取它;-)
归档时间: |
|
查看次数: |
1189 次 |
最近记录: |