2009年11月2日星期一

Debian Linux 架設使用 SSH 存取 的 Git Server

Git 是分散式的版本控制系統, 但是在此 分散式管理 之後再談, 先把 集中管理的部份 完成(試著把 SVN 做的事情取代掉).

Git 相關介紹
官方網站 Git – Fast Version Control System
Git Wikipedia (英文)
Git Wikipedia (中文)

Git 集中管理有 git://, http[s]://, ssh://, rsync:// 等方式, 在此就先從 ssh:// 開始.
Git 安裝
apt-get install git-core # in Debian / Ubuntu Linux
前置作業

因為此篇是使用 SSH, 所以下述開始前, 需要先將 SSH key 產生好, 並於 Server / Client 放置完成. 可參考:
產生 ssh keygen 免輸入密碼
SSH 免密碼登入
Guides: Providing your SSH Key
相關資料準備
Server: example.com
Linux 帳號的群組: www-data (確認 /etc/group 的 www-data 有你的帳號, ex: www-data:your_account)
Project name: project_name
Git Repository: /var/cache/git
建立 Git Repository
mkdir -p /var/cache/git/project_name.git
cd /var/cache/git/project_name.git
git –bare init
chown root:www-data -R .
chmod g+rwx -R .
由 Git Repository 取得資料
git clone ssh://example.com/var/cache/git/project_name.git
cd project_name
touch index.html
git add index.html
git commit -m ‘init’
git push origin master # local 預設 clone 是 master, push 到 origin(remote server)

Counting objects: 3, done.
Writing objects: 100% (3/3), 210 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://example.com/var/cache/git/project_name.git
* [new branch] master -> master
touch test.html
git add test.html
git commit -m ‘add test.html’
git push # 第二次後, 只需要 push 即可, 不需加 origin master.
測試
mkdir /tmp/a /tmp/b
cd /tmp/a
git clone ssh://example.com/var/cache/git/project_name.git
cd /tmp/b
git clone ssh://example.com/var/cache/git/project_name.git
echo “hello” > hello.html # 於 b 新增一個檔案, 下述新增並 push
git add hello.html
git commit -m ‘add hello.html’ # local commit.
git push # 推到 Server 上.
cd /tmp/a # 於 a pull 拉下來後, 應該會看到 hello.html
git pull # 會看到 hello.html

没有评论:

发表评论