我知道GitLab将Wiki页面存储在单独的Git存储库中。我们如何为我的项目的Wiki项目创建合并请求呢?这是可能的吗?
我找到了一个关于GitHub的类似问题:如何在GitHub上为Wiki页面发起拉取请求?,但没有关于GitLab的相关信息。
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.
In the Wiki project, head for the Settings: Access Tokens page and create a new token with write_repository access
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 caseIn 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 theLast 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.
我有一个更好的方法来完成这个。
你可以使用Git子树,像普通文件一样提交合并请求,并一起审查你的代码和文档。 假设你有这样一个仓库树:
repo -> doc -> your_markdown_file.md
-> src
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/**/*