生产项目加入到SVN版本控制
零、介绍
每天定时备份是通过ftp打包和同步的方式,这些都是比较粗的备份,没法恢复到指定时间的文件,所以需要用到svn控制版本。
(请不要问我为什么不用git)
一、现有项目文件加入版本控制
因为项目已经在线上运行了,所以得先把运行中的文件导入到版本库,形成第一个版本。这里会遇到一个问题就是import导入的文件不会有版本号,只是在库里面,所以又要checkout回www目录(这个过程是很奇怪的)。这里解决办法是,不通过import方式导入,而是通过add方式。
1.把svn版本库中的空目录检出到www目录
#svn checkout svn://xxx.xxx.xxx.xxx/website www
2.在www目录下查询svn控制状态
#svn status
3.把www目录查询到的带问号(?)的文件和文件夹加入到svn库中
#svn add index.html #svn commit index.html -m '这里写注释'
二、排除不需要加入版本库的文件和文件夹
网站程序的缓存文件夹和附件文件夹因为太大,所以我不把他放到svn里面,只是用ftp备份。在svn里面具体操作如下(在www目录下):
#svn propset svn:ignore 'caches <回车> upload' . #svn commit . -m 'set ignore'
以上部分,我的网站根目录下有两个文件夹caches和upload不需要上传,设置了忽略。(请注意后面那个句点)
三、设置httpd屏蔽访问.svn文件
因为之前的乌云上有报漏洞关于.svn文件泄露导致网站被攻击的情况,所以还是需要把网站目录下的.svn访问权限给屏蔽。
通过 httpd 的 Location 匹配限定访问:
<Location ~ "/\.svn/">
Order deny,allow
Deny from all
</Location>
参考:http://httpd.apache.org/docs/2.4/mod/core.html#location
生产项目加入到SVN版本控制的更多相关文章
- [转]将已有项目代码加入svn版本控制
原文链接:https://blog.csdn.net/aaroun/article/details/79074178 将已有项目代码加入svn版本控制 - TortoiseSVN入门篇Windows下 ...
- SVN将项目代码加入svn版本控制
将已有项目代码加入svn版本控制 - TortoiseSVN入门篇Windows下SVN实用教程(以TortoiseSVN作为客户端(client)) 翻译: Bravo Young Next: 版本 ...
- idea 开发 webpack项目时,只要已加入SVN 版本控制 一直 updating 问题解决
场景描述,这是一个困扰我很久的一个问题,一直百度,都解决不了,今天自己通过设置终于解决了,慢慢的都是辛酸泪,赶快写个笔记记录一下. 对于idea 开发 vue-cli+webpack 项目,idea ...
- 使用命令行 Subversion 访问项目源文件(SVN)
from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 命令行 Subversion 入门 如果您参与的项目 ...
- SVN版本控制工具使用学习
SVN版本控制工具使用学习 Subversion是优秀的版本控制工具. 1.下载和搭建SVN服务器 http://subversion.apache.org/packages.html 类型有5种,推 ...
- 取消svn版本控制
删除项目中的版本控制,即删除项目文件夹下的所有.svn文件夹(在做项目的时候,有时候想把项目拷回去看看,但是文件太大了,而且压缩起来很慢.这主要是因为在项目中有大量的.svn文件夹.所以才想把.svn ...
- 如何在一个ubuntu系统上搭建SVN版本控制工具
有话说,由于公司项目部署需要,将Windows工程迁移到Linux,通过调查确定使用Ubuntu的Linux操作系统.那么如何快速搭建和Windows一样快捷方便的开发环境就很重要了.本文讲述如何在一 ...
- SVN版本控制说明与相关指令
SVN版本控制说明 目的 多个版本中并行开发,提高开发效率: 保证各个版本和各个环境(开发.测试.主干)的独立,避免相互影响: 通过分支与主干的合并,这样主干永远是最新.最高版本,并且都在后面的测试中 ...
- VS清除打开项目时的TFS版本控制提示
原文:http://blog.useasp.net/archive/2015/12/15/how-to-permanently-remove-vs-project-TFS-source-version ...
随机推荐
- POJ 1273 || HDU 1532 Drainage Ditches (最大流模型)
Drainage DitchesHal Burch Time Limit 1000 ms Memory Limit 65536 kb description Every time it rains o ...
- C# 创建、安装和卸载Windows服务程序
1.新建一个windows服务程序. 2.点击这个服务类,从工具箱中加入一个Timer控件,右键这个Timer控件 命名为 timerOrderDeductionDetailJob,Enable设为T ...
- Webx学习(一)
什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架. Webx致力于提供一套极具扩展性的机制.来满足Web应用不断变化 ...
- iOS开发——网络编程OC篇&GCDAsyncSocket编程
GCDAsyncSocket编程 同上一篇文章一样,这里也是使用Socket实现一个聊天室,但是这里使用的是一个常用的框架实现的:GCDAsyncSocket 一:导入这个框架 二:声明这个Socke ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- 加密解密知识 php非对称加密
function test1(){ $config = array( "digest_alg" => "sha1", "private_key_ ...
- Service的启动与停止、绑定与解绑
---恢复内容开始--- Service的意义就在于当软件停止之后还可以在背景中进行运行,换句话也就是说,比如一个音乐播放器,当我们退出音乐播放器的时候,还是希望它在背景中运行,也就是一直播放着音乐, ...
- 可扩展的listview--Expandablelistview
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- 自定义请求头信息及cookie信息
请求网页的时候有时候我们需要传递一些参数信息,这个时候我们可以将参数放到请求头中,具体使用如下: 这里有小问题就是请求参数的属性名好像不支持下划线,即 HTTP_UID不可用,但是HTTP-UID就可 ...
- RMI原理
一.分布式对象 在学习 RMI 之前,先来分布式对象(Distributed Object):分布式对象是指一个对象可以被远程系统所调用.对于 Java 而言,即对象不仅可以被同一虚拟机中的其他客户程 ...