【问题标题】:managing website on windows using git使用 git 在 windows 上管理网站
【发布时间】:2012-03-01 04:30:33
【问题描述】:

我有一个在 Windows 2008 服务器上运行的网站。我想知道使用 git 管理该站点的最佳方法是什么。理想情况下,我希望使用 post-receive 挂钩或类似方法进行自动化部署。

我确实有一个 Linux 服务器,我通常将它用作我的 git 原始服务器,所以如果它使事情变得更容易,我可以利用它。通常我的接收后文件如下所示:

#!/bin/sh
GIT_WORK_TREE=/var/www/example.com git checkout -f

显然,如果没有其他东西,这将无法在 Windows 上按原样工作。

我的 Windows 服务器支持 FTP,但如果可能的话,我想使用更安全的东西。

【问题讨论】:

    标签: git githooks


    【解决方案1】:

    您可以在 bash 脚本中使用 Windows 路径(将由 Windows 上的 msysgit 解释)。

    /C/my/path/...
    

    您可以在此处查看fairly complex post-checkout hook 的示例(不是后期接收,但它可以说明您可以在 Windows 上通过 bash 挂钩脚本执行哪些操作)。

    更多详情请见“Combining mingw and git”。

    实际上,Adam Rofer 在 cmets 中提到:

    如果您使用普通的 Windows 共享,您可以通过以下路径语法访问 git 存储库:

    //computername/folder/repo.git 
    

    假设文件夹是您通过普通 Windows 文件夹共享访问的共享文件夹。 Msysgit 似乎很适合这个。

    【讨论】:

    • 好的,这可能会处理 post-receive 挂钩,但是我如何从远程 PC 推送到 Windows 服务器。通常我使用 ssh,但我不知道它在 Windows 上是如何工作的,或者它是否实用。
    • @Peter:我通常将 Apache 服务器放在我的 repo 前面并使用 https 会话 + git-http-backend 脚本 (stackoverflow.com/questions/5264949/…)
    • 这听起来像是一个有趣的选择,我将不得不在某个时候检查一下。我现在更喜欢使用 ssh 路由,这样它就可以类似于我现有的 linux 设置。
    • 如果您使用普通的 windows 共享,您可以通过以下路径语法访问 git 存储库://computername/folder/repo.git 假设 folder 是您通过普通 windows 文件夹共享可以访问的共享文件夹。 Msysgit 似乎很适合这个。
    • @AdamRofer 很有趣。我已将您的评论包含在答案中以提高知名度。
    【解决方案2】:

    我最终使用这些说明来设置 Cygwin + OpenSSH + Git,这让我大部分时间都在那里。

    http://www.shannoncornish.com/blog/2009/04/git-server-windows-2008/

    在接收后,由于一些权限问题,我不得不删除第一行 #!/bin/sh,然后我从 Cygwin 中向我的 webroot 添加了一个符号链接,如下所示:

    ln -s /cygdrive/c/inetpub/wwwroot /var/www
    

    所以 post-receive 文件最终看起来与之前非常相似,但没有第一行

    GIT_WORK_TREE=/var/www/example.com git checkout -f
    

    【讨论】:

    • 很有趣,但我真的会避免在 Cygwin 中使用 Git(它比 msysgit 发行版。我宁愿使用sshd from Cygwin 与 msysgit:superuser.com/questions/325639/…
    • 是的,我注意到它真的很慢,尽管对于我所做的大多数事情来说,这并不是什么大不了的事。我也无法让我的接收后挂钩工作。
    • @VonC 根据您的建议,我使用 cygwin sshd 切换到 msysgit。设置起来要困难得多。我想我终于开始了,但现在我在拉和推方面遇到了问题。当我尝试git clone ssh://git@myserver.com/var/git/example.git 时,它说它不是 git 存储库。一时兴起,我尝试了git clone ssh://git@myserver.com:c:/cygwin/var/git/example.git,它奏效了。但是,当我尝试从克隆中推送时,它说 /cygwin/var/git/example.git 不是有效的 git 命令。似乎路径以某种方式搞砸了。
    • 有趣。这可能需要另一个问题,该问题将详细说明您的新设置(包括所有涉及的产品的版本号,包括您​​的 Windows 版本),并会提及(再次详细你的错误信息。并链接到这个问题的原始上下文。
    猜你喜欢
    • 2013-07-13
    • 2013-01-07
    • 1970-01-01
    • 2016-04-14
    • 2018-12-28
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多