在公共 GitHub 存储库与其私有 GitLab 镜像之间同步贡献

问题描述 投票:0回答:1

背景

我在 GitHub 上有一个公共存储库,用于存储我的项目的最新更新。

┌───────────────┐        ┌───────────────┐           ┌────────────────┐
│               │        │               │           │                │
│    GitHub     │ Public │    GitHub     │  Private  │    GitLab      │
│               │ contrib│               │  contrib  │                │
│  Public fork  ◄────────►  Public repo  │x─────────x│ Private mirror │
│               │ Create │               │  Cannot   │                │
│  Downstream   │   PR   │   Upstream    │ create PR │   Downstream   │
│               │        │               │ (push/pull│                │
└───────────────┘        └───────────────┘  via local└────────────────┘
                                            machine)                   

捐款是公开和私下进行的:

  • 公共贡献很简单 - 只需在 GitHub 上创建一个 PR 即可。
  • 对于某些不应透露其审核或正在进行的详细信息的更改,需要
  • 私人贡献。对于此类更改,我在 GitLab 上设置了一个私人镜像。我定期将 GitLab 镜像与公共存储库同步,并在那里处理 MR。

正如我所说,我有一个 GitLab 镜像。这意味着我不会对那里的主分支进行任何更改,我只是从上游pull更改。我知道像双向镜像之类的东西可能可以在我的情况下使用,但通常建议不要为 CAP 定理 等这样做。

因此,私人贡献的工作流程(将更改从 GitLab 上的私人镜像推送到 GitHub 上的公共存储库)如下:

  1. GitLab 上的私人镜像中:
    • a.将主分支与上游同步
    • b.创建一个新分支,进行更改,并创建一个 MR
    • c. MR 中的变更已得到审核和批准
  2. MR 的工作完成后,我会执行以下操作:
    • a.关闭 GitLab 上的 MR
    • b.在我的本地计算机上拉取更改的分支
    • c.通过本地机器将分支上游推送到我在 GitHub 上的公共存储库
    • d。在我的 GitHub 公共存储库上创建并合并 PR

我的问题

我不喜欢我的工作流程中的以下几点:

  1. GitLab 上的 MR 已关闭。我无法合并它们,因为 GitLab 存储库是一个镜像(我之前解释过原因)。 能否以更好或更干净的方式处理 MR?
  2. 步骤 2c(“通过本地计算机将分支推送到我在 GitHub 上的公共存储库”)是手动完成的。 我可以并且应该自动化这个过程吗?如果可以的话我该怎么做?
git github gitlab mirroring
1个回答
0
投票
  1. 您可以创建两个标签

    merged
    abandoned
    分别标记 MR 是在 GitHub 上关闭并合并,还是废弃。

  2. 我不确定你的意思。如果您经常需要同时执行 2b 和 2c,您可以编写一个脚本来执行这两个步骤:(假设remote

    gitlab
    指向GitLab,而remote
    github
    指向GitHub)

#!/bin/bash

git pull gitlab "$@" && git push github "$@"

该脚本采用分支名称作为其命令行参数。

© www.soinside.com 2019 - 2024. All rights reserved.