Gitolite gl-post-init Hook 自动化

Gitolite gl-post-init Hook 自动化

答案发布如下

我目前正在设置本地 git/开发服务器,但在使用 gitolite post-hook 时遇到了障碍。

概述我目前正在做的事情。

我已经设置了一个本地服务器,其中包含一个 4TB RAID10,用作 git 存储库,该机器也将用作本地开发机器,为了简化维护,我试图在通过 gitolite“git-post-init”创建新存储库时自动化创建 Apache Virtualhosts 的过程。

我希望通过克隆存储库的软件分支(参见下面的代码)、添加 apache vhost 配置,然后将其符号链接到 apache 扫描目录来实现此目的。

该过程几乎看起来是正确的,因为我能够克隆存储库,添加一些初始文件并创建配置文件,但是当我尝试在存储库中执行任何与 git 相关的命令时,出现以下错误

fatal: Not a git repository: '.'

如果我在钩子运行后进入刚刚克隆的存储库,我就可以提取存储库的状态。

git status

哪个有效......只是当尝试在钩子内执行任何操作时似乎不起作用。

下面是用于钩子的代码,为了缩短它,删除了多余的配置。

#!/bin/sh

# This will create an apache virtualhost file and store it in the
# repositories conf/reponame.conf directory and then symlink it to
# /home/git/apache/reponame.conf
#
# A new entry will then be created in the hosts file.

echo "Creating a new X Studios project"
echo "Git Project config v0.1 author Nickolas Whiting: Oct 20, 2011" 

REPO=$HOME/repos
REPO_PATH=$HOME/repos/$GL_REPO
cd $REPO
echo "Cloning repo into $REPO_PATH"
git clone $GL_REPO_BASE_ABS/$GL_REPO
cd $REPO/$GL_REPO
echo "Working in $PWD"
echo "Adding .gitignore file"
touch .gitignore
echo "removed for space" >> .gitignore
git add -u
echo "Commiting changes to repository"
git commit -m "Adding ignore file"
git push
echo "Adding branches"
git branch --track management origin/management
git branch --track design origin/design
git branch --track software origin/software
echo "Commiting new branches"
git add .
git commit -m "Inital Project Setup. Make sure you use the correct branch for what you are doing!"
git push
echo "Checking out the software branch"
git checkout software
echo "Creating Apache Virtualhost configuration"
echo "Removed for space" >> $REPO_PATH/conf/$GL_REPO.conf
echo "Creating symbolic link"
ln -s $REPO_PATH/$GL_REPO.conf $HOME/apache/$GL_REPO.conf
echo "Commiting changes to the repository"
echo "DONE"

我是编写 bash 脚本的新手,所以如果有任何错误或可以做得更好,请告诉我,

谢谢您的帮助!

回答

如果其他人也遇到过这个问题

显然,在 gl hook 中运行时,GIT_DIR变量被设置为 '.' (这是显而易见的),将其设置为存储库 .git 目录可以解决问题

GIT_DIR=$PWD/.git

希望这可以节省我在这上面浪费的时间!

答案1

在 git hook 中运行时,GIT_DIR 变量设置为 '.' (这很明显),将其设置为存储库 .git 目录可以解决问题

GIT_DIR=$PWD/.git

相关内容