Web开发的控制版本

时间:2014-02-27 08:57:47

标签: git web version-control

我将简要介绍一下我们的工作流程: 我们是一个想要开发大量网站的四位程序员。这个想法是直接使用(测试)网络服务器而不是本地工作。我们还希望每次我们想要处理它们时锁定文件,从而避免损坏。到目前为止,我已经看过Git,但问题是你总是有一个本地副本,我们不想使用XAMP服务器或任何东西。 一旦我们同意我们的项目完成,我们希望将这些更改“推送”到(真实的)网络服务器,以便网站在线。

所以基本上我们需要的是直接在(测试)网络服务器上工作,这样我们的更改就是在线,但是有版本控制系统。

我到目前为止尝试使用Git创建一个裸存储库。问题是,如果我们想从服务器中提取当前版本,则会生成本地副本。之后,如果我们想要尝试我们的更改,我们必须将这些更改推回并每次刷新网站。理想情况下,如果我们只是保存项目并刷新网站但使用控件版本会很棒。

有没有办法像这样工作?是否有为团队合作发展而设计的控制版本?

3 个答案:

答案 0 :(得分:1)

您可以编写post-receive hook并将其添加到测试服务器的裸存储库

每次将某些更改推送到reposotory时,此挂钩将使用最新版本进行部署。

我使用这种方式在生产服务器上部署新版本。 我的钩子是红宝石:

#!/usr/bin/env ruby
# post-receive
require 'fileutils'
# 1. params
from, to, branch = ARGF.read.split " "
deploy_to_dir = '/home/domain'
# 2. Check if master
if (branch =~ /master$/) == nil
    puts "this branch #{branch}, not for deploing."
    exit
end
FileUtils.touch(deploy_to_dir+'/SERVER_DOWN')

# 3. copy files to deploy
`GIT_WORK_TREE="#{deploy_to_dir}" git checkout -f master`
puts "DEPLOY: master(#{to}) copied to '#{deploy_to_dir}'"
#clean all exept new uploaded images
`GIT_WORK_TREE="#{deploy_to_dir}" git clean -fd -e public_html/img/storage`
puts "DEPLOY: git clean done."
# 4. Deployment Tasks
# Clear cache, restart Daemons etc

FileUtils.rm_rf(deploy_to_dir+"/public_html/codegen")
puts "CLEAR: deleted "+deploy_to_dir+"/public_html/codegen"

FileUtils.rm_rf(deploy_to_dir+"/smarty/templates_c")
Dir.mkdir(deploy_to_dir+"/smarty/templates_c")
FileUtils.chmod 0755, deploy_to_dir+"/smarty/templates_c"
puts "CLEAR: deleted  and created "+deploy_to_dir+"/smarty/templates_c/*"

FileUtils.rm_f deploy_to_dir+"/.gitignore"
puts "CLEAR: deleted "+deploy_to_dir+"/.gitignore"

FileUtils.mv deploy_to_dir+"/public_html/prod.htaccess", deploy_to_dir+"/public_html/.htaccess"
puts "CLEAR: production .htaccess online"

FileUtils.rm_f deploy_to_dir+"/SERVER_DOWN"
puts "CLEAR: deleted "+deploy_to_dir+"/SERVER_DOWN"

答案 1 :(得分:0)

看看......

cvs有些过时,但支持在项目上进行持续开发(即没有定期完成部署),其中许多小文件反映了相当严格的数据封装。推出/里程碑仍然可以通过向版本化文件集发出所谓的标记来建模。

每个解决方案都有

普通操作系统的客户端。

答案 2 :(得分:0)

您可以尝试将测试服务器的Web根安装在本地目录上(如果测试服务器位于本地网络或VPN中),并依赖于文件系统的机制来处理资源的并发使用。然后,您将通过ssh使用vcs命令直接在服务器上控制项目版本。

然而,这将是一个非常奇怪的工作流程,恕我直言。如果本地开发的问题只与设置XAMPP或类似问题有关,您是否考虑过使用可以在shell上使用简单命令启动和停止的嵌入式Web服务器的选项? (node,ruby和python都有嵌入式web服务器供开发使用,如果我没记错的话,还有5.4版的php。)