ruby - 如何在我的 git hook 目录之外进行 cd

标签 ruby git gitolite githooks

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

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

此 Hook 是在 gitolite 通用 Hook 中设置的,因此当我推送新存储库的配置时,我会立即将其克隆到新位置。

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

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

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

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

最佳答案

克隆时不必在任何地方进行 cd。
您只需将目标路径作为参数添加到克隆命令即可。

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

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

关于ruby - 如何在我的 git hook 目录之外进行 cd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14721043/

相关文章:

ruby-on-rails - 在 Ruby 中检测德语元音变音

ruby - 为什么 `JSON.parse` 没有抛出异常?

ios - linphone 编译问题(刚从 git 下载)

git-multimail 排除 git diff 和后续邮件

apache - Cgit 中的访问控制

ruby-on-rails - 具有可能不同类型 mongoid 的字段

ruby 1.8.6 : How to alias a constant in one class to a class method in another?

windows - 如何将 Git 配置为信任来自 Windows 证书存储的证书?

git - 如何从 git 存储库中完全删除/销毁提交?

git - 执行更新后 Hook 后如何更改所有者?