GitLab允许维基合并请求吗?

11

我知道GitLab将Wiki页面存储在单独的Git存储库中。我们如何为我的项目的Wiki项目创建合并请求呢?这是可能的吗?

我找到了一个关于GitHub的类似问题:如何在GitHub上为Wiki页面发起拉取请求?,但没有关于GitLab的相关信息。


1
请注意,有一个2022年的解决方法。请参见我下面编辑的答案 - VonC
2个回答

7
2016年:创建合并请求(MR)需要项目名称而非其wiki的名称。
解决方法与您链接的答案中描述的类似:
  • 创建一个专用的“项目”仓库,作为wiki的分支/克隆
  • 将您的MR提交到此wiki项目/分支
  • 从此分支向原始wiki仓库推送更改

2022年:接下来是Epic 7107,它涉及到这个解决方法

Accepting merge requests on wikis

It's possible to work around the limitation of Wiki permissions by creating a mirror of the git wiki backing the wikis.
This way more users can suggest changes to the wiki by submitting merge requests.

It's not as easy as editing the wiki, but at least provides a way for outside contributors to participate.

To do this, you'll need to create project access tokens in the Wiki and use the repository mirror feature to replicate the wiki into a separate project.

  1. In the Wiki project, head for the Settings: Access Tokens page and create a new token with write_repository access

  2. optionally, create a new project for the wiki, for example called wiki-replica.
    You can also use the same project as the wiki if you do not plan to host other source code specific to that project there.
    We'll call this the "wiki replica" in either case

  3. In the wiki replica, head for the Settings: Mirroring repositories section and fill in the details for the wiki HTTPS clone URL:

    • Git repository URL: the HTTPS URL of the Git repository (which you can find in the Clone repository page on the top-right of the wiki)
      Important: Make sure you add a username to the HTTPS URL, otherwise mirroring will fail.
      For example, this wiki URL:

      https://gitlab.torproject.org/tpo/tpa/team.wiki.git
      

      should actually be:

      https://wiki-replica@gitlab.torproject.org/tpo/tpa/team.wiki.git
      
    • Mirror direction: push (only "free" option, pull is non-free)

    • Authentication method: Password (default)

    • Password: the Access token you created in the first step

    • Keep divergent refs: checked (optional, should make sure sync works in some edge cases)

    • Mirror only protected branches: checked (to keep merge requests from being needlessly mirrored to the wiki)

When you click the Mirror repository button, a sync will be triggered.
Refresh the page to see status, you should see the Last successful update column updated.
When you push to the replica, the wiki should be updated.

Naturally, because of limitations of GitLab, you cannot pull changes from the wiki to the replica.
But considering only a limited set of users have access to the wiki in the first place, this shouldn't be a problem as long as everyone pushes to the replica.


有一个Gitlab问题与此相关:https://gitlab.com/gitlab-org/gitlab/-/issues/15504 - geek-merlin
@geek-merlin 谢谢。 我会关注这个问题,并在问题解决后更新答案。 - VonC
@geek-merlin 注意,有一个2022年的解决方法。请参见我上面编辑过的答案 - VonC

0

我有一个更好的方法来完成这个。

你可以使用Git子树,像普通文件一样提交合并请求,并一起审查你的代码和文档。 假设你有这样一个仓库树:

repo -> doc -> your_markdown_file.md
     -> src

使用GitLab Runner在每次合并代码和文档时执行推送任务。
stages:          # List of stages for jobs, and their order of execution
  - build
  
build-doc:       # This job runs in the build stage, which runs first.
  stage: build
  script:
    - echo "update doc"
    - git status
    - git checkout main
    - git pull
    - git push git@example.com:test/test.wiki.git `git subtree split -P doc main`:main --force
  only:
    changes:
      - doc/**/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接