1

我最近从 svn 转换过来。我的服务器在 Windows 下(别怪我,这不是我的选择:}

我创建了一个包含两个分支“master”和“stable”的仓库。

在我的服务器上,我想从稳定分支获取文件。

我已经做好了:

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

git pull 之后没有执行任何操作,无论是成功的还是最新的。它只是退出提示而没有警告。

我想到了钩子。我创造了:

.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)但我不确定它在 Windows 上是什么......

4

2 回答 2

3

几点:

  • 确保路径上有 git.exe。做一个where git,你必须得到类似的东西

    C:\Program Files (x86)\Git\bin\git.exe
    

    如果正在使用 git.cmd (来自 C:\Program Files (x86)\Git\cmd\git.cmd ),您必须这样做call git pull才能继续执行。我会说添加git.exe到路径并开始使用它。

  • 即使在 Windows 上,您也必须拥有 shebang -#!/bin/sh才能使挂钩正常运行。

  • 如果你想让一个钩子在拉动时运行,你可能想使用这个post-merge钩子。post-receivepost-update在您推送到它们时在远程存储库上运行。

于 2011-06-09T01:55:39.647 回答
1

git可能是真正可执行文件的批处理包装器。使用call git pull.

据我从文档中可以看出,这些钩子仅在从远程位置推送内容时才会触发。所以他们被忽略了pull

于 2011-06-09T01:21:20.723 回答