我正在尝试使用git实现工作流程。 这就是我的所作所为:
xyz
xyz
xyz
执行git config receive.denyCurrentBranch='ignore'
并xyz
- 之后,我在post-receive
中创建了.gt/hooks
文件并添加了以下行:
#!/bin/bash
GIT_WORK_TREE=/path/to/xyz
LOGFILE=./post-receive.log
cd /path/to/xyz/
echo "Checking out $PWD"
echo "Run: checkout dev"
git checkout dev
echo "Run: git clean -df & git checkout dev"
git clean -df & git checkout dev
echo "Run: git submodule update --init "
echo "Checking out sumodules"
git submodule update --init
chmod 755 -R /path/to/xyz
当我push
使用git push xyz-branch dev --force
时,我收到以下错误:
remote: Checking out /path/to/xyz
remote: Run: checkout dev
remote: fatal: Not a git repository: '.'
remote: Run: git clean -df & git checkout dev
remote: fatal: Not a git repository: '.'
remote: Run: git submodule update --init
remote: Checking out sumodules
remote: fatal: Not a git repository: '.'
remote: Setting access rights on files and folders
remote: Run: chmod 755 -R /path/to/xyz/
我不知道我应该责备文件或我自己,以便了解错误的原因。
更新
我做了很多错事。感谢推特指出this SO question的朋友,我解决了我的问题。如果我将其解释为答案,我认为没问题。
答案 0 :(得分:1)
感谢我的推特朋友(dotNet和Azure大师)Ilija让我指向了正确的方向。在阅读了我在OP中提到的SO
帖后,我能够实现我的目标。
这就是我的所作所为:
#!/bin/bash
export GIT_WORK_TREE=/path/to/xyz
export GIT_DIR=/path/to/xyz/.git
cd $GIT_WORK_TREE
echo "Checking out dev"
git checkout dev
git clean -df & git checkout dev
unset GIT_WORK_TREE
unset GIT_DIR
echo "Checking out sumodules"
mkdir "codeigniter"
git submodule update --init
echo "clean"
echo "Setting access rights on files and folders"
echo "Run: chmod 755 -R $GIT_WORK_TREE"
cd "$GIT_WORK_TREE"
chmod 755 -R "$GIT_WORK_TREE"
echo "Done."
export
是解决我的问题的关键。
请注意两个unset
命令。
我在repo
有一个submodule
时运行它们。让submodule
获取顺畅。