搭建私有的git服務平台

2021-06-12 17:59:45 字數 2627 閱讀 1085

為了實現公司開發平台、個人電腦windows平台、個人電腦linux平台、國外買的雲伺服器、即將咬購買的阿里雲的雲伺服器之間的**同步和快速部署,進行了一些簡單的技術選型,首先考慮的是rsync,發現安裝非常麻煩,然後考慮了乙個商業軟體,安裝亦不順,最終決定還是走最成熟的**倉庫平台,svn和git都是不錯的選擇,但是考慮到兩點,拋棄了svn:

svn在每個目錄下都有.svn資料夾,內容太多,複製過程中、grep過程中都可能帶來麻煩

svn要起後台服務,十分不便

於是乎,git成了不二選擇:

git的每個repo都只有乙個.git資料夾,不汙染源程式碼

git可以不啟後端服務(但是使用者必須使用ssh模式連線git「伺服器」)

下面記錄建立git伺服器的過程:

首先選擇乙個root伺服器,它必須滿足2個要求:1. 不停機 2. 所有平台都能連線。於是只能用國外的雲伺服器作為root伺服器了。因為公司開發平台只能連線外網,外網卻連不上它,個人電腦不滿足不停機的要求。

登入root伺服器,用root帳號建立乙個使用者raywill,

su raywill

cd /home/raywill

mkdir repository

cd /home/raywill/repository/

git config --global user.name "raywill"

git config --global user.email 「[email protected]"

從此以後所有原始碼的root都在/home/root/repository目錄下了。

乙個repository下面可以有多個git專案,git命令的操作目標是單個的專案。例如**有oceanbase和tair兩個專案,他們可能的目錄結構為:

/home/raywill/repository/oceanbase

/home/raywill/repository/tair

下面建立我們的第乙個專案yiker

git init --bare yiker

執行該命令成功後/home/raywill/repository/下生成了乙個yiker目錄,該目錄裡面只有乙個.git資料夾。

簽出專案

cd ~

git clone [email protected]:/home/raywill/repository/yiker/ yiker_clone

cd yiker_clone/ ls

新建檔案

echo "hello git" > readme.txt

將修改提交到本地倉庫

git add *

git commit

將本地倉庫的修改同步到root伺服器

git push origin master

整個過程中遇到三個問題,都一一解決,這些問題都是git帶出來的,但都不是git的問題:

1. ssh 174.140.1.1連線極慢的問題

> 很多時候ssh連線慢是由於反向網域名稱解析導致的,不過我遇到的不是這個。用debug模式開啟ssh,可以看到慢在哪一步:

ssh -v 174.140.1.1

可以看到ssh連線會嘗試用很多種認真方式連線ssh伺服器(root伺服器),我的卡在了

debug1: next authentication method: gssapi-with-mic

vi /etc/ssh/ssh_conf 找到

gssapiauthentication yes 改為

gssapiauthentication no

儲存。ok了,連線很快!

詳細可以參考:

ssh 連線慢解決辦法

2. 不支援免密碼提交git push的問題

git支援四種傳輸協議:local, ssh, git, http。local就是本地玩玩,沒啥實際用途,git、http通常都是唯讀模式,而且都需要起server deamon,剩下只有ssh模式了,比較靠譜,很好使。因為採用了ssh模式,也就可以利用ssh帶來的一系列便利了,例如免密碼登入。具體方法見我的部落格:

linux主機間建立信任關係

這次卻奇怪了,按照流程操作卻依然不行,最後baidu一番才知道,是檔案的許可權導致的,具體參考

linux新增信任關係失敗這篇文章。

3. sshd無法啟動的問題

因為搞ssh翻牆,另外手動啟動了乙個sshd(原來的sshd沒有被覆蓋,新的sshd在/usr/local/bin/sshd,配置檔案中也配置了22埠),導致/etc/init.d/sshd restart失敗。

解決辦法:新的sshd只監聽翻牆埠,老的sshd只監聽22埠。

4. 其它問題

誤新增檔案到git,commit之前可以執行:

git rm -r --cached .

.gitignore

這句的意思是,跟蹤platfrom目錄下的所有檔案,但是忽略所有資料夾,因為有個/在最後》面。

platform/*/

data/*/

~      

Ubuntu簡單搭建git私有服務

搭建gitserver過程記錄 例如以下 環境 clientwin7電腦一台 work 軟體需求 client軟體msysgit 軟體版本號 git 1.9.2 preview20140411.exe client軟體tortoisegit 軟體版本號 tortoisegit 1.8.6 serve...

GIT 私有伺服器搭建

yum install gitmkdir var git cd var git mkdir play.git cd play.git git bare init initialized empty git repository in var git test.git git clone root 1...

搭建私有的PyPI倉庫源

1.官方pypi 源以及私有 pypi源 通常我們使用 pip安裝 python 包,都會預設從 上安裝,非常方便。但是有些是公司內部的專案,不方便放到外網上去,這個時候我們就要搭建自己的內網 pypi 源伺服器,需要安全並且擁有同樣的舒適體驗。所以我們有些公司中,就需要搭建自己的 pypi 倉庫,...