我最近从svn进行了转换。我的服务器在Windows下(别怪我,这不是我的选择:}
我创建了一个有"主"one_answers"稳定"两个分支的回购。
在我的服务器上,我想从稳定的分支获取文件。
我做过:
git clone git://url/.git src
cd src
git checkout --track -b stable origin/stable
以前我有一个.bat脚本
cd my_repo_dir
svn update
echo APPLICATION_STAGE = 'production' > conf__init__.py
net stop apache2.2
net start apache2.2
它起了作用,现在有了git
cd my_repo_dir
git pull
echo APPLICATION_STAGE = 'production' > conf__init__.py
net stop apache2.2
net start apache2.2
gitpull之后,无论是成功的还是最新的,都不会执行任何操作。它只是在没有任何警告的情况下退出提示。
我想到了钩子。我创建了:
.git/hooks/post-receive
.git/hooks/post-update
两个文件的内容相同:
echo APPLICATION_STAGE = 'production' > conf__init__.py
net stop apache2.2
net start apache2.2
不,它也没有执行。。。也许我缺少已解释的声明行(*nix上的#!/bin/sh)但我不确定窗户上是什么。。。
几点:
-
请确保路径上有git.exe。做一个
where git
,你必须得到类似的东西C:Program Files (x86)Gitbingit.exe
如果使用git.cmd(来自C:\Program Files(x86)\git\cmd\git.cmd),则必须执行
call git pull
才能继续执行。我会说将git.exe
添加到路径并开始使用它 -
即使在Windows上,挂钩也必须具有shebang-
#!/bin/sh
才能正常运行。 -
如果你想让一个钩子在拉动时运行,你可能想使用
post-merge
钩子。当你推送post-receive
和post-update
时,它们会在远程转发上运行。
git
可能是围绕真实可执行文件的批处理包装器。使用call git pull
。
据我从文档中所知,只有当内容从远程位置推送时,这些挂钩才会启动。因此,对于pull
,它们被忽略。