【问题标题】:odd hook script execution on git在 git 上执行奇怪的钩子脚本
【发布时间】:2011-03-22 20:41:56
【问题描述】:

这有点奇怪,所以我在远程 git repo 钩子脚本 post-receive 中有这一行:

cd /path/to/my/deployed/app
git reset --hard
rm files/.development

然后从我的本地机器推送到我的 git 存储库 - 这就是奇怪的地方。在我的 post-receive 末尾的那些行是在我的本地机器上执行的,而不是在我的远程服务器上??

显然我最终得到了这个错误:

MacBook-Air:$ git push to-my-deployed-app

Counting objects: 23, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 2.56 KiB, done.
Total 16 (delta 11), reused 0 (delta 0)
remote: warning: updating the current branch
remote: fatal: Not a git repository: '.'
remote: rm: cannot remove `files/.development': No such file or directory

所以……很奇怪……

【问题讨论】:

  • 如果您正在推送到非裸存储库并尝试在推送后使用此钩子更新工作树,那么您应该考虑“Why won't I see changes in the remote repo after "git push"?” Git FAQ 中链接的post-update 脚本.它通过在重置之前存储来处理脏工作树(因此您至少有机会恢复直接在服务器上(Git 之外)进行的任何更改)。
  • 感谢您的帮助。虽然我不需要担心我们的服务器上有一颗脏树,因为它是一个实时存储库,没有人在那里开发,但每个人都只是推送到那个实时存储库。我只想让我的钩子脚本正确执行——更新工作树。请参阅下面我对马克的最后评论。谢谢!

标签: git hook githooks


【解决方案1】:

为什么你认为它是在本地运行的?每个错误前的前缀remote: 表示它来自远程。从这些错误来看,您的存储库的路径似乎是错误的。事实上,如果您尝试在钩子所在的存储库中运行 git reset --hard,则不需要更改目录 - 无论如何,钩子的当前工作目录将是该存储库的顶层。

【讨论】:

  • 嗯,有道理,不应该 cd'ing 到一个目录,但是,不知道为什么 cd 到我的应用程序目录是错误的,因为如果
  • @David:这里的任何人都很难猜到,因为很明显/path/to/my/deployed/app 不是您服务器上的真实路径,而且我们也看不到真实目录中的内容......跨度>
  • 嗨,马克,感谢您的帮助 - 我想我正在取得一些进展,但仍然有点时髦。所以我删除了更改路径的额外步骤,现在我得到了这个结果:Total 5(delta 3),reused 0(delta 0)remote:警告:更新当前分支远程:HEAD 现在是 2968db5 标签的小调整对于'属性。但是 - 当我去服务器并编辑我的文件时,我的更改不存在?这里发生了什么以及为什么服务器产生了该消息但文件/工作副本没有更新?
猜你喜欢
  • 2012-08-20
  • 2010-12-20
  • 1970-01-01
  • 2021-04-14
  • 2013-02-07
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多