【问题标题】:Setting up Gitosis : push goes okay, but nothing really pushed on the server设置 Gitosis : 推送没问题,但服务器上没有真正推送
【发布时间】:2013-09-18 14:38:59
【问题描述】:

我要和一个队友一起做一个项目,所以我们决定建立一个 Git 服务器。 我们遵循了这个教程:http://git-scm.com/book/en/Git-on-the-Server-Gitosis

我们在我的计算机上本地创建了一个gitrepo/ 目录,并在其中创建了一个git init。 然后,我们创建了一个index.html 文件,git add index.htmlgit commit -m "First commit."

我们将远程服务器配置为git remote add origin git@SERVER:gitrepo.gitSERVER 作为我们的服务器。到目前为止,git 用户似乎还可以,SSH 密钥也是如此。

git push origin master 的输出(SERVER 被替换):

Counting objects: 5, done.
Writing objects: 100% (3/3), 255 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@SERVER:gitrepo.git
   bf6c7a0..283eb49  master -> master

似乎也可以,但是当我执行ls /home/git/repositories/gitrepo.git/branches 时,什么也没有。我应该有一个master目录,里面有index.html,对吧?

出了点问题,但我不知道是什么。

【问题讨论】:

    标签: git ssh branch push gitosis


    【解决方案1】:

    由于 gitosis 使用裸存储库,因此答案是“否”。没有分支,没有文件,没有任何问题。

    您可以在此处阅读有关裸回购的信息:http://gitolite.com/concepts/bare.html

    您可以通过将远程仓库克隆到另一个位置/从中拉取来测试它是否确实有效。

    【讨论】:

    • 谢谢 mnagel。我们解决了这个问题,并设法在 post-receive 挂钩中指定了我们的 GIT_WORK_TREE。它可以工作,但现在我们希望文件处于www-data 权限下。因此,在 post-receive 中,我们在 sudoers 文件中得到了 GIT_WORK_TREE=/data/apache/www/git sudo -u www-data /usr/bin/git checkout -fgit ALL = (www-data) ALL。但是我们在推送时遇到了这个错误:remote: fatal: This operation must be run in a work tree。知道为什么吗?
    • 可能sudo不进行环境(如GIT_WORK_TREE=/data/apache/www/git)。尝试制作一个设置GIT_WORK_TREE 的脚本并运行git checkout 并通过sudo 执行此脚本。
    • 是的,我们做到了。但是我们做了一个git pull 的回购而不是git checkouthook/post-receivepastebin.com/q95mySSJ
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多