2009-11-02 69 views
2

我有一臺Ubuntu服務器,並安裝了git和gitosis。 我新的服務器管理,並具有以下Gitosis的文件夾樹:/home/git/repositoriesGIT,GITOSIS,WEBSITE - 路徑

我已經通過克隆的gitosis-admin.git到我的本地機器編輯的用戶對不同的存儲庫的權利,編輯gitosis.conf並增加用戶的公鑰對keydir並將其推回服務器。這已經過各種存儲庫和作品的測試。

我很困惑的教程描述瞭如何使用gitosis創建一個可用於源代碼控制Web域中的文件夾的存儲庫。

我已經使用SSH Putty在Web文件夾中創建了一個裸存儲庫;添加並提交文件。然後將其克隆到本地機器上

git clone git(at)server:web_repo.git 

這是成功的。

問題是,當我嘗試將其推回到服務器時,/ home/git/repositories路徑中創建了一個repo,並且web文件夾repo不受影響。

我已經嘗試了從信息結合:

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

http://urbanpuddle.com/articles/2008/07/11/installing-git-on-a-server-ubuntu-or-debian

http://danielmiessler.com/blog/using-git-to-maintain-your-website

http://toroid.org/ams/git-website-howto

http://www.ibm.com/developerworks/web/library/wa-git/

回答

0

您是否在/ home/git/repositories-repo中設置了更新後的掛鉤,如「在從Dev Box啓用更改時啓用自動更新」一節中所述 - http://danielmiessler.com/blog/using-git-to-maintain-your-website?這應該是將內容從中央回購站點轉移到現場克隆的訣竅。爲此,git用戶需要寫入對活動克隆的訪問權限。

+0

謝謝你的迴應。 是的,沒有修改的/ home/git的/庫/鉤/更新後的文件: #/ bin/sh的 # WORKDIR = 「/無功/網絡/文件夾/文件夾/文件夾/ html_folder /」 export GIT_DIR =「$ WORKDIR/.git」 pushd $ WORKDIR>/dev/null git pull popd>/dev/null 不確定exec git-update-server-info是否相關? 然後755d了。 我不知道如何設置git-user對/ var/www /文件夾/文件夾/文件夾/ html_folder具有寫權限,但是.... – Tubby 2009-11-04 10:00:59

+0

好吧,現在已經在git repo文件夾中運行chown -R它仍然不起作用。 – Tubby 2009-11-05 13:41:22

+0

我認爲pfote的意思是你應該在WORKDIR賦值之前刪除'#',因爲它被註釋掉了。 – kusma 2009-11-06 14:33:11

0

從你在你發表的評論是什麼,你的shell腳本壞了,WORKDIR沒有設置(該行是備註)

然而

,我不認爲這是什麼你心裏有一個好主意(但有一個例外:您嘗試更新的是您的開發服務器)

+0

好點 - 但我認爲這是git和gitosis的全部想法 - 限制源代碼控制。當然,我們在上線之前測試我們的代碼,我只是希望從git repo到活動服務器的過程自動化......看起來capistrano將是一個解決方案,但是我在一臺贏得個人電腦的計算機上,希望避免安裝更多的軟件當它(顯然)有可能用更新鉤子來更新站點時。 – Tubby 2009-11-06 08:00:56

+0

現在你提到capistrano是想我知道你在尋找什麼:簡單的方式來部署你的東西。 git不關心部署,gitosis也沒有,範圍也不對。 請改進/擴展您的問題,在評論中討論這一點沒有多大意義 – pfote 2009-11-06 23:33:35

1

瞭解您使用的是哪個版本的ubuntu可能會有幫助。 Gitosis是,可能是在apt-get版本庫中,肯定是在Debian Lenny中。從存儲庫安裝很多在我的經驗更乾淨。鑑於此軟件存在安全問題,我強烈建議使用該軟件。但這取決於你。如果推拉成功,這種方法沒有任何壞處。

當你用gitosis推送到git倉庫時,鉤子(post-update就是你需要的那個。)被作爲gitosis或者git用戶執行。我懷疑你的問題與此有關。您可能會考慮編寫一個suid post-update鉤子,以便它可以作爲用戶帳戶或網絡編輯器或Web服務器用戶執行。您可以交替使用chown -R git:git(或gitosis:gitosis,具體取決於您的設置)本地部署克隆。如果您必須在服務器上編輯這些存儲庫,請記住使用sudo -u git對適當的用戶進行任何更改。