我正在为中央存储库编写gitosis
推后挂钩
将更新从中央存储库提取到测试环境
nano /var/git/repositories/holding.git/hooks/post-update
#!/bin/bash
cd /var/vh/holding;
git reset --hard;
git checkout testing;
git pull;
这是我在推送客户端(开发虚拟机)后获得的内容
# blah ...
Counting objects: 57, done.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (30/30), 3.42 KiB, done.
Total 30 (delta 18), reused 0 (delta 0)
fatal: Not a git repository: '.'
fatal: Not a git repository: '.'
fatal: Not a git repository: '.'
fatal: Not a git repository: '.'
To git@cheby.ru:holding.git
233b5a2..0f46cd8 testing -> testing
显然,我试图告诉git,它应该在哪里拉,但是失败了。
在bash脚本中为指定的工作副本运行git命令的正确方法是什么?
答案 0 :(得分:5)
答案 1 :(得分:0)
/var/vh/holding
是git存储库吗?你有没有运行git init
,设置你的遥控器,设置它来跟踪你的holding.git目录,等等?此外,如果您没有从同一个仓库中撤出,则不应该使用reset
和checkout
。
答案 2 :(得分:0)
对我来说,以env -i
开头是无效的。我总是会收到此错误:
***请告诉我你是谁。
尽管我已经设置了全局配置。通过指定--git-dir
参数,这对我有用:
#!/bin/sh
GIT='git --git-dir='$PWD'/.git'
$GIT checkout hotfix
$GIT merge --no-ff master -m "Merged master"
$GIT push
我在工作目录中运行脚本,因此我使用$PWD
来获取当前的工作目录。您可以根据需要进行调整。