繁体   English   中英

Web开发的控制版本

[英]Control Version for Web Development

我将简要解释我们的工作流程:我们是四个程序员,他们想要开发许多网站。 这个想法是直接与(测试)网络服务器一起工作,而不是在本地工作。 我们还希望每次处理文件时都将其锁定,从而避免损坏。 到目前为止,我已经研究了Git,但是问题是您始终拥有本地副本,并且我们不希望使用XAMP服务器或任何其他版本。 一旦我们同意我们的项目完成,我们就希望将这些更改“推送”到(真实的)网络服务器,以便网站在线。

因此,基本上,我们需要的是直接在(测试)网络服务器上工作,以便我们的更改可以直接在线进行,但需要使用版本控制系统。

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

有什么办法可以像这样工作吗? 有针对团队合作开发的控制版本吗?

您可以编写接收后挂钩并将其添加到测试服务器的裸存储库中

每次您对存储库进行某些更改时,此挂钩将部署最新版本。

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

#!/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"

看一下 ...

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

每个解决方案都可以使用通用操作系统的客户端。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM