【问题标题】:How can I cd outside my git hook directory如何在我的 git hook 目录之外进行 cd
【发布时间】:2013-02-06 03:37:15
【问题描述】:

我正在用 ruby​​ 编写自己的 git post-receive 钩子,它类似于这样:

if !File.exists?(rep_dir+repo)
     puts "Cloning repository #{repo} into #{rep_dir}."
     `cd #{rep_dir}; sudo git clone file:////home/git/repositories/#{repo}.git`
exit
end

这个钩子是在 gitolite 通用钩子中设置的,所以当我推送新存储库的配置时,我会立即将其克隆到新位置。

我还在 gitolite 配置中为每个项目循环,以检查每个项目的存储库是否存在,但这不是我遇到问题的地方。

我的问题是,每当运行此脚本时,我都会得到:

remote: cd: 1: can't cd to /home/<somedir>/repositories/
remote: Cloning repository gitolite-admin into /home/<somedir>/repositories/.

钩子运行后,存储库未克隆到目标目录。我阅读了有关取消设置 GIT_DIR 环境变量的信息,但没有成功。

【问题讨论】:

  • 附带说明,如果您尝试部署,最佳实践建议您应该复制(最好通过git-archive)到没有.git 文件夹的新位置。

标签: ruby git gitolite githooks


【解决方案1】:

克隆时无需在任何地方使用 cd。
您可以简单地将目标路径作为参数添加到克隆命令。

git clone file:///xxx /path/where/to/clone

(确保目标路径不存在,否则 git 将拒绝克隆那里)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多