【问题标题】:Best practices for a single developer webproject setup单一开发者 webproject 设置的最佳实践
【发布时间】:2011-02-22 15:06:07
【问题描述】:

我对 GIT 很陌生,所以请原谅我任何愚蠢的问题(如果有这样的事情:)

场景

  • 我的开发机器上的一个本地存储库(Win 7、Eclipse)
  • 一台托管测试站点和生产站点的专用服务器(Win 2008 Server,管理员权限)

目标

  • 能够在我的开发机器上工作并将所有更改(在本地提交后)推送到测试站点
  • 在专用服务器上测试后,我希望将更改从我的开发机器发布到生产站点

问题

  • 我需要保护存储库,任何人都可以为我提供有关如何在 Windows 机器上实现该功能的教程
  • .git 文件夹是否需要驻留在公共 http 目录中,或者在安全方面这是一种不好的做法?
  • 我想使用 SSH 设置,因为 HTTP 速度慢且不安全。我还有哪些其他值得推荐的选择?
  • 最好是使用补丁还是将稳定/测试分支合并到我的专用服务器?

非常感谢任何帮助!

【问题讨论】:

  • +1 在您第一次提出经过深思熟虑和格式化的问题。但不幸的是,我对 Windows 无能为力。

标签: git windows-7 ssh


【解决方案1】:

我需要保护存储库;谁能给我一个关于如何在 Windows 机器上实现这一点的教程?

“保护存储库”到底是什么意思?只是处理暴露在互联网上的服务器?在这种情况下,SSH 对你来说应该足够了。如果只有你,我可能不会打扰像 gitolite 这样的花哨的东西——只需在服务器上创建一个裸存储库,除了通过 SSH 之外不要以任何方式使其可用。我也不确定您需要什么设置建议 - 您只需要能够 ssh 进入机器,并访问存储库的路径。

.git 文件夹是否需要驻留在公共 http 目录中,还是在安全方面这是一种不好的做法?

您是否希望您的生产站点实际上是一个存储库,这取决于您。它确实使它更容易摆弄,但您需要配置您的 Web 服务器以不授予对 .git 目录的访问权限。如果你是偏执狂,也很有可能在不作为存储库的情况下进行部署,例如使用git archive。这个想法只是将当前版本的副本转储到给定目录中。

我想使用 SSH 设置,因为 HTTP 速度慢且不安全。我还有哪些其他值得推荐的选择?

SSH 和 HTTPS 是如果您想要安全性要考虑的两个 git 传输协议;没有任何理由超越它们。 SSH 应该更容易设置和使用。 (Git 确实支持其他几种协议,但它们要么不适合安全使用,要么根本没有被广泛使用。)

最好建议我使用补丁还是将稳定/测试分支合并到我的专用服务器?

我假设您在这里询问生产站点,因为您提到了经过测试的分支。这当然取决于您是否有生产站点的存储库,或者它是否只是所有内容的签出副本。在前一种情况下,绝对没有理由使用补丁。只需拉入生产存储库:

cd /path/to/production-site
git pull /path/to/testing-site stable-branch

如果您的生产站点不是存储库,我可能会这样做:

# check out a copy of the updated version
git archive --format=tar --prefix=new-site HEAD | (cd /var/www && tar xf -)

# swap it into place
mv /var/www/site /var/www/old-site
mv /var/www/new-site /var/www/site
rm -rf /var/www/old-site

显然,我是 Linux 人,所以这些说明可能需要对 Windows 进行一些修改,但想法应该很清楚。

【讨论】:

    【解决方案2】:

    公共 HTTP 目录最好不要是 git 存储库,以防万一 - 您的完整 git 历史记录应该是私有的。您可以将存储库保存在您的硬盘驱动器上不由 HTTP 服务器提供服务的某个位置,并使用git checkout-indexgit archive 创建仅内容快照(请参阅this question)。

    SSH 非常适合您的目的,安全且性能良好。

    不要使用补丁 - 通过 SSH 将树与推/拉同步,然后为您的生产和测试站点使用相关分支。这些协议是高效的,同步应该不会花很长时间。您甚至可以持续同步,而不仅仅是在您想要部署的时候。

    您可以尝试these instructions from Lifehacker 在 cygwin 上使用 openssh 设置 ssh 服务器。

    在 Windows 上设置 git clients 更简单,因此您可以考虑拥有一个外部 git 存储库(在易于设置的 *nix 机器上,或使用 hosted git repository)和从你的开发机器推到那里,然后从你的测试和生产机器上拉出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 2011-04-26
      • 2018-10-04
      相关资源
      最近更新 更多