背景:
故事的起因是 保利威多場景SDK為方便客戶下載demo項目代碼倉庫以及使用集成文檔狭握,將項目倉庫以及集成文檔都放在Github中彪杉。客戶在使用查閱時會出現(xiàn)從保利威幫助中心跳轉(zhuǎn)到github這一不方便的操作罩锐,更甚者會受到墻的原因而訪問不穩(wěn)定求泰,無法獲取到demo或者通過集成文檔解決問題,這也無形中增大了售前售后對接的壓力硅卢,因此21年底射窒,保利威也在Gitee中將Github倉庫做了遷移。
在將Github倉庫的內(nèi)容遷移到Gitee中将塑,因為使用了相對地址脉顿,導致遷移后gitee一些鏈接跳轉(zhuǎn)錯誤,或者又跳轉(zhuǎn)到github中去点寥。為了不產(chǎn)生鏈接跳轉(zhuǎn)的問題艾疟,也對Gitee倉庫中項目以及Wiki中涉及的超鏈接鏈地址做了改造。我們將一些文檔中指向github的超鏈接變?yōu)榱薌itee,可以將鏈接跳轉(zhuǎn)控制在Gitee內(nèi)蔽莱。
那么問題來了弟疆,如何做到同步更新呢?
一盗冷、三種同步更新的方法
在Gitee幫助中心中提供了三種同步更新的方案怠苔,原文點擊此處跳轉(zhuǎn):https://gitee.com/help/articles/4284#article-header1
1、對于分支較少的倉庫
1正塌、首先通過 git remote -v 查看您要同步的倉庫的遠程庫列表嘀略,如果在列表中沒有您 Gitee 的遠程庫地址恤溶,您需要新增一個地址
git remote add 遠程庫名 遠程庫地址
eg: git remote add gitee git@github.com:xxx/xxx.git如果在 add 的時候出現(xiàn)error: Could not remove config section 'remote.xxx'.一類的錯誤乓诽,通過把倉庫下.git/config 文件里面的 [remote "xxx"] 刪掉或者是用別的遠程庫名即可。
2咒程、從 GitHub 上拉取最新代碼到本地
git pull 遠程庫名 分支名
eg:git pull origin master3鸠天、推送本地最新代碼到 Gitee 上
git push 遠程庫名 分支名
eg:git push gitee master如果出現(xiàn)有差異的話需要自己手動解決差異
簡單來說,就是通過添加不同名稱標識的遠程庫帐姻,拉取github分支到本地稠集,如下圖在sourcetree中所示 origin為gitee遠程庫、github為github遠程庫饥瓷。
再合并到gitee本地分支剥纷,解決沖突后推送到gitee。
2呢铆、對于分支較多的倉庫-腳本方法
1晦鞋、克隆 GitHub 倉庫到本地,命令如下
$ git clone git@github.com:xxx/xxx.git
進入倉庫目錄
$ cd xxx
2棺克、一次性拉取該倉庫的所有分支悠垛,命令如下:
$ for b in
git branch -r | grep -v -- '->'; do git branch --track ${b##origin/} $b; done
3、查看所有分支(包括本地和遠程倉庫分支)
git branch --all
4娜谊、推送本地倉庫到 Gitee 上
這種方案更適合自動化腳本的使用确买,拉取所有分支再推送上去。
3纱皆、對于分支較多的倉庫-主頁點擊
直接在倉庫主頁點擊同步
在這個同步功能也可以勾選同步wiki進行覆蓋
二湾趾、我們的選擇
在背景中提到,在將倉庫遷移到Gitee后派草,對項目ReadMe搀缠、Wiki文檔中一些超鏈接做了調(diào)整。這種差異導致我們在三種方法中不得不放棄了最簡單直接的方法三——倉庫主頁同步按鈕直接覆蓋澳眷。
在方案一胡嘿、方案二的抉擇中,我們也是選擇了方案一钳踊。主要原因是:
- DEMO項目面向客戶提供衷敌,分支較少勿侯,且主要使用的是master分支
- 因為文檔超鏈接的差異,不得不合并兩邊的代碼以避免沖突缴罗。
每當多場景Demo項目完成一次發(fā)版更新助琐,就要有負責維護Gitee的同學做一次分支合并的操作,雖然耗時不多面氓,但也在降低發(fā)版的效率兵钮。
為了使用方案三,我們決定將引起差異的外部鏈接舌界,都遷移到自家的幫助中心掘譬,比如版本的發(fā)布記錄、項目的集成文檔呻拌。這樣Github倉庫和Gitee倉庫只作為了代碼倉庫葱轩,即使出現(xiàn)需要超鏈接的部分,也只會指向同一個域名藐握,不會出現(xiàn)代碼上的差異靴拱。
建議
不論后面是否有遷移倉庫的需求,我們也是建議在開發(fā)過程中將代碼倉庫中涉及的超鏈接可以使用絕對地址猾普。
對于需要使用Wiki袜炕,有條件的能將Wiki放在自家域名下管理。