![](/img/trans.png)
[英]Basic version control for web development questions - Single developer. (SVN/GIT)
[英]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"
您可以尝试将测试服务器的Web根目录挂载到本地目录(如果测试服务器位于本地网络或VPN内),并依靠文件系统的机制来处理资源的并发使用。 然后,您将通过ssh使用vcs命令来直接在服务器上对项目进行版本控制。
但是,恕我直言,这将是一个非常奇怪的工作流程。 如果本地开发问题仅与设置XAMPP或类似问题有关,那么您是否考虑过使用可以通过Shell上的简单命令启动和停止的嵌入式Web服务器的选择? (node,ruby和python都具有嵌入式Web服务器供开发使用,如果我没记错的话,还可以安装5.4版的php)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.