我有以下代码在hook post-receive的工作目录中签出:
#!/bin/sh
git --work-tree=d:/websites/__gitweb --git-dir=d:/_gitrepo.git/ checkout -f
Run Code Online (Sandbox Code Playgroud)
不幸的是它似乎不起作用.但是,当我在Windows命令行(cms)中输入此命令时,该命令可以正常工作:
git --work-tree=d:/websites/__gitweb --git-dir=d:/_gitrepo.git/ checkout -f
Run Code Online (Sandbox Code Playgroud)
我检查了权限和执行属性,但没有.
更新:
我想我越来越近了.现在我知道问题是什么,但我不知道为什么会这样.挂钩实际上是被触发但我收到此消息:
remote: Starting copy from repository to work tree...
remote: fatal: Not a git repository: 'd:/_gitrepo.git/'
remote: Finished.
Run Code Online (Sandbox Code Playgroud)
我试图将d:的路径改为整个网络路径,但它仍然无效.如果我去远程存储库并且我做了一个git日志,那么更改就在那里,如果我用sh运行钩子,它就可以了.为什么说它显然不是git存储库?
for my $n (1, 2) {
sub_example();
}
sub sub_example {
my $bar = 1 if 1 == 2;
if ($bar) {
print "hahha, you see\n";
}
else {
$bar = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么在第二次循环迭代中定义$ bar?