... | ... | @@ -6,12 +6,12 @@ |
|
|
|
|
|
## 概览[](#overview "Permalink")
|
|
|
|
|
|
当您想在 CODE CHINA 之外的平台使用存储库时,存储库镜像很有用。
|
|
|
当您想在 GitCode 之外的平台使用存储库时,存储库镜像很有用。
|
|
|
|
|
|
我们支持两种仓库镜像方式:
|
|
|
|
|
|
* 推送:用于将 CODE CHINA 仓库镜像到另一个位置
|
|
|
* 拉取:用于将其他位置的仓库镜像到 CODE CHINA
|
|
|
* 推送:用于将 GitCode 仓库镜像到另一个位置
|
|
|
* 拉取:用于将其他位置的仓库镜像到 GitCode
|
|
|
|
|
|
至少具有 [Developer](/docs/user/permissions) 权限的用户也可以强制立即更新,除非:
|
|
|
|
... | ... | @@ -24,8 +24,8 @@ |
|
|
|
|
|
以下是我们建议使用仓库镜像的一些场景:
|
|
|
|
|
|
* 您迁移到了 CODE CHINA,但仍需要将项目保留在另一个源中。在这种情况下,您只需将其设置为镜像到 CODE CHINA(拉取),所有提交,标签和分支的基本历史记录都将在您的 CODE CHINA 仓库中。
|
|
|
* 您在另一个源中有旧项目,这些旧项目不再使用,但又不想出于归档目的而删除它们。在这种情况下,您可以创建一个推送镜像,以便您的 CODE CHINA 仓库可以将其更改推送到旧源的项目中。
|
|
|
* 您迁移到了 GitCode,但仍需要将项目保留在另一个源中。在这种情况下,您只需将其设置为镜像到 GitCode(拉取),所有提交,标签和分支的基本历史记录都将在您的 GitCode 仓库中。
|
|
|
* 您在另一个源中有旧项目,这些旧项目不再使用,但又不想出于归档目的而删除它们。在这种情况下,您可以创建一个推送镜像,以便您的 GitCode 仓库可以将其更改推送到旧源的项目中。
|
|
|
|
|
|
## 推送到远程仓库[](#pushing-to-a-remote-repository-core "Permalink")
|
|
|
|
... | ... | @@ -46,7 +46,7 @@ |
|
|
|
|
|
启用推送镜像后,为防止镜像发散只有推送会直接提交到镜像仓库。任何时候,所有更改都将最终存储在镜像仓库中:
|
|
|
|
|
|
* 提交被推送到 CODE CHINA
|
|
|
* 提交被推送到 GitCode
|
|
|
* [强制更新](#强制更新)已启动
|
|
|
|
|
|
推送到仓库中的文件的更改至少会自动推送到远程镜像:
|
... | ... | @@ -65,9 +65,9 @@ |
|
|
|
|
|
启用**保持差异 refs**选项后,将跳过`develop`分支,从而可以更新`master`和`stable`。镜像将反映`develop`已偏离并被跳过,并标记为更新失败。
|
|
|
|
|
|
## 创建一个从 CODE CHINA 到 Github 的镜像
|
|
|
## 创建一个从 GitCode 到 Github 的镜像
|
|
|
|
|
|
要设置从 CODE CHINA 到 GitHub 的镜像,您需要执行以下步骤:
|
|
|
要设置从 GitCode 到 GitHub 的镜像,您需要执行以下步骤:
|
|
|
|
|
|
1. 创建一个[GitHub 个人访问令牌](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) ,并选中`public_repo`复选框
|
|
|
2. 使用以下格式填写**Git 存储库 URL**字段: `https://<your_github_username>@github.com/<your_github_group>/<your_github_project>.git`
|
... | ... | @@ -82,7 +82,7 @@ |
|
|
|
|
|
您可以将仓库设置为自动从上游仓库更新分支,标记和提交。
|
|
|
|
|
|
当您感兴趣的仓库位于其他服务器上并且您希望能够在 CODE CHINA 中浏览其内容时,这个功能会十分有用。
|
|
|
当您感兴趣的仓库位于其他服务器上并且您希望能够在 GitCode 中浏览其内容时,这个功能会十分有用。
|
|
|
|
|
|
> **2021-4-6日更新:镜像拉取功能已经开放给全部用户使用**
|
|
|
>
|
... | ... | @@ -101,18 +101,18 @@ |
|
|
|
|
|
[![Repository mirroring pull settings screen - upper part](/docs/img/repository_mirroring_pull_settings_upper.png)](/docs/img/repository_mirroring_pull_settings_upper.png)
|
|
|
|
|
|
现在,由于 CODE CHINA 中的项目已经设置为从上游存仓库中提取更改,所以不应将提交直接推送到 CODE CHINA 上的仓库中。相反地,现在任何提交都应该推送到上游仓库。推送到上游仓库中的更改将被拉入 CODE CHINA 仓库中:
|
|
|
现在,由于 GitCode 中的项目已经设置为从上游存仓库中提取更改,所以不应将提交直接推送到 GitCode 上的仓库中。相反地,现在任何提交都应该推送到上游仓库。推送到上游仓库中的更改将被拉入 GitCode 仓库中:
|
|
|
|
|
|
* 在一定时间内自动拉取
|
|
|
* 启动[强制更新](#强制更新)时
|
|
|
|
|
|
**警告**:如果您确实在 CODE CHINA 仓库中更新了分支,则该分支将与上游分叉,并且 CODE CHINA 将不再自动更新该分支以防止丢失任何更改。另请注意,上游仓库中已删除的分支和标签将不会反映在 CODE CHINA 的仓库中。
|
|
|
**警告**:如果您确实在 GitCode 仓库中更新了分支,则该分支将与上游分叉,并且 GitCode 将不再自动更新该分支以防止丢失任何更改。另请注意,上游仓库中已删除的分支和标签将不会反映在 GitCode 的仓库中。
|
|
|
|
|
|
### 工作机制[](#how-it-works "Permalink")
|
|
|
|
|
|
为仓库启用拉取镜像功能后,会将仓库添加到队列中。每分钟一次,Sidekiq cron 作业基于以下内容计划仓库镜像的更新:
|
|
|
|
|
|
* 可用容量,这由 Sidekiq 设置确定, CODE CHINA 参考了 [Gitlab.com](https://docs.gitlab.com/13.2/ee/user/gitlab_com/index.html#sidekiq) 的默认配置。
|
|
|
* 可用容量,这由 Sidekiq 设置确定, GitCode 参考了 [Gitlab.com](https://docs.gitlab.com/13.2/ee/user/gitlab_com/index.html#sidekiq) 的默认配置。
|
|
|
* 队列中已经要更新的仓库镜像数,到期时间取决于仓库镜像的最后更新时间以及重试次数。
|
|
|
|
|
|
Sidekiq 可用时,它就会开始处理仓库镜像并对它们进行拉取更新。更新仓库镜像的过程为:
|
... | ... | @@ -148,7 +148,7 @@ SSH 身份验证是相互的: |
|
|
|
|
|
如果单击:
|
|
|
|
|
|
* **检测主机密钥**按钮,CODE CHINA 将从服务器获取主机密钥并显示指纹
|
|
|
* **检测主机密钥**按钮,GitCode 将从服务器获取主机密钥并显示指纹
|
|
|
* **手动输入主机密钥**按钮,将显示一个字段,您可以在其中粘贴主机密钥
|
|
|
|
|
|
假设您使用了前者,那么现在需要验证指纹是否符合您的期望. gitlhub.com 和其他代码托管站点公开公开其指纹,供您检查:
|
... | ... | @@ -161,22 +161,22 @@ SSH 身份验证是相互的: |
|
|
* [Savannah](http://savannah.gnu.org/maintenance/SshAccess/)
|
|
|
* [SourceForge](https://sourceforge.net/p/forge/documentation/SSH%20Key%20Fingerprints/)
|
|
|
|
|
|
在镜像仓库时,CODE CHINA 将在连接之前检查至少一个存储的主机密钥是否匹配,这样可以防止将恶意代码注入到您的镜像中,或者防止您的密码被盗。
|
|
|
在镜像仓库时,GitCode 将在连接之前检查至少一个存储的主机密钥是否匹配,这样可以防止将恶意代码注入到您的镜像中,或者防止您的密码被盗。
|
|
|
|
|
|
### SSH 公钥认证[](#ssh-public-key-authentication "Permalink")
|
|
|
|
|
|
要使用 SSH 公钥身份验证,您还需要从**验证方式**下拉菜单中选择该选项。创建镜像后,CODE CHINA 将会自动生成一个 4096 位 RSA 密钥,可以通过单击**复制 SSH 公共密钥**按钮进行复制。
|
|
|
要使用 SSH 公钥身份验证,您还需要从**验证方式**下拉菜单中选择该选项。创建镜像后,GitCode 将会自动生成一个 4096 位 RSA 密钥,可以通过单击**复制 SSH 公共密钥**按钮进行复制。
|
|
|
|
|
|
[![Repository mirroring copy SSH public key to clipboard button](/docs/img/repository_mirroring_copy_ssh_public_key_button.png)](/docs/img/repository_mirroring_copy_ssh_public_key_button.png)
|
|
|
|
|
|
然后,您需要将公共 SSH 密钥添加到另一个仓库的配置中:
|
|
|
|
|
|
* 如果其他仓库托管在 CODE CHINA 上,则应将公共 SSH 密钥添加为 Deploy Key
|
|
|
* 如果其他仓库托管在 GitCode 上,则应将公共 SSH 密钥添加为 Deploy Key
|
|
|
* 如果其他仓库位于其他位置,则可能需要将密钥添加到用户的`authorized_keys`文件中,将整个公共 SSH 密钥单独粘贴到文件中并保存。
|
|
|
|
|
|
如果您需要更改密钥,则可以删除并重新添加镜像以生成新密钥。您必须使用新密钥更新另一个仓库,以保持镜像运行。
|
|
|
|
|
|
**注意**:生成的密钥存储在 CODE CHINA 数据库中,而不存储在文件系统中。因此,无法在 pre-recieve hook 中使用针对镜像的 SSH 公钥身份验证。
|
|
|
**注意**:生成的密钥存储在 GitCode 数据库中,而不存储在文件系统中。因此,无法在 pre-recieve hook 中使用针对镜像的 SSH 公钥身份验证。
|
|
|
|
|
|
### 覆盖分叉分支[](#overwrite-diverged-branches-starter "Permalink")
|
|
|
|
... | ... | @@ -188,7 +188,7 @@ SSH 身份验证是相互的: |
|
|
|
|
|
### 仅镜像保护分支[](#only-mirror-protected-branches-starter "Permalink")
|
|
|
|
|
|
您可以选择仅将受保护的分支从远程仓库拉到 CODE CHINA,未受保护的分支不会被镜像,并且允许分叉。
|
|
|
您可以选择仅将受保护的分支从远程仓库拉到 GitCode,未受保护的分支不会被镜像,并且允许分叉。
|
|
|
|
|
|
要使用此选项,请在创建仓库镜像时选中**仅镜像保护的分支**复选框。
|
|
|
|
... | ... | @@ -206,7 +206,7 @@ SSH 身份验证是相互的: |
|
|
|
|
|
## 故障处理[](#troubleshooting "Permalink")
|
|
|
|
|
|
如果在推送过程中发生错误,则 CODE CHINA 将在该仓库中显示"错误"信息。然后,将鼠标悬停在突出显示的文本上,即可查看有关错误的详细信息。
|
|
|
如果在推送过程中发生错误,则 GitCode 将在该仓库中显示"错误"信息。然后,将鼠标悬停在突出显示的文本上,即可查看有关错误的详细信息。
|
|
|
|
|
|
[![Repository mirroring error tips](/docs/img/repository_mirroring_error.png)](/docs/img/repository_mirroring_error.png)
|
|
|
|
... | ... | |