使用git来管理web开发;

我们需要做的事情 :

1,在服务器建立版本仓库;

2,在服务器建立稳定版本的站点,编写版本仓库的hooks;

3,在开发服务器上提交开发版本;

下面一步一步来:(注意建立新用户,如git)

1,在服务器上建立版本管理仓库;假定目录为 /git/,切换到该目录下;建立一个工程

cd /git/
mkdir project.git
git init --bare

2,在服务器上建立稳定版本的站点,例如目录是 /home/www ; 下面是重点,写钩子hooks:

cd /git/project.git
cp hooks/post-receive.sample hooks/post-receive
vim hooks/post-receive
#加入下面代码
GIT_WORK_TREE=/home/www git checkout -f

3,在开发服务器上提交开发版本;假设目录为/git/project/

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub git@yourserver
git init
git add *
git commit -a -m "init a version"
git remote add origin git@youserver:/git/project.git
git push origin master

这个时候,查看一下 /home/www下,文件应该已经更新了...

华丽的分隔线


  这种方法在生产服务器上也建立了版本管理,这样会消耗服务器资源,还可以带来源代码泄露(例如某个开发版本将密码都写了进去,后果不堪设想)等其他安全隐患,所以在后面的开发中,我们采用了Git+Rsync的架构,内网开发服务器架设GitLab进行源代码管理 ,同时搭建rsync客户端进行代码同步;生产服务器只使用Rsync服务端监听端口接收同步请求。

GitLab的搭建可以参考:

  https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos

  http://www.pickysysadmin.ca/2013/03/25/how-to-install-gitlab-5-0-on-centos-6/

  相对于Gitlab,我更喜欢使用Gitolite+Gitweb来进行代码审阅,因为他们的安装更简单一点,而且,Gitweb的代码很简炼,我们可以很方便地进行功能的添加,例如我们之前添加的增量更新的功能。

Rsync的搭建可以参考这篇文章

写一个shell脚本或者使用php进行网页命令调用来同步代码是一个很不错的想法,我们用的是php执行shell命令来进行同步的。


  另外,如果想在多台生产服务器上进行代码同步,可以使用rsync+inotify进行实时同步,这样,在内网开发服务器向一台主服务器同步代码后,inotify监控脚本可以同步其他生产服务器,同步。

git web开发版本管理的更多相关文章

  1. 分享一篇 Git Web 开发流程

    分享一篇 Git Web 开发流程 web 项目如何进行 git 多人协作开发 https://segmentfault.com/a/1190000018165757

  2. 2016 Web开发资源工具大搜罗

    来源于:https://zhuanlan.zhihu.com/p/22730771 作者:余博伦链接:https://zhuanlan.zhihu.com/p/22730771来源:知乎著作权归作者所 ...

  3. 2016 Web 开发资源工具大搜罗

    原文链接: 100+ Awesome Web Development Tools and Resources Web的迅猛发展对于开发者来说既是一件好事也是一件坏事.不断紧跟潮流学习新的技术.编程语言 ...

  4. 2019 Web开发学习路线图

    以下 Web 开发人员学习路线图是来自 Github developer-roadmap 项目,目前已经有繁体版翻译 developer-roadmap-chinese. 主要有三个方向,分别为前端开 ...

  5. [转帖]2019 简易Web开发指南

    2019 简易Web开发指南     2019年即将到来,各位同学2018年辛苦了. 不管大家2018年过的怎么样,2019年还是要继续加油的! 在此我整理了个人认为在2019仍是或者将成为主流的技术 ...

  6. git web 服务器的搭建【转】

    转自:http://blog.csdn.net/transformer_han/article/details/6450200 目录(?)[-] git服务器搭建过程 需求 硬件需求一台Ubuntu或 ...

  7. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? .Net Web开发技术栈

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?   什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念 ...

  8. Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖

    需求描述: 本人大婚将至,女朋友说“现在都流行在微信上发电子请帖了,你不是技(cheng)术(xu)宅(yuan)嘛,不会连这个都搞不定吧” 本人嘴上说这等小事何足挂齿,但心里还是七上八下的,虽然自认 ...

  9. Git&Gitlab开发流程与运维管理

    Git&Gitlab开发流程与运维管理 作者 刘畅 时间 2020-10-31 实验系统版本centos7.5 主机名称 ip地址 配置 安装软件 controlnode 172.16.1.1 ...

随机推荐

  1. [Functional Programming] Using JS, FP approach with Arrow or State Monad

    Using Naive JS: const {modify, get} = require('crocks/State'); const K = require('crocks/combinators ...

  2. easyui tree loader用法

    easyui的tree每次都展开,在获取子节点,自定义参数解决方案,兄跌是不是找很久了! 直接上代码 //重写tree的loader $.extend($.fn.tree.defaults, { lo ...

  3. 《python源代码剖析》笔记 python中的List对象

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyListObject对象 --> 变长可变对象,可看作vector<Py ...

  4. Navicat标识为灰

    Navicat Premium作为一种通用数据管理工具,非常受迎接.最近,又遇到一个小问题.即为了实现自增,需要设置主键标识,而在Navicat中发现其为灰色,不可用. 原因:Navicat不允许设置 ...

  5. linux 查看网线断开 网卡是否关闭

    linux 查看网线断开 网卡是否关闭 探测是否存在网络接口:  SIOCGIFFLAGS

  6. uni - 自定义组件

    目录结构如下 点击下载自定义组件示例

  7. vsphere产品下载列表

    https://my.vmware.com/cn/web/vmware/info/slug/datacenter_cloud_infrastructure/vmware_vsphere_with_op ...

  8. AfterAddJS

    protected override string AfterAddJS() { return CanDoo.FineUI.Utility.AfterSaveJS_ReloadData(EntityI ...

  9. C# delegate (1)

    delegate是委托,本身不能解决跨线程访问控件的问题,直接调用委托还是会报错 Invoke指定用主线程中的控件去调用这个委托,相当于主线程来执行这个函数 在codeProject网站中找到的. C ...

  10. Android——gradle files have changed since last project sync

    这个报错,会引起锁死代码,不能编辑.不能编译等情况.    主要原因是:上一次修改gradle后,添加依赖失败.可能引进了过期.无效的依赖. 解决办法:把最近一次添加的依赖删除,重新编译项目.然后上网 ...