我有以下代码在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存储库?
我在我的计算机上有一个本地Git存储库,我试图用Hg-Git克隆.当我从git://类型路径克隆时,它对我来说很好,但如果我尝试从本地目录克隆则不行.
这是一个例子......
hg clone "C:\Users\James\Documents\My Games\FalloutNV"
destination directory: FalloutNV
importing Hg objects into Git
abort: The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
路径确实存在,并且它以某种方式知道它是一个Git仓库,但它有向后的方向.它应该将Git对象导入(新)Hg仓库.
有任何想法吗?我在Windows上,尝试使用TortoiseHg但在命令行中足够舒服.
今晚我发现如果我重命名FalloutNV为FalloutNV.git......克隆将从本地磁盘神奇地工作.只是一个可能有帮助的指针!
不过,“less”命令工作正常。
我可以使用“less”在屏幕上显示文件的一部分。
据说有一个“更多”命令,但是当我输入它时,它显示“bash:更多:找不到命令”。
如果我们以管理员身份打开msysgit,我们可以像使用root一样使用它.但是,在没有管理员权限的情况下打开通常更容易.例如,对于管理员权限,您通常必须转到Windows资源管理器,"开始"菜单/屏幕等,并且您无法从任务栏执行此操作.有时,我懒得做这一切,但我想在Bash中获得管理员权限.Git Bash 是否有sudo- 或者su- 类似的命令或脚本等?进入cmd.exe,PowerShell等等,然后做一些类似的runas工作,如果没有别的.
最近将Strawberry Perl放在Windows 8.1机器上exec
,并发现在git-bash中使用v5.8.8的行为与/bin/perl使用Strawberry的机器不同/c/strawberry/perl/bin/perl.这是我发现的非常简单的脚本(纯粹是在玩的时候偶然$PATH):
#!/usr/bin/env perl
my $comment = "@ARGV" || 'update';
exec "git status; git add -A . ; git status; git commit -m '$comment'; git push";
Run Code Online (Sandbox Code Playgroud)
这与git-bash(/bin/perl)工作正常,但在/c/strawberry/perl/bin/perl发现$PATH以下错误发生时:
git: 'status;' is not a git command. See 'git --help'.
Did you mean this?
status
Run Code Online (Sandbox Code Playgroud)
两种情况下的代码都相同.我的预感是草莓中的perl 5.18改变了exec命令本身的行为,因为它在上下文中解释了它的参数(就像perl喜欢这样做).
我主要担心的是,perl的两个版本在某种程度上使这个相当简单的代码在perl版本之间不兼容,而不是其他一些简单的系统配置问题,甚至可能是草莓发行版本身而不是perl的问题.
如果这是一个perl兼容性问题,我倾向于坚持使用v5.8.8,它完成了我想要Perl为我做的所有事情(在转到另一种语言之前).
execperl语句是否在这些版本之间发生了变化?我在互联网上找不到任何证据.
要重新创建此行为:
在Windows机器上安装git-scm.org: