SVN 学习笔记-高级操作
所谓高级操作,只是曲高和寡,其实都不怎么用的。但是关键时候,可能会很有用。
这个高级只是针对基本操作而言。有些操作可能也是比较基本的。
清除锁
有时候我们在操作的时候,可能系统崩溃了,或者SVN非正常结束了。由于SVN在Working Copy 改变时,会有一个 to_do_list ,并且锁住了要改变的东西。改变以后恢复解锁。当时如果正在这是系统非正常结束了。某些文件可能就被锁住了。
$svn status
L somedir
L表示lock,被锁住了。此时我们可以用cleaup来清除这样的锁。
$svn cleanup
$svn status
树冲突
有时候,我们的冲突发生在删除,移动一个文件时。例如我提交的时候,这个文件已经被更名了。此时的解决方法,和普通冲突类似。例如,code/bar.c 被改名为 code/baz.c
我们首先需要和发生冲突的同事商量,如果要保留baz.c那么就
$svn remove --force code/bar.c
$svn resolve --accept=working code/bar.c
$svn status
$svn diff
同样,我们如果要保留bar.c那么把要removed和resolved的文件改成baz.c即可。
属性
SVN的每个文件都可以增加一个属性。属性有自定义的,SVN原生的。属性也分为有版本的,和无版本的等等。
属性是一个有时很有用的东西,她一般用来存放一些元数据,额外的信息,方便获取。也可以用来做一些有意思的事情。
对属性的操作还是增删改查
$svn propset copyright "(C) 2011 YDTF Software Inc." code/readme.txt
Property 'copyright' set on 'code/readme.txt'
$svn proplist code/readme.txt
$svn propdel ...
$svn propget
以上几个命令,可以通过help查看详细。
几个SVN自带的属性介绍:
svn自带几个属性以svn开头。
1、svn:eol-style 表示的是行结束。
不同的操作系统,可能使用不同的行结束符号。
比如Window使用 CRLF。LF就是换行 CR就是回车。
而Unix中 只使用 LF。
这样,这个svn:eol-style就有几种值:
native; 根据本地定义
CRLF: 使用CRLF作为EOF(End-of-line)
LF:
CR
svn:ignore
Svn:ignore表示忽略Working Copy中的Unversioned文件。
当你使用svn status 时,你会发现,很多无关紧要的文件都列出来了。
于是我们可以使用svn:ignore忽略这些文件。比如 有很多 .bak文件。
我们可以设置 svn:ignore=*.bak 这样所有后缀为bak 的文件,在svn status时就不见了。
$svn status
M mydir/foo.c
M mydir/bar.c
? mydir/bar.c.bak
? mydir/foo.c.bak
$svn propset svn:ignore mydir *.bak
$svn status
M mydir/foo.c
M mydir/bar.c
注意,ignore 使用类似正则的匹配。比如 ? 表示一个,*表示多个,[ 表示开始
但是这个属性还会影响很多,诸如svn add * 时,
如果想把所有的文件加入到SVN库 ,那么使用 svn add -* -force 即可。
3、svn:keywords
我们来编辑一个svn库中的文本文件
$vi foo.c
$Date$
$Revision$
$Author$
#include<stdio.h>
...
:wq
$svn propset svn:keywords "Date Author" foo.c
$svn cat foo.c
$Author: yinshaoxin $
$Date: 2011-07-26 17:01:10 +0800 (Tue, 26 Jul 2011) $
$Revision$
#include<stdio.h>
...
于是SVN为我们的文档自动加上了Author和Date。 这里注意,SVN命令有一个全局选项,那就是--username,这个涉及到SVN的认证和授权。你最好使用自己的帐号来操作SVN。
4 svn:needs-lock
这个属性,用在一些不能同时多个人编辑的文件上。只有使用了lock锁住文件,这些文件才能是可读的,否则是不可读的。
注意,这个属性的值无关紧要。
$svn propset svn:needs-lock foo.jpg
这样,我们如果要修改这个foo.jpg 那么,只能先执行
$svn lock foo.jpg
关于lock我们后面马上就讲到。这样做并不是很严格的,但是某些时候很有用。例如,因为一些二进制文件,例如jpg文件是不可合并的。如果没有锁,两个人可能同时做了很大的修改,但是有一个人的却要是白费时间,因为他比另一个人玩提交,修改的地方是不可能自动合并的。为了不必要的浪费时间,Lock-Modify-Unlock的这种方式,就对我们很重要了。
5 svn:externals
当我们同时在两个库中工作时,我们可能在一个Working Copy中需要从另外一个库中checkout文件。这时,svn:externals就很有用了。
$svn propedit svn:externals file:///var/idp2/svn/repos/src
third-party/souds file:///var/idp/svn/repos/souds
third-party/skin -r148 file:///var/idp/svn/repos/skin
注意,我们使用 propedit来编辑 这个属性,因为她是多行的。
$svn checkout file:///var/idp2/svn/repos/src
A src
A src/Makefile
...
...
Checkd out revision 148
Fetching external item into src/third-party/souds
A src/third-party/sounds/ding.ogg
A src/third-party/sounds/dong.ogg
...
...
我们可以看到,checkout会吧external的属性设置的库也一起checkout出来了。
当我们用svn status看的时候
$svn status
E 表示External
X 表示 从external获取的。
外部文件可以提交,只要这个外部文件是HEAD版本。
我们checkout的时候,如果不想check出external的,可以加 --ignore-externals
上面列举的是一些有意思的SVN自带属性的,最好的原则是不去管他们。除非必要。
修改列表(Changelists)
有时候,我们修改的文件太多了,提交的时候,忘记了改了些什么文件,如果全部提交吧,不好区分填写日志。于是我们把修改的某一类,加如一个changlists中。提交的时候指定提交这个changlists内的东西,这样就避免了上述的问题。
$svn changlist sort-fixes sort.c list.c array.c
Path 'sort.c' now is a member of changlist 'sort-fixes'
Path 'list.c' now is a member of changlist 'sort-fixes'
Path 'array.c' now is a member of changlist 'sort-fixes'
$svn status --changelist 'math-fixes'
M sort.c
M list.c
M array.c
如果需要删除,则使用svn changlist --remove
$svn changelist --remove sort.c
一但有了changlist,我们可以用来做很多事情。比如,比较文件的时候,我们只关心指定的chagnlist的。
$svn diff --changelist sort-fixes
$svn -commit -m "fix the sort bugs" --changelist sort-fixes
提交后的changelist自动被清除。如果想保留,使用 --keep-changelists
有意思的是,changelist命令也带有--changelist选项,啊,递归。
我们需要注意的是,changlist只在Working Copy中有效,而且不能用于目录。
本文摘自:https://airu.iteye.com/blog/1145030 版权归作者所有
转载于:https://www.cnblogs.com/ysyy/p/10903939.html
SVN 学习笔记-高级操作相关推荐
- Postgresql学习笔记-高级语法篇
Postgresql学习笔记-高级语法篇 Postgresql 约束 Postgresql约束用于规定表中的数据规则. 如果存在违反约束的数据行为,行为会被约束终止. 约束可以在创建表的时候就规定(通 ...
- R语言学习笔记——高级篇:第十四章-主成分分析和因子分析
R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...
- 数据库MySQL学习笔记高级篇(周阳)
数据库MySQL学习笔记高级篇 1. mysql的架构介绍 mysql简介 高级Mysql mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化 ...
- memcached高速缓存学习笔记002---telnet操作memcached
memcached高速缓存学习笔记002---telnet操作memcached 停止memcached memcached.exe -d stop 停止 memcached.exe -p 112 ...
- Apifox 学习笔记 - 前置操作
Apifox 学习笔记 - 前置操作 设置 Content-Length 参考资料 设置 Content-Length Content-Type: application/x-www-form-url ...
- LearnOpenGL学习笔记—高级光照 09:SSAO
LearnOpenGL学习笔记-高级光照 09:SSAO 1 原理引入 2 样本缓冲 3 法向半球 4 随机核心转动 5 SSAO着色器 6 环境遮蔽模糊 7 应用环境遮蔽 8 动手试试 8.0 个人 ...
- js学习笔记82——操作内联样式
js学习笔记82--操作内联样式 通过js修改元素的样式 查参考手册 内联样式 读取元素的样式 看如下代码 <!DOCTYPE html> <html lang="en&q ...
- 学习笔记:操作系统启动过程
学习笔记:操作系统启动过程 参考资料: 1.<操作系统真象还原>郑钢 2.<操作系统引导探究> 谢煜波 操作系统启动过程 按下电源后: 电源键连接的电信号线发送一个电信号给主板 ...
- svn拉取文件合并_svn如何使用import目录作为工作拷贝+我的svn学习笔记
前奏 svn作为一款极其优秀的开源版本控制系统,应用广泛,从组织到个人遍及各行各业.因此学习和熟练掌握它,对提高我们日常工作效率和数据安全非常重要,尤其对开发人员协同管理Project的文档,代码,各 ...
最新文章
- Python使用matplotlib可视化绘图时你可用的颜色有哪些?把色彩可视化出来自己选好了
- caffe教程翻译:在caffe上训练与测试数据
- db2数据备份到mysql_DB2数据库自动备份详解
- python 基础 list和 tuple dict和set
- Linux系统编程13:进程入门之Linux中的环境变量的概念及其相关命令(export;env等)main函数的参数
- 开发者论坛一周精粹(第四十七期)服务器变更已备案域名需要重新备案吗?
- ZZULIOJ 1067:有问题的里程表
- 有关asp.net技术的外文文献_医学科技论文写作中参考文献的标准格式及常见问题...
- java做flv直播服务器,EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略...
- linux记录iptables日志,linux – 如何配置syslog.conf文件,在单独的文件中记录iptables消息?...
- CNKI知网论文下载工具
- MATLAB的非线性变换
- Docker 容器内体验 WebSSH
- 常见的web攻击手段
- 组态王客户端显示服务器画面,组态王客户端显示服务器画面
- 创业兵法—选择最适合你的创业项目
- 协同办公管理软件都需要有哪些功能?
- Zookeeper的Paxos算法,(2P/3P/CAP/BASE)一致性协议简单介绍
- RS232 RS485 通信结构
- JASS代码翻译更新(第七篇)
热门文章
- Java 第八次平时作业
- Java老矣,尚能饭否?——Stack Overflow 2018 开发者调查报告出炉
- C语言笔记(三)常量、变量
- 剑指offer73:狒狒吃香蕉
- 9.5 考试 第三题 奇袭题解(codeforce 526f)
- Spring Boot JPA实体类idea自动生成 其一-https://www.jianshu.com/p/44bb7e25f5c7
- 超级账本、微众银行与迅雷链同台论链 区块链将从技术共识走向应用共识
- [Java] Lock(锁)的tryLock失败是否需要unlock?
- arthas启动-attach深入理解
- 武冈二中2021高考成绩查询,快看!2019最新武冈一中、二中录取分数线出炉