2009-11-02 92 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对适当的用户进行任何更改。