我怎么能在我的git hook目录外面cd

时间:2013-02-06 03:37:15

标签: 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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

克隆时,您无需在任何地方进行CD 您只需将目标路径添加为克隆命令的参数即可。

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

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