2011-06-10 127 views
0

我試圖將一些項目在工作中從顛覆轉換爲git。這些項目是網站,我們目前的顛覆設置使用davfs來安裝存儲庫並將apache的文檔根目錄指向那裏。這樣apache在開發中運行當前檢查的代碼到svn倉庫中。使用davfs掛載git http存儲庫

安裝:

mount.davfs http://code.repository/svn/site.com /mnt/davfs/site.com 

的httpd.conf:

ServerName site.com 
DocumentRoot /mnt/davfs/site.com 

我正在尋找一種方式來模仿這種設置與飯桶。但是,據我所知,以這種方式安裝一個git存儲庫(是的,我們的git repo通過http訪問)將導致git存儲庫內部顯示爲docroot而不是代碼本身。
例如:

ls /mnt/davfs/gitrepository 

Parent Directory 
HEAD 
branches/ 
config 
description 
hooks/ 
info/ 
objects/ 
refs/ 

有誰知道,如果有一種方法可以達到預期的效果?

謝謝!

+0

謝謝,Amber和sehe。我只能選擇一個「正確的」答案,而且由於Amber's可能是我將要使用的答案,所以我選擇了這個答案。 – spuriousdata 2011-06-10 14:57:15

回答

0

如果你想能夠瀏覽的代碼,你應該使用類似gitweb的東西。如果你想推回來,那麼內部應該顯示爲文件根目錄。

在一個裸存儲庫(您將用於這種中央存儲庫的類型,因爲您通常不想推入非裸回購),因此沒有實際的磁盤代碼文件檢出,只有那些裸回購的東西纔是「git內部」。

如果你想從服務器庫中獲取服務器上的代碼副本,你可能希望使用git archive - 如果你希望每次將新代碼推送到庫。請參見以下手冊頁的詳細信息:

http://www.kernel.org/pub/software/scm/git/docs/git-archive.html

http://git-scm.com/docs/githooks

+0

我其實不想要那些。我需要將存儲庫中的代碼顯示爲/ mnt/davfs/gitrepository下的目錄,以便我可以將apache的文檔根目錄指向該目錄,並讓它看到它就像是任何其他文件系統一樣。當代碼自動更改時,我需要它來更新,就像davfs/svn一樣,而不是每分鐘都要cron'git pull'。 – spuriousdata 2011-06-10 07:06:19

+0

然後你真正需要的是服務器倉庫中的一個post-receive鉤子,它會運行一個'git archive'來導出倉庫內容到一個新的代碼被推入的目錄。查看'git-archive'的手冊頁。 – Amber 2011-06-10 07:09:33

+0

這個問題在於git倉庫存在於另一臺機器上。它只能通過http訪問_only_。我無法將文件從存儲庫導出到網絡服務器。 – spuriousdata 2011-06-10 07:11:51

0

好git的回購另有一個獸。如果你想瀏覽源代碼,你需要像gitweb這樣的東西。請注意,如果你只是指向一個svn回購,你也會看到內部的東西; /mnt/davfs/site.com可能是由apache mod-dav-svn託管的,它與gitweb做類似的事情。

你會想看看gitweb或比賽。的GitWeb是恕我直言,最簡單的設置

https://git.wiki.kernel.org/index.php/Gitweb

分享你的資料庫(使它可克隆,如)只是服務樹爲靜態HTTP頁面(文檔根目錄直接),因爲davfs不會(可靠)使它無論如何,其他人可能推動你的回購。

使用智能HTTP服務器,git-daemon或ssh進行推送

+0

謝謝,但我不想瀏覽版本庫。我需要apache來查看代碼,就好像它們住在磁盤上一樣。假設我在我的git倉庫中有wordpress。我需要apache的文檔根目錄來查看wordpress文件並將它們作爲wordpress執行,而不是將它們顯示給用戶。 – spuriousdata 2011-06-10 07:08:30

+0

@spuriousdata:那麼你真的需要有工作樹,而不是回購。克朗拉_is_你最好的選擇,或設置回購自動刷新後拉工作樹:[Git常見問題](https://git.wiki.kernel.org/index.php/GitFaq#Why_won.27t_I_see_changes_in_the_remote_repo_after_.22git_push。 22.3F) – sehe 2011-06-10 07:12:23

+0

好吧,是的,你是正確的,svn倉庫正在運行mod_dav_svn,是的,_that_ webserver直接顯示文件沒有'cruft。'。所以,我明白你說的讓gitweb服務靜態http頁面,我想這可能會做我所需要的。但是,問題是我不能在git倉庫服務器上安裝任何東西(我在一家擁有大量繁文tape節的大型公司工作)。你說的是沒有別的辦法嗎?謝謝。 – spuriousdata 2011-06-10 07:18:23