HG版本庫推送到Git伺服器相關筆記.md
如何將HG版本庫推送到Git伺服器?
目的
習慣使用HG來進行版本管理,但是GitHub
程式碼統計比Bitbucket
要豐富,所以準備主力倉庫選用Bitbucket
,GitHub
作為備用倉庫.
GitHub
本身不支援 HG 版本庫,所以需要用到HG-Git
擴充套件外掛來實現轉義或翻譯
成Git
型別的版本庫.
參考資料
-
9. Use with other VCS systems — TortoiseHg 3.8.0 documentation
-
Set up an SSH key - Atlassian Documentation
TortoiseHg 啟用 HG-Git 的方法
Windows 版本的 TortoiseHg 已經集成了 HG-Git 擴充套件外掛 (及其必備執行環境 Dulwich
) ,因此只需要在 .hgrc
配置檔案裡設定一下即可啟動.
[extensions]
hggit =
填坑記錄
幾種 Git 倉庫地址的區別
-
https://github.com/schacon/hg-git.git
許可權支援:可讀 可寫.
GitHub 內建的克隆方式.HG-Git 不支援.
使用此格式的地址克隆倉庫時會出錯提示:
中止: No module named selectors!
-
[email protected]:schacon/hg-git.git
許可權支援:可讀 可寫.
GitHub 內建的克隆方式. 需要 SSH key 和 passphrase.HG-Git 不支援.
使用此格式的地址克隆倉庫時會出錯提示:
系統找不到指定的路徑。中止: git remote error: The remote server unexpectedly closed the connection.
-
git://github.com/schacon/hg-git.git
許可權支援:只讀
HG-Git 支援通過此格式 克隆倉庫 到本地.
但是一旦推送本地修改到伺服器,就會報錯
git remote error: You can't push to git://.git Use https://.git
參考資料: -
git+ssh://[email protected]/schacon/hg-git.git
以下引用自:durin42 / hg-git - Usage — Bitbucket
If you want to clone a github repository for later pushing (or any other repository you access via ssh), you need to convert the ssh url to a format with an explicit protocol prefix.
For example, the git url with push access
[email protected]:schacon/hg-git.git
would read
git+ssh://[email protected]/schacon/hg-git.git
(Mind the switch from colon to slash after the host!)
翻譯如下:
假如需要克隆一個支援後續推送的倉庫,
那麼就需要將 SSH URL 轉換為一種特定的協議字首(git+ssh://
)的格式.例如原地址為
[email protected]:schacon/hg-git.git
需要轉換為
git+ssh://[email protected]/schacon/hg-git.git
注意原地址域名後面的冒號之後的部分需要特別留意.
如何推送修改到一個現成的 Git 倉庫?
-
得到目標 Git 倉庫的 SSH 地址
例如:
[email protected]:schacon/hg-git.git
https://gitee.com/AsionTang/70.YeLauncherApp.git
-
將其轉換為特定的格式
例如:
-
git+ssh://
[email protected]/
schacon/hg-git.git- 增加
git+ssh://
字首 - 將
:
冒號修改為/
符號.
- 增加
-
git+ssh://git@
gitee.com/AsionTang/70.YeLauncherApp.git將
https://
替換為git+ssh://git@
-
-
生成 SSH 私鑰公鑰
線上的方式生成(不用安裝特殊軟體):
- Free Online Private and Public Key Generator
- Online RSA Key Generator
- ONLINE Generate ssh RSA key,public key,private key,generate ssh pair
- Online Generate SSH keys algorithm RSA,DSA,ECDSA
通過軟體生成:
-
將公鑰新增到GitHub
-
將私鑰轉換為*.PPK格式
- Convert SSH private key with PuTTY keygen : Some tutorials and articles
- linux私鑰id_rsa轉換成ppk - CSDN部落格
- Site5 KnowledgeBase » SSH: Convert SSH Keys to PPK Format
- How to convert PuTTY's .ppk to SSH key
- Converting OpenSSH and PuTTY Style Keys
- Use SSH Keys with PuTTY on Windows | ProfitBricks DevOps Central
-
修改配置檔案
[ui] username = AsionTang ssh = "D:\TortoisePlink.exe" -ssh -2 -C -i "D:\ye.github.ppk"
-
接受並快取GitHub的Host Key
如何克隆一個現成的 Git 倉庫到本地?
找到正確的 Git 倉庫地址
例如 https://github.com/schacon/hg-git
將其修改為 git://github.com/schacon/hg-git.git
一樣格式的地址,正常克隆即可.
SSH 連線時出現錯誤Unable to use key file "id_ras" (OpenSSH SSH-2 private key (old PEM format))
將PEM私鑰格式轉換為*.PPK格式即可.
SSH 連線時出現錯誤Server refused our key
將倉庫地址從 git+ssh://github.com/schacon/hg-git.git
改為 git+ssh://[email protected]/schacon/hg-git.git
後解決此問題. 在域名前多了個使用者名稱 git@