從最開始接觸 DVCS 到現在有10多年了,這也是在 Bitbucket 上安家的10年,當初選擇它是因為只有它支持免費的私有庫,最初 Bitbucket 只支持 Mercurial (我更愿意用Hg這個簡單的名字,所以以下都寫 Hg 算了),所以我也用了 Hg 十年,后來 Atlassian 收購了 Bitbucket 之后,開始支持 Git,然后我又開始用 Git,于是每年都有那么比較閑的幾天,就開始糾結:“最近作業不多,要不要把 Hg 的庫轉成 Git 庫啊?" ”Hg 也不錯啊,使用簡單方便,先用著吧“,于是,眼看著 Hg 的庫越來越大,越來越大,甚至于有一次 Bitbucket 來郵件說我的庫體積太大了:),現在,終于不用糾結了,因為 Bitbucket (準確得說,應該說是 Atlanssian) 幫我做了這個“痛苦”的決定,Bitbucket 在2020年6月結束對 Hg 的支持,到時候直接洗掉所有基于 Hg 的庫,更讓人”痛苦“的是,他們不提供任何轉換工具,是直接洗掉!你要做的就是在 dealine 之前,為你的庫找一個好的“歸宿”,我想了想,大概有三個選擇:
- 移到其它支持 Mercurial 的服務商,
- 轉成 Git,可以選擇繼續留在 Bitbucket,當然這個轉換由你手動線下完成,然后再重新建庫,推送,
- 轉到其他提供 Git 支持的服務商,
對于 Latin 語系的碼農來說(我指的是免費用戶),選項3是最簡單的,因為 Github 可以直接匯入 Bitbucket 的 Hg 庫,而且 Github 也有免費的私有庫,所以直接滾到 Github 最麻利,但是對于我來說,就沒有那么容易了,首先,1肯定不會是我的選項,Bitbucket 都用了 'Sunsetting‘ 這個悲涼的字眼,想必 Hg 的未來也是越來越暗淡,3看似比2簡單,但是有個編碼的坑,Hg 的設計原則決定了它不會對你的提交內容進行任何改變,在 Windows 上的 GBK 編碼的檔案名,提交資訊,在提交到服務器上,仍然是原汁原味的 BGK,不會變成 UTF-8,而 Github 在匯入的時候,貌似不關心編碼,也是原汁原味得匯入,結果是 Github 匯入后,所有的中文提交資訊都是亂碼,所有的中文檔案名也是亂碼,在 pull 到本地時,還要把 Git 的編碼方式改成 GB18030 或者 GB2312 (SourceTree) 里有選項,否則你 checkout 的東西就成了亂碼,
幸運的是,Bitbucket 還是給指了條路,可以用 fast-export 將 Hg 庫匯出到 Git 庫,fast-export 的好處是有個 "-e” switch 可以指定原庫的編碼方式,這樣轉換成的 Git 庫在 Windows 上就可以不用將編碼更改成 GBK 了,步驟是:
- 下載 fast-export,解壓到一個檔案夾中
- 創建空 Git 庫
- 目前 fast-export 好像只支持 Python 2,所以要安裝 Python 2的最新版本,并設定環境變數,
- pip 安裝 Hg
- 用 fast-export 給出的指令完成最后的轉換,對于 Windows 上的 Hg 庫,在指令后追加 "-e GB18030",
說復雜也不復雜,其實復雜不復雜取決于有多少庫要轉換,現在我的狀態是痛并快樂著,快樂是因為,我以后不用再糾結了,電腦里終于要由 Git 一桶天下了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/30969.html
標籤:其他
