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:
您好
我最近也在看git hosting,可因為之前沒接觸過所以一直架不成,想冒昧的請問你手上有沒有相關的文件??
我沒有用過,不過可以參考 gitosis
上文中有提到過
Post a Comment
Note: Only a member of this blog may post a comment.