[英]How to reverse engineer a Gitlab URL to point to a certain code line number in a Merge Request
为了将测试管理工具与 GitLab 连接起来,我想在测试管理工具中显示一个 URL 链接,以便为 Z9792E23419583666B1780 中的 MR 中的某个代码行创建注释。
我查看了官方 GitLab API 文档,但没有找到如何在 GitLab 中创建 URL 的解释。
构建最终 URL 的脚本具有以下信息:
这个想法是:用户可以单击链接,在新的浏览器选项卡上打开 GitLab 页面,其中正确 MR 中的代码注释表单已经打开并指向正确的代码行。
如果我浏览合并请求页面,我分析了 GitLab 中的 URL 是如何变化的。 我的观察:
这正是我需要的,现在是棘手的部分。 如何获得 hash 值? 我已经将所有其他信息作为脚本的输入参数。 我检查了 API 文档中的“提交”、“差异版本”、“注释”和“视觉审查讨论”,还通过多个请求查询了 API。 但是这些章节都没有描述如何通过 API 查询 hash 值。
任何建议都非常感谢!
谢谢!
hash 不是来自 Git 提交:-(
如何获得 hash 值?
在这种情况下,这可能是一个 GraphQL 组件: diffPositionInput
。
也许在代码中搜索diff-content
会更进一步。 例如,请检查这些文件。 特别是javascripts/diffs/components
似乎相关:
$ rg --glob='*.{js,vue,rb}' --count 'diff-content' | sort --field-separator=: --key=2n
app/assets/javascripts/deprecated_notes.js:1
app/assets/javascripts/diffs/components/app.vue:1
app/assets/javascripts/diffs/components/diff_content.vue:1
app/assets/javascripts/diffs/components/diff_file_header.vue:1
app/assets/javascripts/diffs/store/actions.js:1
app/assets/javascripts/main.js:1
app/assets/javascripts/merge_conflicts/merge_conflict_resolver_app.vue:1
app/assets/javascripts/notes/components/diff_with_note.vue:1
app/assets/javascripts/vue_shared/components/markdown/suggestion_diff_row.vue:1
app/assets/javascripts/vue_shared/components/notes/system_note.vue:1
spec/features/issues/create_issue_for_single_discussion_in_merge_request_spec.rb:1
spec/features/merge_request/user_reviews_image_spec.rb:1
spec/features/merge_request/user_scrolls_to_note_on_load_spec.rb:1
spec/frontend/diffs/components/diff_file_spec.js:1
spec/frontend/tracking/tracking_spec.js:1
app/assets/javascripts/single_file_diff.js:2
spec/features/expand_collapse_diffs_spec.rb:2
spec/features/merge_request/user_creates_image_diff_notes_spec.rb:2
spec/frontend/diffs/components/diff_file_header_spec.js:2
spec/frontend/vue_shared/components/markdown/suggestion_diff_row_spec.js:2
spec/frontend/notes/components/diff_with_note_spec.js:3
spec/frontend/single_file_diff_spec.js:3
app/assets/javascripts/diffs/components/diff_file.vue:4
spec/features/merge_request/user_resolves_diff_notes_and_discussions_resolve_spec.rb:26
终于找到了我的问题的解决方案:在这个 MR 中,您将找到如何计算 hash 值的解释:https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/7298
#hash_lineA_lineB,其中 hash 是 sha1 编码文件的路径,lineA 和 lineB 是文件中显示的确切更改的行号。 示例:“....../diffs#d84b028799a0d15b64d62a1d547297b47bc4b58e_43_43”
所以我只需要 hash 更改文件的路径 sha1 和 append 我想用 URL 打开的代码行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.