问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

svn的使用的全部流程

发布网友 发布时间:2024-07-03 18:58

我来回答

1个回答

热心网友 时间:2024-07-29 03:24

使用命令行模式访问SVN服务器检出
①首先进入自己的工作目录,例如:D:DevWorkSpaceSVNSpace
②运行svn checkout命令,命令格式如下
格式
③工作副本
运行checkout命令后进入MyERP目录,看到里面什么都没有。真的什么都没有吗?不是的。检出命令会在这一目录下创建一个隐藏目录.svn,用来保存与服务器交互的重要信息,其中包括从服务器端取回的最新版本信息、文件状态、更新时间等。SVN正是以此为依据判断当前目录中文件的状态。所以这个隐藏目录
千万不要删除或修改其中的内容
——完全无视它的存在吧。如果服务器端保存的文件可以视为一个“正本”,那么每个开发人员检出到本地目录的文件可以视为“副本”,通常称为工作副本。
提交
①进入D:DevWorkSpaceSVNSpaceMyERP目录
②创建一个文件test.txt
③执行svn commit命令,运行结果是
说明一个文件必须纳入版本控制才可以提交到服务器端。
④执行svn add命令,将test.txt纳入版本控制
⑤再次执行svn commit命令
此时要求附加日志信息
⑥使用-m参数附加日志信息
原因是没有权限
⑦暂时先开启匿名访问权限
进入对应的版本库目录下的conf目录:D:DevRepositorySubversionERPconf
打开svnserve.conf
将第19行的# anon-access = read改为anon-access = write,也就是去掉“# ”,将read改为write。注意前面不要留空格,一定要顶格写。
不需要重启SVN服务,甚至命令行窗口都不需要重新打开。
⑧重新执行提交命令
说明提交成功了。
⑨其实svn commit命令最后可以不指定具体文件,此时表示提交当前工作副本中的所有修改。
更新
①将服务器端文件检出到一个新的目录,模拟另外一个终端
②回到MyERP目录,对test.txt文件修改后提交。
③进入TomERP目录
④执行svn update命令
这样我们就可以在TomERP目录下看到MyERP目录下提交的修改。
⑤思考:更新和检出的相同点和不同点分别是什么?
工作副本中文件的几种状态
①没有修改,现行版本
本档案在工作目录中没有被修改,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,即当前工作副本的版本和服务器端最新版本是一致的。对它执行svn commit和svn update都不会发生任何事。
②本地修改, 现行版本
这个文件被修改过,但这个修改还没有提交到服务器,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,所以当前工作副本的版本和服务器端最新版本仍然是一致的。由于有尚未送交回去的本地修改,所以对它的 svn commit会成功提交你的修改,而 svn update 则不会作任何事。
③没有修改,过时版本
这个文件没有修改,但是版本库中有其他终端提交的修改。此时当前工作副本的版本比服务器端的版本落后了,我们称之为“过时”。对当前文件的 svn commit 不会发生任何事,而 svn update 会让工作目录中的文件更新至最新版本。
④本地修改,过时版本
服务器端存在没有更新到本地的修改,导致当前版本过时。如果这个文件在本地有未提交的修改,则无法提交,对它执行svn commit 会产生“out-of-date”错误。
此时应该先尝试更新本地文件。更新时SVN会尝试将服务器端的更新与本地文件进行合并,合并的结果有两种可能:一个是服务器端和本地修改位于文件的不同位置,合并成功;另一个是服务器端的修改正好和本地修改位于同一个位置,发生冲突。
将工作副本整体回复到某一个历史版本
①假设当前版本为12,想要取回版本9
②执行svn update命令
③这里需要注意的是,SVN版本号并不是对某一个文件进行编号,而是对应整个版本库总体状态的一个“快照”,取回某个版本不是取回版本号对应的某个文件,而是整个项目的一个快照。
4.6 将某个文件恢复到某个版本中的状态,同时不涉及其他文件
①假设想要取回pp.txt在版本10时的状态
②执行svn update命令
③综合这两个例子,我们可以认为版本号和文件名构成了一个横纵坐标系,通过文件路径和版本号定位其在某一个时刻的状态。
单一版本库权限配置匿名访问:前已述及授权访问
①要设置授权访问就需要创建用户,并为用户设定权限
②打开授权访问的配置
打开D:DevRepositorySubversionERPconfsvnserve.conf
将第19行anon-access = write注释掉:# anon-access = write
表明该版本库不接受匿名访问
将第20行# auth-access = write注释打开:auth-access = write
表明该版本库使用授权访问
将第27行注释打开:password-db = passwd
表明使用同目录下的passwd文件保存用户信息
将第36行注释打开:authz-db = authz
表明使用同目录下的authz文件保存权限信息
打开passwd文件创建用户
打开authz文件:#后面注释的是例子
1创建用户组
2指定路径,给用户和用户组授权
3权限的继承性:父目录设置的权限,对子目录同样有效——除非子目录进行了更为具体的设定
这个例子表示当前版本库下的subDir目录只有userOther有读写权限,其它用户无任何权限
多版本库共享配置在版本库根目录D:DevRepositorySubversion下创建commConf目录将未修改的authz和passwd文件拷贝到commConf目录下修改需要设置权限的版本库的svnserve.conf文件
①password-db = ../../commConf/passwd
②authz-db = ../../commConf/authz
6.4 在password中创建用户
在authz中针对不同版本库为不同用户授予权限
#
# @harry_and_sally = rw
# * = r
userERP = rw
* =
userOA = rw
* =
userCRM = rw
* =
查看工作副本信息使用svn info命令执行效果如下
7.3 对某一个文件使用svn info命令
查看目录或文件日志信息使用svn log命令
在Eclipse中安装SVN客户端插件Eclipse插件应用市场
在Eclipse中访问Eclipse Marketplace Client可以搜索Subversion,下载插件,按提示安装即可。
使用压缩包
如果不能联网可以使用下载好的插件压缩包eclipse_svn_site-1.10.5.zip,这个压缩包是从http://subclipse.tigris.org/网站(subclipse是这款Eclipse插件的名称)上下载的。安装方法是:
①解压eclipse_svn_site-1.10.5.zip中的features和plugins这两个目录
②将features和plugins复制到Eclipse安装目录/dropins/eclipse_svn_site-1.10.5下
③重启Eclipse
④进入Eclipse依次打开Window→Preferences→Team→SVN,看到如下界面即说明SVN插件安装成功
创建资源库位置
①切换到透视图SVN资源库研究
②创建资源库位置
此时可以查看版本库中的文件及目录结构
检出
①检出分两种情况
1从服务器端获取到的是一些零散的文件,不能作为项目检出
此时会弹出一个新建项目向导,之所以会这样是因为我们需要创建一个项目来保存从服务器端取回的文件
2从服务器端获取到的是一个完整的项目,例如
此时必须作为项目检出
项目从服务器检出后,会成为一个工作副本,根目录下会自动创建.svn隐藏目录
提交
①新创建文件后,文件图标上会以“?”标识,表示该文件尚未纳入版本控制
②在新创建的文件上点右键→Team→添加至版本控制,这样文件图标上会显示“+”,表示当前文件已纳入版本控制,但还未提交至服务器。
③在要提交的文件上点右键→Team→提交...会提交文件,在弹出的对话框中可以不填写日志。文件提交后,图标会变为“金色的圆柱体”表示当前文件的版本和服务器端一致。
④文件修改后图标会变为“*”,表示当前文件或目录包含未提交的修改。
更新
①更新整个项目时可以在项目上点右键→Team→更新
②更新某个具体的文件时,可以在文件上点右键→Team→更新
共享项目
①在Eclipse中创建的新项目想要发布到SVN服务器端,可以通过“共享”项目实现
②在项目上点右键→Team→Share Project...→选择一种版本控制工具
选择一个资源库位置
切换到Team Synchronizing透视图,选择项目中要提交的内容,通常是项目中的全部内容
恢复历史版本
①在需要回复的文件上点右键→Team→显示资源历史记录→得到如下界面
②选择某一个历史记录点右键→获取内容。文件就会恢复到指定版本的状态,同时图标变为“*”。
③获取历史记录时,如果出现如下错误提示
可以通过将对应版本库中的svnserve.conf文件中的anon-access设置为none解决。
解决冲突
①什么情况下会发生冲突
1两个开发人员,Harry和Sally,分别从服务器端下载了文件A。
2Harry修改之后,A变成了A’,Sally修改之后,A变成了A’’。
3Harry先一步提交,使服务器端文件的版本也变成了A’
4Sally本地的文件A’’已经过时了,此时她已无法提交文件,服务器会要求她先进行一次更新操作。
5此时Sally的更新操作有两种可能
(1)Sally所做的修改与Harry不是同一个位置,更新操作尝试合并文件成功。
(2)Sally所做的修改与Harry恰好是同一个位置,更新操作尝试合并文件失败,发生冲突。
6发生冲突后,本地工作副本会发生如下变化
(1)文件A中的内容发生如下改变
public
static
void
main(String
args) {
System.out.println("Edit By Command!");
System.out.println("Edit By Command!");
.mine
System.out.println("Edit By Eclipse!");
=======
System.out.println("Edit By Command!New Edit");
.r14
System.out.println("Edit By Command!");
System.out.println("Edit By Command!");
}
其中,从 .mine到=======之间是发生冲突时本地副本的内容。从=======到 .r14是发生冲突时服务器端的最新内容。注意这里r后面的数字是发生冲突时服务器端的版本号,有可能是任何整数值,r14只是一个例子。
同时文件图标变成一个“黄色的!”。
(2)与冲突文件同目录下新增文件,扩展名为.mine,其内容是发生冲突时本地副本的文件内容。
(3)与冲突文件同目录下新增文件,扩展名为.r小版本号,例如MyCRM.java.r13,其内容是冲突发生之前,服务器端的文件内容,可以作为解决冲突的参照。
(4)与冲突文件同目录下新增文件,扩展名为.r大版本号,例如MyCRM.java.r14,其内容是冲突发生时,服务器端的文件内容。
②解决冲突
(1)在冲突文件上点右键→Team→编辑冲突...→出现如下界面
以对比的方式将本地内容与冲突内容显示出来,其中左侧为本地内容,右侧为冲突内容。其中本地内容是可以修改的。
(2)根据需要和实际情况将本地内容更正——这个过程很可能需要牵涉冲突的两位开发人员进行必要的沟通——机器与程序目前还不能完全取代人工智能。更正后文件图标会变成一个“四角形”,同时冲突文件内的 .mine、=======以及 .r14等标记都会被去掉。
(3)在冲突文件上点右键→Team→标记为解决
此时.mine文件和.r版本号文件都会被自动删除,冲突文件的图标变为“*”,表示可以提交。
(4)提交文件,文件图标变为“金色圆柱体”。
使用SVN独立客户端:TortoiseSVNTortoiseSVN简介
TortoiseSVN是一个Windows下的版本控制系统Apache? Subversion的客户端工具。
TortoiseSVN的优良特性
①外壳集成
TortoiseSVN 无缝地整合进 Windows 的外壳(例如资源管理器)。
②重载图标
每个版本控制的文件和目录的状态使用小的重载图标表示,可以让你立刻看出工作副本的状态。
③图形用户界面
当你列出文件或文件夹的更改时,你可以点击任意版本查看提交注释。也可以看到更改过的文件列表 - 只要双击文件就可以查看更改内容。
提交对话框列出了本次提交将要包括的条目,每一个条目有一个复选框,所以你可以选择包括哪些条目。未版本控制的文件也会被列出,以防你忘记添加新文件。
④Subversion 命令的简便访问
所有的 Subversion 命令存在于资源管理器的右键菜单,TortoiseSVN 在那里添加子菜单。
TortoiseSVN 的历史
2002年,Tim Kemp 发现 Subversion 是一个非常好的版本管理系统,但是缺乏一个好的图形界面客户端程序。做一个与 Windows 外壳整合的 Subversion 客户端程序的想法是受一个叫 TortoiseCVS 的 CVS客户端程序所启发的。Tim 研究了 TortoiseCVS 的源码并以此为 TortoiseSVN 的基础。他开始运作这个项目,注册了域名 tortoisesvn.org 并且将源码放在了网上。
就在同时, Stefan Küng 正在寻找一个好用的并且免费的版本控制系统。他找到了 Subversion 和TortoiseSVN 的源码。因为 TortoiseSVN 还不能使用,他加入了项目并开始编码。很快,他就重写了现有的大部分代码并开始添加命令和功能,到了某个时段,最初的代码已经都被改写了。
由于 Subversion 变得越来越稳定,它吸引了越来越多用户,他们同时也开始使用 TortoiseSVN 作为Subversion 的客户端程序。用户数量快速增长(并且每天还在增长)。这时候,Lübbe Onken 提出帮助项目提供精美的图标和 TortoiseSVN 的标志。现在他负责照看网站和管理多语言翻译。
TortoiseSVN安装
①下载安装程序:http://tortoisesvn.net/downloads.html
Win32位:TortoiseSVN-1.8.7.25475-win32-svn-1.8.9.msi
Win64位:TortoiseSVN-1.8.7.25475-x64-svn-1.8.9.msi
Win32位语言包:LanguagePack_1.8.7.25475-win32-zh_CN.msi
Win64位语言包:LanguagePack_1.8.7.25475-x64-zh_CN.msi
②以Win32位为例
中文语言包安装
在任意目录下点右键→TortoiseSVN→settings
检出
10.5.1 创建一个目录用来存放检出得到的文件,例如MyCRM
10.5.2 进入目录MyCRM,点右键
10.5.3 可以看到检出得到的文件
此时文件图标上没有任何标识。可能你会想到通过重启电脑的方式解决这一问题——其实不用这么麻烦。文件图标是受外壳程序控制的,我们只需要重启外壳程序——explorer.exe就可以了。打开任务管理器,选中explorer.exe进程,结束进程,然后新建进程explorer.exe就可以了。
如果一切顺利的话,你会看到文件图标变成了这样:
TortoiseSVN图标含义
●图标1:一个新检出的工作副本使用绿色的对勾做重载。表示Subversion状态正常。
●图标2:在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作副本后被修改过,需要被提交。
●图标3:如果在更新的过程中出现了冲突,图标会变成黄色感叹号。
●图标4:如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。具有这个重载图标的文件来表示你必须在编辑之前先得到锁。
●图标5:如果你拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。
●图标6:这个图标表示当前文件夹下的某些文件或文件夹已经被调度从版本控制中删除,或是该文件夹下某个受版本控制的文件丢失了。
●图标7:加号告诉你有一个文件或目录已经被调度加入版本控制。
●图标8:横条告诉你有一个文件或目录被版本控制系统所忽略。这个图标重载是可选的。
●图标9:这个图标说明文件和目录未被版本控制,但是也没有被忽略。这个图标重载是可选的。
10.6 纳入版本控制
①新建文件abc.txt
②在文件上点右键
③添加后文件图标发生变化
10.7 提交
①使用TortoiseSVN可以提交具体某一个文件,或某一个目录下的所有改变。方法就是在想要提交的项目下点右键,然后SVN Commit...,就可以看到如下界面
②日志内容如果不填,TortoiseSVN会提交一个空字符串作为日志信息。
③提交后显示信息如下
④没有纳入版本控制的文件默认是不在提交范围内的,直接在新创建的文件上点右键只能看到add操作的选项,如前所述。但在新创建的文件所在目录点右键选择SVN commit...,可以看到如下界面
将文件newFile.txt选中
同样可以提交文件,TortoiseSVN会帮我们自动将newFile.txt纳入版本控制
10.8 更新
在要更新的文件或目录上点右键→SVN Update
10.9 回复历史版本
①查看历史版本内容
首先需要把对应版本库的匿名访问权限设置为none:anon-access = none
在要查看历史版本的文件上点右键→TortoiseSVN→Show log
在感兴趣的历史版本上点右键,可以与当前工作副本进行比较,或直接打开。
②在要回复历史版本的文件上点右键→Update to revision
填上想要回到的版本即可
10.10 解决冲突
①文件发生冲突时的状态和在Eclipse中一样,这里就不赘述了。
②在冲突的文件上点右键→Edit Conflicts
③有“叹号”的行是发生冲突的行
④在冲突行点右键
可以选择四种操作:
使用我的
使用他们的
把我的放在他们的前面
把他们的放在我的前面
⑤在冲突解决后,直接保存——这时TortoiseSVN自动弹出如下确认界面
⑥文件变为红色叹号标志,自动生成的三个文件被删除。提交修改即可
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
锅炉切圆直径调整 为什么我打开excel后是灰色的? 有没有什么值得推荐的投资港股的QDII基金? - 知乎 win10电脑屏幕亮度调不了怎么办 考焊工证具体怎么操作 广汽传祺是丰田技术吗 广汽传祺与广汽丰田有关系吗 怎样才能让不愿写作业的孩子听话? 上初中不写作业不想学习的孩子应该如何管教? 出生在2020年农历七月十二日的宝宝怎么取名有内涵? 多哈回合谈判各方呼吁 ...没有签定劳动合同,因工伤没有及时回报公司,公司以欺骗的理由把我开除... 没签劳动合同受劳动法保护么 企业没有签订劳动合同违法吗? 未签订劳动合同的处罚有哪些 男属猪和什么属相合财 属猪与属鸡合财吗 鼠和什么合财? win10系统怎么更改语音 著作权的侵犯包括哪些责任 侵权责任的承担有几种方式? 华为Mate 60 Pro是否将成为华为回归手机市场的重要推动力? 潍坊国丰纳米材料有限公司主要产品 apparent powder density的意思 影响松装密度的因素关于松装密度 apparent density的意思 在韩国没有别的联系方式,手机拒接,短信拒接,怎么才能给对方发信息_百度... 韩国的联系方式是什么啊【不要说是手机】 在广东中山怎样才能找到韩国人的联系方式,或者中山韩国商会之类的那些... 怎么联系一韩国邮寄客服? loropiana是什么牌子? 移动通信的应用系统包括 linux svn命令 乌鲁木齐市沙依巴克区新医路邮编多少? 乌市新医路立交桥属于哪个区管 乌鲁木齐市福建酒店的确切位置 陈奕迅的《不知所谓》专辑风格与演唱会有何关联? 做心脏造影前注意事项 植物的有性繁殖一般是由 产生的生殖细胞 空白处应该填什么? 污水处理费免税那建设期进项怎么处理 加入高德网约车司机 在工厂上班社保个人交多少公司交多少 如果不交了个人的钱能取出来... 信阳房源超市是什么意思? 如何设置PPT中字体格式如何设置ppt中的字体 请问图中电视墙弧形造型里面类似于砖的是用的什么材料,它的施工工艺... 我能自我控制放大和缩小自己的瞳孔,不知有什么作用 如何用加密路线软件加密通话记录? 电报视频通话的加密功能如何实现? 外商多的标签展会是哪个? 通话记录如何加密? 北京征地拆迁的律所哪家好? ...比如说被别人打了一拳脸部有点变形,那么影响眼睛和脸部恢复原状的...