---
sidebar_label: '跨平台代码同步服务'
sidebar_position: 2    
---

### 功能简介

跨平台仓库代码同步服务用于不同代码托管平台之间的仓库代码双向同步功能。用户将不同平台的仓库分支进行绑定，当任意仓库分支有push事件被webhook监听时，代码推送将实时自动同步至另一个仓库，以实现不同平台之间分支、提交信息的自动同步（代码托管平台仅限于github与gitee）。


![1.同步流程](../../static/img/reposyncer/1.同步流程.png)

同步服务既满足双平台代码库分支同步需求，也支持最多创建三个平台的代码仓库同步，如下图所示

![2.同步方式](../../static/img/reposyncer/2.同步方式.png)

### 配置双向同步

1、进入需要创建同步的代码库“服务”tab，开通跨平台代码同步服务。

![3.开启跨平台服务](../../static/img/reposyncer/3.开启跨平台服务.png)

2、配置跨平台的同步仓库，支持github和gitee。需输入代码库地址（git地址和网站访问地址均支持），以及配置对应token用于授权同步，此处须注意token的权限以及是否过期。<br />
Github配置方式为：个人头像→Settings→Developer Settings→Personal access tokens (classic)→Generate new token→勾选repo按钮→保存<br />
Gitee配置方式为：个人头像→设置→私人令牌→生成新令牌→勾选projects权限→提交

![4.配置同步仓库](../../static/img/reposyncer/4.配置同步仓库.jpg)

3、在首次创建同步仓库时，需要用户手动在目标仓库的代码库创建一条webhook，用于监听仓库push事件，从而向其他同步仓库推送代码完成同步，同步步骤如下：

①点击“复制链接”按钮，复制平台用于接收webhook请求的地址

![5.配置webhook](../../static/img/reposyncer/5.配置webhook.jpg)


②访问点击前往按钮前往目标仓库webhook页新建一个webhook，以github为例

![6.webhook示例](../../static/img/reposyncer/6.webhook示例.png)

③粘贴链接，并确保该webhook支持push事件的监听，并已经成功激活

![7.webhook配置规则](../../static/img/reposyncer/7.webhook配置规则.png)

4、完成仓库配置绑定后，需要绑定这两个仓库的指定同步分支，建立首次同步方向。<font color="red">注：首次同步的策略为单向代码强推，请谨慎选择同步方向开启同步以避免代码被覆盖</font>

![8.绑定分支](../../static/img/reposyncer/8.绑定分支.jpg)

5、完成分支的绑定，在绑定后会根据选择的同步方向立即执行一次同步。后续webhook监听到任意分支有代码推送，会实时向另一个绑定分支同步代码推送代码

![9.确认绑定](../../static/img/reposyncer/9.确认绑定.jpg)

 ### 管理同步分支


同步分支配置完成后，用户可在同步分支列表完成一系列操作<br />
①添加绑定新的同步分支，如两个仓库已建立了Develop分支，需要再建立feature分支的同步，可实时添加<br />
②查询两个分支间最新一次的同步时间及同步状态。若同步失败，可在同步记录中查询日志分析失败原因<br />
③添加同步仓库，若已绑定了github的同步仓库，想在gitee导入一个仓库进行开发，并想完成实时多个仓库的分支同步。<br />
④查看同步配置，可用于查询同步仓库的地址，GitLink 用于接受第三方webhook请求的地址，以及更新token。以防token过期<br />
⑤查询同步记录，包括查看历次同步的代码变更方，同步时间，同步状态及对应commt id，查询同步日志。<br />
⑥中止、开启同步，相当于同步开关，可随时启停

![同步分支管理](../../static/img/reposyncer/同步分支管理.png)

 ### 注意事项

1、在建立同步时，工具将根据用户选择的首次同步方向强行推送一次代码，请谨慎选择同步方向，以规避代码被覆盖的风险。同步建立之后，哪一方push事件触发被webhook监听，将同步至另一方，请勿在多仓库同时提交代码，以防出现冲突<br />
2、目前仅支持个人仓库的同步，组织仓库的同步暂不支持，敬请期待<br />
3、在配置过程中，请仔细检查token的权限，是否已包含了仓库读写。同时请检查token是否已过期，若过期请点击【查看同步配置】按钮进入页面更新此token<br />
4、在配置过程中，请仔细检查其他平台webhook的监听事件中是否包含了push事件，以及webhook是否已激活



