1. SVN(版本控制)
  2.  
  3. 1、什么是SVN
  4. · 多人共同开发同一个项目,内部最大的问题是,在比较短的时间内如果有多人同时开发同一个文件,会造成彼此的代码相互覆盖的情况发生。
  5.  
  6. · 管理着随时间改变的数据,这些数据放置在一个中央资料档案库中(repository)。这个档案库很像一个普通的文件服务器,不过它会记录每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。
  7.  
  8. 2、使用SVN的作用
  9. · 多人开发同一个项目不会出现代码覆盖的情况。
  10. · 针对一个文件可以创建许多不同的版本,并且可以随时查看不同版本的内容。
  11. · 公司领导可以通过SVN查看每一个人的工作情况。
  12.  
  13. 3、安装SVN
  14. · 服务器端安装
  15. - windows下,和其他软件安装相同。
  16. · 客户端安装
  17. - 安装过后,windows操作系统,右键有标志。
  18.  
  19. 4、创建仓库
  20. · >svnadmin create h:/svnServer/app/shop(仓库地址。指定一个创建位置,事先要有相对应的文件夹。windows系统中使用cmd窗口即可)
  21.  
  22. *:如果创建时候,提示“不是内部或外部命令”就跑到svnadmin的执行程序文件目录去执行它。服务器端的安装路径
  23.  
  24. 5、启动服务并使得本地与仓库进行联系
  25. · 启动服务
  26. - svnserve -d(独立的端口号) -r(仓库地址) 仓库地址
  27. >svnserve -d -r E:/SVN/svnServer/app/book
  28. svn服务走svn协议,端口号是3690
  29.  
  30. - 启动的cmd窗口不要关闭,否则服务就关闭了。
  31.  
  32. 6、本地客户端与远程仓库取得联系
  33.  
  34. · 先启动服务
  35.  
  36. · 在自己本地的工作目录中,【 右键 --> Checkout(检出)
  37. · 填写 svn 主机名地址 (本地的svn [ svn://localhost ])
  38. · 填写 本地工作目录 (默认)
  39. · 点击 OK
  40. · 如果成功,会把远程仓库中的原有文件,检出到本地的工作目录下,如果远程库中没有文件,那么什么文件也不检出。
  41.  
  42. *:检测是否与svn服务器联系成功 -->【 查看本地工作目录中,是否有隐藏文件 [ .svn ]
  43. *:清除与svn服务器的联系 -->【 删除隐藏文件夹 [ .svn ]
  44.  
  45. 7、使用SVN
  46.  
  47. 一、文件颜色标志:
  48. --> 蓝色加号(+) :本地的 .svn 对该文件有形成管理
  49. --> 绿色对号(V :本地文件、 .svn管理的版本文件、仓库文件 三者一致
  50. --> 红色叹号(!):本地文件、 .svn管理的版本文件、仓库文件 不一致(用户自己修改了文件)
  51. --> 黄色叹号(!):表示该文件正处于冲突状态
  52. --> 蓝色问号(?):新建的一个文件,本地 .svn 远程仓库都没有该文件记录
  53.  
  54. 二、开启匿名账号权限:
  55. · 提交之前,要有相应仓库账号权限。测试的话,开启匿名账号权限,无论是谁都可以提交
  56. --> 方法:在要提交到的远程仓库中,找到 conf/svnserver.conf 配置文件,并将 anon-access = read 前面的注释去掉,并修改readwrite
  57. · 关闭匿名账号:
  58. --> 不用加 # ,直接设置其参数为none即可。
  59.  
  60. 四、查看提交文件的日志信息:
  61. --> 转到所提交的远程仓库的文件夹,db/revprops/ , 文件夹下。
  62.  
  63. 五、查看提交文件的内容:
  64. --> 转到所提交的远程仓库的文件夹,db/revs/ , 文件夹下。
  65.  
  66. 六、相关操作:
  67. ++++++++++ 单用户,单文件提交 ++++++++++++
  68. 步骤:
  69. 对要提交的单一文件:
  70. a)右键 --> SVN --> Add (使本地的 .svn 对该文件形成管理)
  71. b)右键 --> Commit (使本地文件提交到svn仓库)
  72. ++++++++++++++++++++++++++++++
  73.  
  74. ++++++++++ 多用户提交 ++++++++++++
  75. -->首次使用svn执行 checkout ,同时会把仓库最新程序文件更新到本地
  76. -->给仓库提交程序文件执行 Commit
  77. -->把仓库最新的程序文件更新到本地执行使用 update 指令
  78. +++++++++++++++++++++++++++++
  79.  
  80. ++++++++++ 目录提交 ++++++++++++
  81. --> 新创建目录中的文件,不能直接单独提交,应该先提交其目录,然后才可以单独提交其内的文件。
  82. (因为新创建的目录还没有提交到仓库,如果其中的文件提交的话,仓库根本找不到地方存放。)
  83. ++++++++++++++++++++++++++++
  84.  
  85. ++++++++++ 提交所有需要提交的文件 ++++++++++++
  86. --> 在本地工作目录的 “空白处” 直接 “右键 commit 提交。
  87. --> 如果是新文件的话,新文件会通过 commit 指令把 add commit 合并起来执行。
  88. ++++++++++++++++++++++++++++
  89.  
  90. 8、同时运行多个svn服务
  91. · 不能同时使用 cmd窗口 开启多个仓库服务,容易导致混乱。
  92.  
  93. --> 应直接开启“所有仓库”的父级目录,来开启所有的仓库服务。
  94. 例如:我所有的仓库都在 app/ 文件夹下存放,那么,开启仓库服务的时候,直接开启app就行。
  95. >svnserve -d -r E:/SVN/svnServer/app
  96. Checkout 远程仓库的时候, 填写 svn 主机名地址,应改为想要检出的仓库服务名称:
  97. (本地的svn改为是 [ svn://localhost/book])其中 svn://localhost 指向的是app
  98.  
  99. --> 用户怎么更换主机名地址+
  100. - 删除 .svn 文件,断开与远程仓库的联系。
  101. - 重新 Checkout 并根据 新的主机名 建立与仓库的联系。
  102.  
  103. 9、一个文件不同版本之间的切换查看
  104. --> 选中文件 --> 右键 --> TortoiseSVN --> Update to revision...
  105. --> show log
  106.  
  107. ++++++++ 重点 +++++++++
  108.  
  109. 10、冲突解决
  110. 两个程序员对同一个文件进行修改,彼此代码文件出现覆盖的情况就称之为冲突。
  111.  
  112. SVN冲突:
  113. 广义角度的冲突:提交程序文件 【本地版本号码】 小于 服务器版本号码】
  114.  
  115. 狭义角度的冲突:多个程序员对 用一个文件、同一处代码进行修改,在他们提交文件的时候产生冲突。
  116.  
  117. 冲突的解决:
  118. a):令牌方式解决,给每个文件设置令牌,谁获得令牌谁有权利开发该文件。
  119. - vssvisusl source safe)源代码控制管理软件使用此种方式。
  120. b):通过【版本号码】进行提交,用户 commit 文件,【本地文件版本】 【仓库版本号码】必须一致,才可以提交,否则禁止提交。
  121. (本地与服务器版本号码不一致,一定是本地版本号码小于服务器的版本号码)
  122. - svn就是通过版本号码解决冲突的。
  123.  
  124. 冲突具体形式:
  125. 一、大家修改的代码不在同一处
  126. - 解决:执行update操作,把仓库最新的文件更新到本地,并和本地文件进行【Merge(合并,不是覆盖)】操作。之后继续提交文件即可。
  127.  
  128. 二、大家修改的代码在同一处
  129. - 解决:直接update操作把最新的版本更新到本地,与本地文件进行合并操作。稍作修改后继续提交。
  130. 因为文件是在同一处,svn对本地文件进行合并后,会把相关的版本文件,同时下载下来,供查看使用。其实文件已经合并成功。下载下来的文件,可以删除。
  131.  
  132. 11、账号和权限
  133. --> 远程仓库中的 conf/ 文件夹,authz文件用来配置权限,passwd文件用来配置账号,svnServe.conf主配置文件。
  134.  
  135. 引入辅助配置文:
  136. -->在主配置文件(svnserve.conf)引入 两个 辅配置文件(authz,passwd)。取消前面的注释。
  137. password-db = passwd
  138. authz-db = authz
  139.  
  140. 添加账号:
  141. -->在passwd中,为该仓库添加可访问的账号
  142. [users] 下添加,相应的账号名称和密码。
  143. tom = tom123
  144. mary = mary123
  145.  
  146. 给账号设置权限
  147. -->给制定仓库设置权限
  148. 仓库的两种权限
  149. 一、启动运行多个仓库服务 svnserve -d -r E:/SVN/svnServer/app/
  150. [shop:/] 表示我们要给多个仓库的具体shop仓库设置访问权限
  151. [book:/] 同上
  152. [car:/] 同上
  153.  
  154. 二、启动运行单一仓库服务 svnserve -d -r E:/SVN/svnServer/app/shop
  155. [/] 表示给单一的仓库账号设置访问权限
  156.  
  157. 具体权限:read write 【*=:表示其他用户没有操作权限】
  158.  
  159. 例如:给shop仓库的账号设置权限
  160. --------------------
  161. [shop:/]
  162. tom = rw
  163. mary = r
  164. *=
  165. --------------------
  166. 表示shop远程仓库中,tom用户可以读和写。mary用户只读,其他用户没有权限。
  167.  
  168. 给一个组别设置权限:
  169. ----------------------------------
  170. [groups]
  171. php = php1,php2,php3
  172.  
  173. [shop:/]
  174. tom = rw
  175. mary = read
  176. @php = rw
  177. *=
  178. ----------------------------------
  179. 先创建一个组别,将用户添加到其中,之后在 shop:/ 中,直接设置组别名的权限。组别要用@符号标记。
  180.  
  181. 开启只操作某个目录的权限
  182.  
  183. --> [shop:/vedio]
  184.  
  185. 步骤:
  186. 一、管理员先把该目录vedio给创建出来并提交给svn仓库
  187. 二、给外包团队 设置账号 设置工作目录、和其分支目录权限
  188. 三、外包团队 建立与仓库分支目录 的联系
  189. 四、外包团队给该 目录提交文件
  190. 五、管理员执行update更新操作,把该分支目录从服务器更新下来即可查看外包团队的工作情况。
  191.  
  192. --> shop库中创建相应的外包账号:
  193. [user]
  194. wai1 = wai123
  195. wai2 = wai223
  196. wai3 = wai323
  197.  
  198. --> shop库中的外包账号设置权限
  199. [shop:/vedio]
  200. wai1 = rw
  201. wai2 = rw
  202. wai3 = rw
  203. *=
  204.  
  205. 12、设置开机启动项服务
  206. --> 创建服务
  207. : sc create 服务名称 binPath=空格"svn服务器安装路径 -r svn库路径 --service" start空格auto
  208. > sc create svnd binPath= "E:/SVN/svnServer/server/bin/svnserve.exe -r E:/SVN/svnServer/app --service" start= auto
  209.  
  210. --> 删除服务
  211. sc delete 服务名称
  212. >sc delete svnd
  213.  
  214. --> 可以创建相应的批处理文件
  215.  
  216. 13、查看每个程序员的工作情况,以及整体版本控制的情况
  217. --> 对本地项目 文件夹中的空白处 右键-->TortoiseSVN-->show log
  218.  
  219. 一个文件的不同版本之间的对比:
  220. --> 选中一个文件,右键,show log ,查看版本日志,选中要对比的两个或者是两个以上的版本,右键,compaire reversion 。进行对比。
  221.  
  222. 14、项目工作模式
  223. 程序员直接与svn仓库联系,不与服务器直接联系。
  224.  
  225. 程序员提交文件到svn服务器,然后发邮件给维护人员,维护人员update文件后,上传到web服务器。
  226.  
  227. 过程中由维护人员直接与web服务器进行联系。

SVN - 笔记的更多相关文章

  1. svn笔记

    安装部署 1.yum install subversion   2.创建svn版本库目录 mkdir -p /svn   3.创建版本库 svnadmin create /svn/fengchao/ ...

  2. svn笔记4属性Properties

    我们已经详细讲述了Subversion存储和检索版本库中不同版本的文件和目录的细节,并且用了好几个章节来论述这个工具的基本功能.如果对于版本化的支持到此为止,从版本控制的角度来看Subversion已 ...

  3. svn笔记3

    如果你是从头到尾按章节阅读本书,你一定已经具备了使用Subversion客户端执行大多数不同的版本控制操作足够的知识,你理解了怎样从Subversion版本库取出一个工作拷贝,你已经熟悉了通过svn ...

  4. svn笔记2

    Examining History Your Subversion repository is like a time machine. It keeps a record of every chan ...

  5. CentOS 7 配置SVN 笔记

    一.通过yum 安装软件 yum install subversion -y 配置nfs 用来做版本库(略过) 格式 : NFS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2( ...

  6. 【知识小结】PHP使用svn笔记总结

    在公司里,我们要养成每天上班前更新代码,下班前提交代码的习惯,并且做好说明. svn更新代码的时候,先右键点击需要更新的项目,在team中进入资源库同步界面,选择incoming mode,显示的文件 ...

  7. Git本地版本控制备忘

    首先git是一个版本控制工具,类似于SVN 笔记包括两部分,git本地版本控制和git远程协助 一.Git本地版本控制 以git windows版本msysgit为例,下载地址http://msysg ...

  8. [No000081]SVN学习笔记1-服务端搭建

    目录 一:SVN服务器搭建和使用. 1.首先来下载和搭建SVN服务器,地址http://subversion.apache.org/packages.html 2.安装完成后,启动VisualSVN ...

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

    http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...

随机推荐

  1. poj 2153 Rank List(查找,Map)

    题目链接:http://poj.org/problem?id=2153 思路分析: 判断Li Ming的成绩排名,需要在所有的数据章查找成绩比其高的人的数目,为查找问题. 查找问题可以使用Hash表, ...

  2. CodeForces 448

    A:Rewards: 题目链接:http://codeforces.com/problemset/problem/448/A 题意:Bizon有a1个一等奖奖杯,a2个二等奖奖杯,a3个三等奖奖杯,b ...

  3. VS快捷键简单记录

    代码上下移动行:Alt+上下键 跳转相等大括号:Ctrl+]

  4. 玩转Bootstarp(连载)

    一.Bootstarp是什么? 简单.灵活的用于搭建WEB页面的HTML.CSS.JS的工具集 (基于HTML5和CSS3) 总结:简洁强大的前端开发框架,可以让WEB开发更迅速.更简单 二.如何使用 ...

  5. 基于表单的身份验证(FBA)

    https://technet.microsoft.com/zh-cn/library/ee806890(office.15).aspx http://www.tuicool.com/articles ...

  6. 伪静态 apache重写

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面 下面我详细说说它的使用方法 A.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查 ...

  7. Laravel 5.1 ACL权限控制 一

    请自行添加命名空间,代码下载地址 https://github.com/caoxt/learngit 1.所需要用到的数据表 users(用户表).roles(角色表).role_user(用户角色对 ...

  8. Flask中路由模块的实现

    在Flask中的路由功能主要通过修饰函数route实现,下面我们就来挖掘下route在源代码中是怎么分配视图函数的. def route(self, rule, **options): def dec ...

  9. iOS开发之SDWebImage详解

    介绍 github地址: https://github.com/rs/SDWebImage 简介 一个异步图片下载及缓存的库 特性: 一个扩展UIImageView分类的库,支持加载网络图片并缓存图片 ...

  10. QT VS检测内存泄漏

    测试程序:http://download.csdn.net/detail/ajaxhe/4085447 vld-2.2.3: http://vld.codeplex.com/releases/view ...