SVN - 笔记

SVN(版本控制)

1、什么是SVN
	· 多人共同开发同一个项目,内部最大的问题是,在比较短的时间内如果有多人同时开发同一个文件,会造成彼此的代码相互覆盖的情况发生。

	· 管理着随时间改变的数据,这些数据放置在一个中央资料档案库中(repository)。这个档案库很像一个普通的文件服务器,不过它会记录每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。

2、使用SVN的作用
	· 多人开发同一个项目不会出现代码覆盖的情况。
	· 针对一个文件可以创建许多不同的版本,并且可以随时查看不同版本的内容。
	· 公司领导可以通过SVN查看每一个人的工作情况。

3、安装SVN
	· 服务器端安装
		- windows下,和其他软件安装相同。
	· 客户端安装
		- 安装过后,windows操作系统,右键有标志。

4、创建仓库
	· >svnadmin create h:/svnServer/app/shop(仓库地址。指定一个创建位置,事先要有相对应的文件夹。windows系统中使用cmd窗口即可)

	*:如果创建时候,提示“不是内部或外部命令”就跑到svnadmin的执行程序文件目录去执行它。服务器端的安装路径

5、启动服务并使得本地与仓库进行联系
	· 启动服务
		- svnserve   -d(独立的端口号)   -r(仓库地址)    仓库地址
		>svnserve   -d   -r   E:/SVN/svnServer/app/book
		该svn服务走svn协议,端口号是3690

		- 启动的cmd窗口不要关闭,否则服务就关闭了。

6、本地客户端与远程仓库取得联系

	· 先启动服务

	· 在自己本地的工作目录中,【 右键 --> Checkout(检出) 】
	· 填写 svn 主机名地址  (本地的svn是     [ svn://localhost ])
	· 填写 本地工作目录 (默认)
	· 点击 OK
	· 如果成功,会把远程仓库中的原有文件,检出到本地的工作目录下,如果远程库中没有文件,那么什么文件也不检出。

	*:检测是否与svn服务器联系成功 -->【 查看本地工作目录中,是否有隐藏文件 [ .svn ] 】
	*:清除与svn服务器的联系 -->【 删除隐藏文件夹 [ .svn ] 】

7、使用SVN

	一、文件颜色标志:
		--> 蓝色加号(+) :本地的  .svn  对该文件有形成管理
		--> 绿色对号(V) :本地文件、  .svn管理的版本文件、仓库文件   三者一致
		--> 红色叹号(!):本地文件、 .svn管理的版本文件、仓库文件   不一致(用户自己修改了文件)
		--> 黄色叹号(!):表示该文件正处于冲突状态
		--> 蓝色问号(?):新建的一个文件,本地 .svn    和   远程仓库都没有该文件记录

	二、开启匿名账号权限:
		· 提交之前,要有相应仓库账号权限。测试的话,开启匿名账号权限,无论是谁都可以提交
		--> 方法:在要提交到的远程仓库中,找到  conf/svnserver.conf   配置文件,并将  anon-access = read  前面的注释去掉,并修改read为write 。
		· 关闭匿名账号:
			--> 不用加  #  ,直接设置其参数为none即可。

	四、查看提交文件的日志信息:
		--> 转到所提交的远程仓库的文件夹,db/revprops/ , 文件夹下。

	五、查看提交文件的内容:
		--> 转到所提交的远程仓库的文件夹,db/revs/ , 文件夹下。

	六、相关操作:
		++++++++++ 单用户,单文件提交 ++++++++++++
		步骤:
			对要提交的单一文件:
			a)右键 --> SVN --> Add     (使本地的 .svn 对该文件形成管理)
			b)右键 --> Commit			  (使本地文件提交到svn仓库)
		++++++++++++++++++++++++++++++

		++++++++++ 多用户提交 ++++++++++++
		-->首次使用svn执行  checkout  ,同时会把仓库最新程序文件更新到本地
		-->给仓库提交程序文件执行  Commit
		-->把仓库最新的程序文件更新到本地执行使用  update 指令
		+++++++++++++++++++++++++++++

		++++++++++ 目录提交 ++++++++++++
		--> 新创建目录中的文件,不能直接单独提交,应该先提交其目录,然后才可以单独提交其内的文件。
			(因为新创建的目录还没有提交到仓库,如果其中的文件提交的话,仓库根本找不到地方存放。)
		++++++++++++++++++++++++++++

		++++++++++ 提交所有需要提交的文件 ++++++++++++
		--> 在本地工作目录的 “空白处”   直接  “右键 commit ”  提交。
		--> 如果是新文件的话,新文件会通过 commit 指令把  add  和  commit  合并起来执行。
		++++++++++++++++++++++++++++

8、同时运行多个svn服务
	· 不能同时使用  cmd窗口  开启多个仓库服务,容易导致混乱。

	--> 应直接开启“所有仓库”的父级目录,来开启所有的仓库服务。
		例如:我所有的仓库都在  app/  文件夹下存放,那么,开启仓库服务的时候,直接开启app就行。
				>svnserve   -d   -r   E:/SVN/svnServer/app
				在  Checkout  远程仓库的时候, 填写 svn 主机名地址,应改为想要检出的仓库服务名称:
				(本地的svn改为是     [ svn://localhost/book])其中 svn://localhost 指向的是app

	--> 用户怎么更换主机名地址+
		- 删除  .svn  文件,断开与远程仓库的联系。
		- 重新  Checkout  并根据   新的主机名   建立与仓库的联系。

9、一个文件不同版本之间的切换查看
	--> 选中文件 --> 右键 --> TortoiseSVN --> Update to revision...
	--> show log

++++++++ 重点 +++++++++

10、冲突解决
	两个程序员对同一个文件进行修改,彼此代码文件出现覆盖的情况就称之为冲突。

	SVN冲突:
		广义角度的冲突:提交程序文件  【本地版本号码】 小于  【 服务器版本号码】

		狭义角度的冲突:多个程序员对 用一个文件、同一处代码进行修改,在他们提交文件的时候产生冲突。

	冲突的解决:
		a):令牌方式解决,给每个文件设置令牌,谁获得令牌谁有权利开发该文件。
			- vss(visusl source safe)源代码控制管理软件使用此种方式。
		b):通过【版本号码】进行提交,用户 commit 文件,【本地文件版本】 与 【仓库版本号码】必须一致,才可以提交,否则禁止提交。
		(本地与服务器版本号码不一致,一定是本地版本号码小于服务器的版本号码)
			- svn就是通过版本号码解决冲突的。

	冲突具体形式:
		一、大家修改的代码不在同一处
			- 解决:执行update操作,把仓库最新的文件更新到本地,并和本地文件进行【Merge(合并,不是覆盖)】操作。之后继续提交文件即可。			

		二、大家修改的代码在同一处
			- 解决:直接update操作把最新的版本更新到本地,与本地文件进行合并操作。稍作修改后继续提交。
						因为文件是在同一处,svn对本地文件进行合并后,会把相关的版本文件,同时下载下来,供查看使用。其实文件已经合并成功。下载下来的文件,可以删除。

11、账号和权限
		--> 远程仓库中的  conf/ 文件夹,authz文件用来配置权限,passwd文件用来配置账号,svnServe.conf主配置文件。

		引入辅助配置文:
		-->在主配置文件(svnserve.conf)引入 两个 辅配置文件(authz,passwd)。取消前面的注释。
				password-db = passwd
				authz-db = authz

		添加账号:
		-->在passwd中,为该仓库添加可访问的账号
				在 [users] 下添加,相应的账号名称和密码。
				tom = tom123
				mary = mary123

		给账号设置权限
		-->给制定仓库设置权限
			仓库的两种权限
				一、启动运行多个仓库服务  svnserve -d -r E:/SVN/svnServer/app/
						[shop:/] 表示我们要给多个仓库的具体shop仓库设置访问权限
						[book:/] 同上
						[car:/]	 同上

				二、启动运行单一仓库服务 svnserve -d -r E:/SVN/svnServer/app/shop
						 [/] 表示给单一的仓库账号设置访问权限

			具体权限:read  write  【*=:表示其他用户没有操作权限】

			例如:给shop仓库的账号设置权限
			--------------------
			[shop:/]
			tom = rw
			mary = r
			*=
			--------------------
			表示shop远程仓库中,tom用户可以读和写。mary用户只读,其他用户没有权限。

		给一个组别设置权限:
		----------------------------------
			[groups]
			php = php1,php2,php3

			[shop:/]
			tom = rw
			mary = read
			@php = rw
			*=
		----------------------------------
		先创建一个组别,将用户添加到其中,之后在  shop:/  中,直接设置组别名的权限。组别要用@符号标记。

		开启只操作某个目录的权限

			--> [shop:/vedio]  

			步骤:
				一、管理员先把该目录vedio给创建出来并提交给svn仓库
				二、给外包团队  设置账号  和  设置工作目录、和其分支目录权限
				三、外包团队   建立与仓库分支目录  的联系
				四、外包团队给该 目录提交文件
				五、管理员执行update更新操作,把该分支目录从服务器更新下来即可查看外包团队的工作情况。

			--> 在shop库中创建相应的外包账号:
			     [user]
				 wai1 = wai123
				 wai2 = wai223
				 wai3 = wai323

			--> 对shop库中的外包账号设置权限
				[shop:/vedio]
				wai1 = rw
				wai2 = rw
				wai3 = rw
				*=

12、设置开机启动项服务
		--> 创建服务
			: sc create 服务名称 binPath=空格"svn服务器安装路径 -r svn库路径 --service" start空格auto
			> sc create svnd binPath= "E:/SVN/svnServer/server/bin/svnserve.exe -r E:/SVN/svnServer/app --service" start= auto

		--> 删除服务
			:sc delete 服务名称
			>sc delete svnd

		--> 可以创建相应的批处理文件

13、查看每个程序员的工作情况,以及整体版本控制的情况
		--> 对本地项目  文件夹中的空白处  右键-->TortoiseSVN-->show log

		一个文件的不同版本之间的对比:
			--> 选中一个文件,右键,show log   ,查看版本日志,选中要对比的两个或者是两个以上的版本,右键,compaire reversion 。进行对比。

14、项目工作模式
	程序员直接与svn仓库联系,不与服务器直接联系。

	程序员提交文件到svn服务器,然后发邮件给维护人员,维护人员update文件后,上传到web服务器。

	过程中由维护人员直接与web服务器进行联系。
时间: 2024-10-25 05:56:27

SVN - 笔记的相关文章

SVN笔记

checkout是将服务器上德代码下载到本地(下载所有文件)checkout只需要做一次 commit是将本地修改之后的文件提交到服务器(只提交修改之后的)每天下班前:commit “可运行版本” update是将服务器上的代码更新到本地(只会更新被修改的文件) out of date错误是要提交的文件 在服务器上已经被修改了,再次commit就会报这个错误 checkout:进入要下载到的文件夹输入svn checkout指令输入电脑密码输入用户名输入密码checkout成功 第二次check

apache结合svn笔记

? 如果单独用subversion 不结合apache,那么 访问版本库地址为 svn://XXX 格式. 对应的配置文件,只需要配置版本库目录下的conf 里的配置文件即可. 配置用户文件 passwd 格式为 "用户名 = 密码" 密码为明文 权限配置 也是配置当前目录下的 authz文件 ? ? 若要结合apache的配置,则不需要启动svnserve. 此时配置用户及权限 需要在httpd.conf里面配置. ? ? AuthUserFile /opt/subversion/c

FreeBSD上两种认证方式配置SVN笔记二

一.安装: 1.Apache安装 不用多说,进入到 /usr/ports/www/apache22目录下,运行make install即可安装默认方式搞定,如果你还有别的apache的应用和需求,自己研究. 2.Subversion安装 #cd /usr/ports/devel/subversion#make install WITHOUT_BDB=yes WITH_MOD_DAV_SVN=yes APXS=/usr/local/sbin/apxs 说明:WITHOUT_BDB=yes 这是我不

Svn 笔记—— 安装

Svn 安装 检查安装: [[email protected] /]# rpm -qa|grep subversion [[email protected] /]# mdir -p /application/svndata [[email protected] /]# mdir -p /application/svnpasswd [[email protected] /]# tree /application/ /application/ ├── svndata └── svnpasswd [[

Svn 笔记—— 配置

创建版本库 [[email protected] /]# svnadmin create /application/svndata/sadoc [[email protected] /]# tree /application/ /application/ ├── svndata │   └── sadoc │       ├── conf │       │   ├── authz │       │   ├── passwd │       │   └── svnserve.conf │  

Svn 笔记—— Hooks

pre-commit 钩子功能: [[email protected] hooks]# cat /application/svndata/sadoc/hooks/pre-commit #!/bin/bash #Check message lenth            ---更新版本时强制输入信息小于5个字符会退出 REPOS="$1" TXN="$2" logmsg=`svnlook log -t $TXN $REPOS |grep "[a-zA-Z0

安装SVN

笔记内容:安装svn笔记日期:2018-01-11 22.1 代码管理平台介绍 22.2 安装svn 22.3 客户端上使用svn(linux) 22.4 客户端上使用svn(windows) 22.1 代码管理平台介绍 现在的开发工作都是由团队合作来完成开发,通常都是团队中的每个人或者每几个人完成一个模块的开发,最后再将模块拼凑起来,形成一个完整的项目,这就涉及到了协同开发.在各个模块的开发过程中,肯定会因为出现BUG或者需求更改,而进行代码的修改甚至重构的,代码每修改一次就相当于迭代了一次版

Git本地版本控制备忘

首先git是一个版本控制工具,类似于SVN 笔记包括两部分,git本地版本控制和git远程协助 一.Git本地版本控制 以git windows版本msysgit为例,下载地址http://msysgit.github.io/ 1.打开git bash这是基于MINGW32的一个模拟linux bash终端 . 2.将目录切换到C盘根目录,创建一个文件夹名为gitproj 3.在该目录下执行命令  git init初始化该文件目录为git库 将生产一个.git后缀的文件 不要改动或者删除这个文件

SVN版本库(访问权限)配置实例笔记

http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/8578297 作者:张建波 邮箱: [email protected] 电话:13577062679 欢迎来电交流! 访问控制如图所示 说明: why用户仅仅只能访问(读写)yjb目录,对其它目录是无法“查看