房产手机网站开发,淘宝怎么开店铺卖货,扮家家室内设计,网站如何创建SVN
1. 主要内容 2. SVN介绍
2.1. 简介
SVN全称Subversion#xff0c;是⼀个开放源代码的版本控制系统#xff0c;Subversion 在 2000 年由 CollabNet Inc开发#xff0c;现在发展成为 Apache 软件基⾦会的⼀个项⽬#xff0c;同样是⼀个丰富的开发者和⽤户社区的⼀部分…SVN
1. 主要内容 2. SVN介绍
2.1. 简介
SVN全称Subversion是⼀个开放源代码的版本控制系统Subversion 在 2000 年由 CollabNet Inc开发现在发展成为 Apache 软件基⾦会的⼀个项⽬同样是⼀个丰富的开发者和⽤户社区的⼀部分。 SVN是⼀个开放源代码的版本控制系统管理着随时间改变的数据。这些数据放置在⼀个中央资料档案库(repository) 中。 这个档案库很像⼀个普通的⽂件服务器, 不过它会记住每⼀次⽂件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览⽂件的变动历史。说得简单⼀点SVN就是⽤于多个⼈共同开发同⼀个项⽬共⽤资源的⽬的。
2.2. 主要作⽤
⽬录版本控制 Subversion 实现了⼀个 “虚拟” 的版本控管⽂件系统, 能够依时间跟踪整个⽬录的变动。 ⽬录和⽂件都能进⾏版本控制。真实的版本历史 Subversion中可以增加add、删除delete、复制copy和重命名rename⽆论是⽂件还是⽬录。所有的新加的⽂件都从⼀个新的、⼲净的版本开始。⾃动提交 ⼀个提交动作不是全部更新到了档案库中就是完全不更新。这允许开发⼈员以逻辑区间建⽴并提交变动以防⽌当部分提交成功时出现的问题。 … 2.3. 基本概念
Repository源代码库源代码统⼀存放的地⽅Checkout提取当你⼿上没有源代码的时候你需要从repository checkout⼀份Commit提交当你已经修改了代码你就需要Commit到repositoryUpdate (更新)当你已经Checkout了⼀份源代码 Update后就可以和Repository上的源代码同步
2.4. ⼯作流程
开始新⼀天的⼯作 1、从服务器下载项⽬组最新代码。Checkout 2、如果已经Checkout并且有⼈已Commit了代码你可以更新以获得最新代码。Update 3、进⼊⾃⼰的分⽀进⾏⼯作每隔⼀个⼩时向服务器⾃⼰的分⽀提交⼀次代码很多⼈都有这个习惯。因为有时候⾃⼰对代码改来改去最后⼜想还原到前⼀个⼩时的版本或者看看前⼀个⼩时⾃⼰修改了哪些代码就需要这样做了。Commit 4、下班时间快到了把⾃⼰的分⽀合并到服务器主分⽀上⼀天的⼯作完成并反映给服务器。Commit 注意如果两个程序员同时修改了同⼀个⽂件 SVN可以合并这两个程序员的改动实际上SVN管理源代码是以⾏为单位的就是说两个程序员只要不是修改了同⼀⾏程序SVN都会⾃动合并两种修改。如果是同⼀⾏SVN会提示⽂件Confict, 冲突需要⼿动确认。
2.5. ⽣命周期
2.5.1. 创建版本库
版本库相当于⼀个集中的空间⽤于存放开发者所有的⼯作成果。版本库不仅能存放⽂件还包括了每次修改的历史即每个⽂件的变动历史。 Create 操作是⽤来创建⼀个新的版本库。⼤多数情况下这个操作只会执⾏⼀次。当你创建⼀个新的版本库的时候你的版本控制系统会让你提供⼀些信息来标识版本库例如创建的位置和版本库的名字。
2.5.2. 检出
Checkout 操作是⽤来从版本库创建⼀个⼯作副本。⼯作副本是开发者私⼈的⼯作空间可以进⾏内容的修改然后提交到版本库中。
2.5.3. 更新
顾名思义update 操作是⽤来更新版本库的。这个操作将⼯作副本与版本库进⾏同步。由于版本库是由整个团队共⽤的当其他⼈提交了他们的改动之后你的⼯作副本就会过期。 让我们假设 Tom 和 Jerry 是⼀个项⽬的两个开发者。他们同时从版本库中检出了最新的版本并开始⼯作。此时⼯作副本是与版本库完全同步的。然后Jerry 很⾼效的完成了他的⼯作并提交了更改到版本库中。 此时 Tom 的⼯作副本就过期了。更新操作将会从版本库中拉取 Jerry 的最新改动并将 Tom 的⼯作副本进⾏更新。
2.5.4. 执⾏变更
当检出之后你就可以做很多操作来执⾏变更。编辑是最常⽤的操作。你可以编辑已存在的⽂件来例如进⾏⽂件的添加/删除操作。 你可以添加⽂件/⽬录。但是这些添加的⽂件⽬录不会⽴刻成为版本库的⼀部分⽽是被添加进待变更列表中直到执⾏了 commit 操作后才会成为版本库的⼀部分。 同样地你可以删除⽂件/⽬录。删除操作⽴刻将⽂件从⼯作副本中删除掉但该⽂件的实际删除只是被添加到了待变更列表中直到执⾏了 commit 操作后才会真正删除。 Rename 操作可以更改⽂件/⽬录的名字。移动操作⽤来将⽂件/⽬录从⼀处移动到版本库中的另⼀处。
2.5.5. 复查变化
当你检出⼯作副本或者更新⼯作副本后你的⼯作副本就跟版本库完全同步了。但是当你对⼯作副本进⾏⼀些修改之后你的⼯作副本会⽐版本库要新。在 commit 操作之前复查下你的修改是⼀个很好的习惯。 Status 操作列出了⼯作副本中所进⾏的变动。正如我们之前提到的你对⼯作副本的任何改动都会成为待变更列表的⼀部分。Status 操作就是⽤来查看这个待变更列表。 Status 操作只是提供了⼀个变动列表但并不提供变动的详细信息。你可以⽤ diff 操作来查看这些变动的详细信息。
2.5.6. 修复错误
我们来假设你对⼯作副本做了许多修改但是现在你不想要这些修改了这时候 revert 操作将会帮助你。 Revert 操作重置了对⼯作副本的修改。它可以重置⼀个或多个⽂件/⽬录。当然它也可以重置整个⼯作副本。在这种情况下revert 操作将会销毁待变更列表并将⼯作副本恢复到原始状态。
2.5.7. 解决冲突
合并的时候可能会发⽣冲突。Merge 操作会⾃动处理可以安全合并的东⻄。其它的会被当做冲突。例如“hello.c” ⽂件在⼀个分⽀上被修改在另⼀个分⽀上被删除了。这种情况就需要⼈为处理。Resolve 操作就是⽤来帮助⽤户找出冲突并告诉版本库如何处理这些冲突。
2.5.8. 提交更改
Commit 操作是⽤来将更改从⼯作副本到版本库。这个操作会修改版本库的内容其它开发者可以通过更新他们的⼯作副本来查看这些修改。 在提交之前你必须将⽂件/⽬录添加到待变更列表中。列表中记录了将会被提交的改动。当提交的时候我们通常会提供⼀个注释来说明为什么会进⾏这些改动。这个注释也会成为版本库历史记录的⼀部分。Commit 是⼀个原⼦操作也就是说要么完全提交成功要么失败回滚。⽤户不会看到成功提交⼀半的情况。
3. 安装配置
3.1. 下载
https://www.visualsvn.com/downloads/ 服务器 http://tortoisesvn.net/downloads.html 客户端 最后下载完成的安装包
3.2. 安装
3.2.1. 安装 VisualSVN Server
双击安装程序 VisualSVN-Server-4.2.1-x64.msi 勾选复选框选择同意然后选择 Next选择 Upgrade 选择默认配置选择 Next 设置服务器的安装路径、资源的存放⽬录及端⼝ 使⽤默认配置选择Next 如果出现这个弹窗选择 Ignore 忽略即可 等待安装安装完成后可勾选复选框然后选择 Finish 出现如下窗⼝则表示安装成功
3.2.2. 安装 TortoiseSVN
双击安装程序 TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi 选择 Next然后勾选 command line client tools选择 Next 设置TortoiseSVN的安装路径勾选 command line client tools 进⼊到TortoiseSVN软件使⽤协议界⾯直接选择 Install 进⾏安装 安装完成之后直接选择 Finish 即可 在任意空⽩地⽅右键出现如下内容则表示安装成功
3.3. 配置
说明服务器端需要提供IP、端⼝、帐号、密码供客户端使⽤。即有如下配置
3.3.1. 设置IP和端⼝
打开服务器点击 VisualSVN Server选择 Configure authentication options… 设置Server name 建议使⽤当前IP
Server name的值可以设置为1.127.0.0.1 只能本地⾃⼰访问2.电脑⽤户名只能本地⾃⼰访问3.当前IP能够拼通IP的⽤户均可访问
Server Port使⽤默认值即可
查看当前IP打开dos窗⼝WindowsR键输⼊ipconfig按回⻋3.3.2. 新建账号密码
右键左侧菜单 User选择 Create User 设置⽤户的账户和密码
3.3.3. 新建分组
选择 Group 右键选择 Create Group… 设置分组名称及为分组添加⽤户
4. SVN使⽤
4.1. 新建版本库
选择 Repositories 右键选择 Create New Repository… 选择默认设置选择下⼀步设置仓库名称 设置仓库⽬录 选择任意⼀个选项都可 设置仓库的访问权限这⾥设置所有svn⽤户都有读/写权限 仓库创建完成
4.2. 签⼊项⽬到SVNimport 拷⻉远程仓库的地址 选择任意项⽬右键选择 TortoiseSVN选择 import 将上⼀步拷⻉的仓库地址粘贴到地址栏 选择永久接受 输⼊⽤户账号和密码 导⼊成功 仓库右键选择刷新在服务器中看到的效果
4.3. 检索项⽬check out 复制要下载的项⽬的远程地址 在需要检索项⽬的⽬录中右键选择 SVN Checkout… 输⼊远程地址设置项⽬的存放位置 检索完成
4.4. 提交代码commit
新建⽂件右键选择 TortoiseSVN选择 Add将⽂件添加到版本库列表 再次点击⽂件右键会出现 SVN Commit… 提交成功
4.5. 更新代码update
如果当前资源不是最新版本则可在项⽬中空⽩地⽅右键选择 SVN Update 更新成功
4.6. 版本冲突问题
4.6.1. 版本冲突原因
假设A、B两个⽤户都在版本号为100的时候更新了kingtuns.txt这个⽂件A⽤户在修改完成之后提交kingtuns.txt到服务器这个时候提交成功这个时候kingtuns.txt⽂件的版本号已经变成101了。同时B⽤户在版本号为100的kingtuns.txt⽂件上作修改修改完成之后提交到服务器时由于不是在当前最新的101版本上作的修改所以导致提交失败。此时⽤户B去更新⽂件如果B⽤户和A⽤户修改了⽂件的同⼀⾏代码就会出现冲突
4.6.2. 版本冲突现象
冲突发⽣时subversion会在当前⼯作⽬录中保存所有的⽬标⽂件版本[上次更新版本、当前获取的版本(即别⼈提交的版本)、⾃⼰更新的版本、⽬标⽂件]。 假设⽂件名是kingtuns.txt 对应的⽂件名分别是 kingtuns.txt.r101 kingtuns.txt.r102 kingtuns.txt.mine kingtuns.txt 同时在⽬标⽂件中标记来⾃不同⽤户的更改。
4.6.3. 版本冲突解决
4.6.3.1. 场景
现在A、B两个⽤户都更新项⽬⽂件到本地。 ⽤户A
⽤户B
项⽬中的 hello.txt ⽂件原始内容为 A⽤户修改⽂件添加内容 “A⽤户修改内容” 完成后提交到服务器 B⽤户修改⽂件添加内容 “B⽤户修改内容” 完成后提交到服务器 B⽤户提交更新⾄服务器时提示如下 B⽤户将⽂件提交⾄服务器时提示版本过期⾸先应该从版本库更新版本然后去解决冲突冲突解决后要执⾏svn resolved解决然后在签⼊到版本库。在冲突解决之后需要使⽤svn resolved解决来告诉subversion冲突解决这样才能提交更新。
4.6.3.2. 解决冲突的三种选择
放弃⾃⼰的更新使⽤svn revert回滚然后提交。在这种⽅式下不需要使⽤svn resolved解决放弃⾃⼰的更新使⽤别⼈的更新。使⽤最新获取的版本覆盖⽬标⽂件执⾏resolved filename并提交(选择⽂件—右键—解决)。⼿动解决冲突发⽣时通过和其他⽤户沟通之后⼿动更新⽬标⽂件。然后执⾏resolved filename来解除冲突最后提交。
4.6.3.3. 解决冲突
在B⽤户当前⽬录下右键选择SVN Update执⾏“update”更新操作 B⽤户中的 Hello.txt ⽂件出现冲突 在冲突的⽂件上选中⽂件–右键菜单—TortoiseSVN—Edit conflicts解决冲突 打开编辑冲突的窗⼝
Theirs窗⼝为服务器上当前最新版本
Mine窗⼝为本地修改后的版本
Merged窗⼝为合并后的⽂件内容显示如果要使⽤服务器版本在Theirs窗⼝选中差异内容右键选择Use this text block使⽤这段⽂本块。 同理如果要使⽤本地版本在协商后在Mine窗⼝右键选择Use this text block使⽤这段⽂本 块。 修改完成后选择 “Mark as resolved”标记为解决然后选择Save保存⽂件关闭窗⼝即可 此时当前冲突已解决可再次选择 SVN Commit提交⽂件 注也可先不标记为解决直接保存⽂件后在B⽤户的冲突⽬录下选中⽂件—右键菜单— TortoiseSVN—Resolved解决。然后再提交⽂件。
4.6.3.4. 如何降低冲突解决的复杂度
当⽂档编辑完成后尽快提交频繁的提交/更新可以降低在冲突发⽣的概率以及发⽣时解决冲突的复杂度。在提交时写上明确的message⽅便以后查找⽤户更新的原因毕竟随着时间的推移对当初更新的原因有可能会遗忘养成良好的使⽤习惯使⽤SVN时每次都是先提交后更新。每天早上打开后⾸先要从版本库获取最新版本。每天下班前必须将已经编辑过的⽂档都提交到版本库。
5. Idea集成使⽤SVN
5.1. 配置SVN环境
File — Other Settings全局配置Settings是局部配置 — Version Control — Subversion 配置svn 找不到svn.exe⽂件TortoiseSVN的bin⽬录下⾯没有svn.exe 之所以没有是因为安装TortoiseSVN的时候没有勾选指定安装项添加command line client tools
5.2. 检索项⽬
选择 VCS — Checkout from Version Control — Subversion 添加远程仓库中项⽬的URL 点击添加的URL选择 Checkout 选择检索的项⽬的存放位置 选择Destination根据⾃⼰的偏好选择其他配置默认单击 OK 选择 1.8 Format点击 OK 已经check out⼀个项⽬是否要打开选择 Yes 选择 Add 此时项⽬就可以与远程仓库关联
5.3. 提交代码
选择 VCS — Commit… 选择需要提交的⽂件填写提交信息选择 Commit 提交成功后会在Idea最下⾯显示提交状态 注项⽬提交前最好先更新然后再提交。
5.4. 更新代码
选择 VCS — Update Project… 默认即可直接选择 OK 更新成功的提示信息
5.5. 导⼊项⽬
选择 VCS — Import into Version Control — Import into Subversion 选择 “” 添加项⽬导⼊的地址可⼿动添加⼀个⽂件夹项⽬中的⽂件会放置在该⽂件夹中⽂件名⾃定义 选择要导⼊的路径选择 Import 选择要导⼊的项⽬点击 OK 检查导⼊的路径填写导⼊信息选择 OK
5.6. 版本冲突问题
如果未更新就提交资源有其他⽤户也提交过资源则提交失败 此时执⾏更新操作将其他⼈提交过的资源更新到本地会提示冲突 通常选择合并再选择需要保留的代码选择好之后选择 Apply 提示更新成功 再次选择提交成功解决冲突