单个开发人员Web项目设置的最佳实践

Sga*_*ali 5 git ssh windows-7

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

情景

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

目标

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

质询

  • 我需要保护回购,任何人都可以指向我如何在Windows机器上实现它的教程
  • .git文件夹是否需要驻留在公共http目录中,或者这是一个关于安全性的错误做法?
  • 我认为使用SSH设置,因为HTTP很慢且不安全.我还有哪些其他值得推荐的选择?
  • 我是否最好建议使用补丁或者将稳定/测试分支合并到我的专用服务器?

任何帮助深表感谢!

Cas*_*bel 4

我需要确保回购协议的安全;谁能给我指点如何在 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
Run Code Online (Sandbox Code Playgroud)

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

# 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
Run Code Online (Sandbox Code Playgroud)

显然,我是一名 Linux 用户,因此这些说明可能需要针对 Windows 进行一些修改,但想法应该非常清晰。