梓潼移动网站建设,百度云 做网站,工商局网站如何做网登,网页托管网站Tortoise SVN 版本控制常用操作知识 Posted on 2010-11-26 23:07 szh114 阅读(5897) 评论(0) 编辑 收藏 今天老大跑过来问我如何把SVN服务器上的当前版本回退到某一个版本上去#xff0c;我没回答上来#xff0c;很失败#xff0c;所以现在整理一下Tortoise SVN的操作知识我没回答上来很失败所以现在整理一下Tortoise SVN的操作知识当然所有内容都来自于网络不多废话 TortoiseSVN用户指南中文版http://www.svn8.com/shouce/tortoisesvn1.5.8/ 0:SVN的版本号是怎么回事 svn commit 操作可以作为一个原子事务操作发布任意数量文件和目录的修改。在你的工作副本中你可以改变文件内容创建、删除、改名和复制文件和目录然后作为一个整体提交。 在版本库中每次提交被当作一次原子事务操作: 要么所有的改变发生要么都不发生Subversion 努力保持原子性以应对程序错误、系统错误、网络问题和其他用户行为。每当版本库接受了一个提交文件系统进入了一个新的状态叫做版本每个版本被赋予一个独一无二的自然数一个比一个大初始修订号是 0只创建了一个空目录没有任何内容。 可以形象的把版本库看作一系列树想象有一组版本号从 0 开始从左到右每一个修订号有一个目录树挂在它下面每一个树好像是一次提交后的版本库“快照”。 不像其它版本控制系统Subversion 的版本号是针对整个目录树的而不是单个文件。每一个版本号代表了一次提交后版本库整个目录树的特定状态另一种理解是版本 N 代表版本库已经经过了 N 次提交。当 Subversion 用户讨论“foo.c的版本 5”时他们的实际意思是“在版本 5 时的foo.c”。需要注意的是一个文件的版本 N 和 M 并不表示它必定不同。 需要特别注意的是工作副本并不一定对应版本库中的单一版本他们可能包含多个版本的文件。举个例子你从版本库检出一个工作副本最新的版本是 4: calc/Makefile:4 integer.c:4 button.c:4 此刻工作目录与版本库的版本 4 完全对应然而你修改了 button.c 并且提交之后假设没有别的提交出现你的提交会在版本库建立版本 5你的工作副本会是这个样子的: calc/Makefile:4 integer.c:4 button.c:5 假设此刻Sally 提交了对 integer.c 的修改建立修订版本 6如果你使用 svn update 来更新你的工作副本你会看到: calc/Makefile:6 integer.c:6 button.c:6 Sally 对 integer.c 的改变会出现在你的工作副本你对 button.c 的改变还在在这个例子里Makefile 在 4、5、6 版本都是一样的但是 Subversion 会把 Makefile 的版本设为 6 来表明它是最新的所以你在工作副本顶级目录作一次干净的更新会使所有内容对应版本库的同一修订版本。 1如何查看SVN上当前代码库的最新版本号是多少 打开右键菜单中的show log然后看到一系列版本更新历史最上面的那一行即是最新版本号所谓的head revision。 2如何查看本地SVN管理的代码库的当前版本号是多少 打开右键菜单中的show log然后看到一系列版本更新历史显示为粗体的那一行即你本地当前的版本。 3如何将本地代码库的版本回退到某一个旧版本 打开右键菜单中的update to revision 在弹出的对话框中进行版本号指定即可如果选择head revision则更新为最新版本。 4如何将服务器上的版本回退到某一个旧版本 将服务器上的版本回退到某一个旧版本我还没找到什么比较好的办法现在的笨办法是先更一个旧版本到本地然后没办法直接COMMIT上去得先把整个文件夹下面的所有.SVN文件全部清除掉然后覆盖本地一个版本再进行COMMIT。 5TortoiseSVN的export 和check out 有什么区别 、新建一个空的文件夹右键点击它可以看到TortoiseSVN菜单以及上面的SVN Checkout。 、不用管这个Checkout我们选择TortoiseSVN菜单下的Export...接着它会让你输入url。 、比如输入【迷宫探宝】的SVN地址是http://game-rts-framework.googlecode.com/svn/trunk/ 、其他选项不需要更改Omit externals不要勾选HEAD Revision选中表示最新的代码版本接着点击OK即可将代码导出到这个目录中。 而check out 意思 签出虽然和Export的效果一样是把代码从服务器下载到本地但是Checkout有验证的功能Checkout到某处的代码将会被TortoiseSVN监视里面的文件可以享受各种SVN的服务。 6每次commit 代码需要注意哪些问题 如果你更新了目录中的文件提交代码需要用到commit功能commit的功能不仅仅是上传他会和服务器上面的文件进行对比假如你更新了某个文件而服务器上面也有人更新了这个文件并且是在你checkout之后做的更新那么它会尝试将你的更新和他人的更新进行融合merge假如自动merge不成功那么报告conflict你必须自己来手动merge也就是把你的更新和别人的更新无冲突的写在一起。 commit的时候最好填写Log信息这样保证别人可以看到你的更新究竟做了写什么。这就相当于上传文件并且说明自己做了那些修改多人合作的时候log非常重要。 TortoiseSVN的commit只会上传原先checkout然后又被修改了的文件假如你新加入了某些文件需要右键点击文件选择Add然后文件上面会出现一个加号在下次commit的时候它就会被upload并且被标记为绿色对勾。没有绿色对勾的文件不会被commit。 7本地那些花花绿绿的图标都分别代表什么意思 一个新检出的工作副本使用绿色的对勾做重载。表示 Subversion 状态正常. 在你开始编辑一个文件后状态就变成了已修改而图标重载变成了红色感叹号。通过这种方式你可以很容易地看出哪些文件从你上次更新工作副本后被修改过需要被提交。 如果在更新的过程中出现了冲突图标会变成黄色感叹号。 如果你给一个文件设置了svn:needs-lock属性Subversion 会让此文件只读直到你获得文件锁。具有这个重载图标的文件来表示你必须在编辑之前先得到锁。 如果你拥有了一个文件的锁并且 Subversion 状态是正常这个重载图标就提醒你如果不使用该文件的话应该释放锁允许别人提交对该文件的修改。 这个图标表示当前文件夹下的某些文件或文件夹已经被调度从版本控制中删除或是该文件夹下某个受版本控制的文件丢失了。 加号告诉你有一个文件或目录已经被调度加入版本控制。但还需要COMMIT一下才行。 This icon shows files and folders which are not under version control, but have not been ignored. This overlay is optional. 这个标志表示文件或文件夹不在版本控制之下。 8:SVN检出代码的检出深度指的是什么 你可以选择要检出的深度它允许你指定子目录递归的深度。如果你只需要大目录中的几个子条目你可以只检出最高层目录然后递归的更新选择的目录。 全递归 检出完整的目录树包含所有的文件或子目录。 直接节点包含目录。 检出目录包含其中的文件或子目录但是不递归展开子目录。 文件子节电 检出指定目录包含所有文件但是不检出任何子目录。 仅此项。 只检出目录。不包含其中的文件或子目录。 工作副本 保持工作副本指定的深度。此选项不用于检出对话框但它是其它所有含有深度配置对话框的默认配置。 9clean up是什么东东 也许由于服务器问题一个Subversion指令不能成功地完成你的工作副本因此被滞留在一个不一致的状态。 那样的话你需要在该目录上使用TortoiseSVN → 清理命令。在工作副本的根目录使用它是一个好主意。 clean up还有一个用处就是如果一个文件的日期改变了但是它的内容没有变 SVN不能知道倒底是不是发生了变化除非跟旧文档做一个逐字节的比较。如果你有很多文件是这种状态那就导致更新操作非常慢系统响应也会受到影响。这时候运行一个clean up就能够使那些文件的状态变为正常使得以后的检查速度变好起来。 一个好习惯如果项目中引用了其他的第三方的程序集比如EnterpriseLibrary、FCKEditor等这时候不要简单从他们的安装位置引用而是在你的解决方案下添加一个Library的目录把需要的程序集复制到这里然后从Library目录引用这样有什么好处自己想一想吧