2011-11-23 193 views
3

我现在已经配置了我的git来部署我的网站。 我有一个主分支,这是网站的直播状态。如果我把这个推到我的裸回购网站上传。 然后我有一个开发分支,我可以测试一切。如果我将它与活动分支合并,然后推送它,这将会实现。Git网站部署

但我仍然有问题。 我已经找到了2个解决方案,使用git进行网站部署。 2种解决方案之间的区别仅在于使用的钩子。 对于第一个解决方案,它使用git pull来创建我的www root。这意味着我需要一个以www为根的repo。 第二种解决方案使用git checkout -f,它不必是回购。 我不知道哪一个更适合我的需求。

我的问题是有可能其他用户可以使用ftp客户端在我的web服务器上添加/更改/删除文件。 问题是没有任何使用git进行提交。现在我需要在我的裸回购中获得主分支中的更改。 但我该怎么做?我认为,如果www root是一个回购,我必须先做一个提交或其他事情,然后将其提交给我的裸回购。 这是可能做到这一点,如果www根不是回购?我怎么能自动做到这一点,我得到我的主分支万维网根的内容,如果我拉主分支?

回答

0

我觉得做的更标准的方式是git checkout -f方法(或类似的方法,如git archive)在您的www是不是混帐回购协议,但是当你把它用钩子从裸回购签出。

当您使用的部署这样的事情,那么你必须确保每个人都来的git(理想情况下,你应该有CI,测试等),并推动这一生产。你不能让人们通过FTP等上传到生产环境,并且也有这种机制。这只是要求麻烦。

如果你不能阻止作出这样的改变,则具有WWW根作为回购更为合理,因为你可以跟踪变化,并将其推到裸露的回购人。即使它不是回购站,您仍然可以在服务器上设置另一个回购站,在该站上复制来自www root的文件并提交它们。

+0

正如我结账-f和归档理解我,因为有被传送的文件创建每次新的WWW根如果某些文件被删除我也不会删除www的根,如果我只覆盖这些文件或我错了吗?我无法避免使用FTP上传文件。但是我怎样才能自动跟踪这些变化?我的意思是我想从我的工作站拉。这应该告诉我的裸回购从我的服务器获取当前的活网站。如果www root是回购站,如果不是,我该怎么做? – user1058712

0

如果我正确理解您的情况,最好不要从web根目录推送到裸露的回购站点,并从裸露的回购站点拖到本地计算机。把你的web根目录中的文件同步到你本地的repo(比如用rsync)不是更好,处理你本地机器上的所有git东西(比较,添加,提交& c),并把它推到裸回购这又可能会再次触发您的Web根目录中的结帐?

+0

我想我必须做类似的事情。我的问题是用户可以使用ftp在web根目录下创建文件,而不应该删除它。但是,我在回购站上删除的文件应该在Web根目录上删除。但也许我会使用git-ftp,或者我必须将我的web根目录的文件同步到我的本地,然后才能将更改提交给它。 – user1058712