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

时间:2011-02-22 15:06:07

标签: git windows-7 ssh

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

SCENARIO

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

目标

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

问题

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

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

  

我需要保证回购;任何人都可以指点我如何在Windows机器上实现它的教程?

“确保回购”究竟是什么意思?刚刚处理暴露在互联网上的服务器?在这种情况下,SSH应该足够了。如果它只是你,我可能不会打扰像gitolite这样的任何东西 - 只需在服务器上创建一个裸存储库,并且不要通过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进行一些修改,但这个想法应该非常明确。

答案 1 :(得分:1)

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

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

不要使用补丁 - 通过SSH使用push / pull同步树,然后为生产和测试站点获取相关分支。协议是有效的,不应该花很长时间来同步。您甚至可以连续同步,而不仅仅是在您想要部署时。

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

在Windows上设置git 客户端比较简单,因此您可以考虑使用外部git存储库(在* nix机器上设置很简单,或使用hosted git repository并从您的开发机器推送,然后从您的测试和生产机器中拉出。