2011-06-10 44 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

相关问题