【发布时间】:2013-04-13 06:00:49
【问题描述】:
所以我一直被这个奇怪的 git 问题所困扰,我自己和其他一些开发人员都无法解决。这里是:
我创建了一个裸仓库,用于在测试服务器上使用 git 管理网站更改。 对于这个例子,repo 在这里:/home/website/website.git 网站公共根目录将在这里:/home/website
我通过执行以下命令创建了 repo:git init --bare 在 git repo 目录“website.git”中
接下来,我在其他地方的机器上拥有本地仓库。这是一个标准的 git 仓库。我建立了网站,准备好部署。准备好后,我将其推送到裸仓库。来自我的本地仓库。 有一个接收后挂钩可以将最新的文件树检出到网站的公共根目录中。因此,当我在本地 repo 上更改内容并在 localhost 环境中对其进行测试时,一旦满意,我就可以将它们推送到实时服务器。
这是我面临的问题: 我可以推得很好。没有问题。一切都按预期工作。代码被检出到公共根目录。每个人都很开心并继续他们的生活。
但是!!!: 该站点是一个CMS站点。用户登录并上传内容。文件在网站的公共根目录上创建,即 GIT_WORK_TREE。
所以NBD对吧?!我可以时不时地从实时的裸仓库提交文件,然后像以前一样将它们拉回我的本地环境。所以我在服务器上登录 SSH。导航到 /home/website/website.git 然后运行这个命令: GIT_WORK_TREE=/home/website/ git add ../
我搞砸了:
error: unable to create temporary sha1 filename ./objects/cb: No such file or directory
error: error_log: failed to insert into database
error: unable to index file error_log
fatal: adding files failed
我以前在其他服务器上做过这个,据我记得它工作得很好。所以我就像WTF一样,这台服务器上一定有什么奇怪的东西。我去了另一台服务器,并复制了完全相同的步骤。得到了完全相同的问题。所以现在我担心我会失去理智,也许这些以前的 git 经验都是在我的脑海中编造出来的...... *好吧,让我们不要走那么远...... :)
也许有人可以在这里帮助我。我已经使用了很多 git,但似乎无法破解这个。
哦,其他一些可能有用的规格: 运行 CENTOS 6.2
我仔细检查了所有权限。我什至尝试以递归方式将所有内容更改为 777,以确保我不会以某种方式丢失它。确保所有文件都归正确的用户所有。递归地chown。我还尝试了这里描述的这个问题的标准解决方案:https://answers.atlassian.com/questions/132671/git-commit-fails-with-sourcetree-error-unable-to-create-temporary-sha1-filename-git-objects-d8-file-exists 那也没有用。不知道从这里去哪里。
请帮助我!!!! 我觉得现在 Linus 正在对我耍残忍的把戏。
【问题讨论】:
标签: linux git permissions centos