What have you found for these years?

2009-02-17

git repo setup

updated: 2009-04-07 15:07
.git/hooks/post-receive 改成對 /home/jin-rou/ 做 chmod 和 chown.
最前面加上 git stash
變成:
> git stash
> sudo chown -R jin-rou:jin-rou /home/jin-rou/
> sudo chmod -R g+w /home/jin-rou/
這樣可以自動更新不需要重啟 server 的檔案。

*

除了 source-tools 裡面以外的 template 外,(for my ruby project)
git 還需要一些額外的設定才便於讓多人同時編輯...

gitosis 就是拿來做這件事的,可以參考這篇文章:
Hosting Git repositories, The Easy (and Secure) Way
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

我不知道 github 是怎麼做的,或許是用類似的方法,
或是更複雜的方法。可惜 github 沒有 open source...

最簡單的方法,或許是假設把 project 放在 /home/jin-rou 下,
則跑:

> sudo chmod -R g+w /home/jin-rou

把所有的東西設為 group writable.
接著把自己加入 group 中:

> sudo usermod -aG jin-rou godfat

修改 post-receive hook:

> vim /home/jin-rou/.git/hooks/post-receive

亦即在收到 commit 後,執行以下:

> sudo chown -R jin-rou:jin-rou /home/jin-rou/.git
> sudo chmod -R g+w /home/jin-rou/.git

當然也可以設 umask 之類的啦。總之可以這樣設。
這樣做就可以使得 developer 用自己的帳號 push,
然後把所有檔案切回 jin-rou 使得其他人能繼續修改。
不過需要額外修改 chown 和 chmod 的權限:

> sudo visudo

%jin-rou ALL=(ALL) NOPASSWD: /bin/chown -R jin-rou\:jin-rou /home/jin-rou/.git
%jin-rou ALL=(ALL) NOPASSWD: /bin/chmod -R g+w /home/jin-rou/.git

這樣一來,我就可以用 godfat push 進 jin-rou,
然後執行 chown 和 chmod 使得權限回到原本的設定。

最後一步,打開 post-receive 的執行權限,這樣 hook 才算啟用:

> sudo chmod 755 /home/jin-rou/.git/hooks/post-receive

這個 hook 裡面可以再加個 git reset --hard 使得 server code 自動更新。
不過剛剛試沒成功,暫時拿掉也無妨。

先筆記在此... 感謝 ada 協助 XD

2 retries:

Elvis said...

您好

我最近也在看git hosting,可因為之前沒接觸過所以一直架不成,想冒昧的請問你手上有沒有相關的文件??

godfat 真常 said...

我沒有用過,不過可以參考 gitosis
上文中有提到過

Post a Comment

All texts are licensed under CC Attribution 3.0