SVN技巧 淡淡的烟草味﹌ 2024-04-19 14:16 18阅读 0赞 在项目开发的过程中我们很可能会遇到这种情况:我们手头开发的项目可能要用到其他项目的内容。 最容易想到的办法是从其他项目的版本库里取出那部分内容,拷贝并添加到本项目的版本库中。但如果我们要令其他项目拿过来的那部分内容保持最新,就是一个非常繁琐的工作了。 有没有高效的办法 如果本项目的版本库自动取得被引用的外部项目的更新,例如每次”svn update”或者”svn checkout”都可以去外部项目的版本库取得最新的内容,那实在是非常方便。我们可以通过Subversion的外部定义功能来实现这个目的。外部定义是一组本地文件路径和URL的映射,使svn可以取得外部版本库的文件到本地路径。 主要要用到以下几个svn指令 svn propset svn:externals PROJECT_NAME svn propedit svn:externals PROJECT_NAME svn propget svn:externals PROJECT_NAME 前两个指令都可以用来设置对应PROJECT\_NAME的svn:externals属性,一般推荐用第二个。svn:externals的属性列表指定项目中模块的相对路径,版本信息和对应的URL。 例如: third-party/foo svn://example.com/repos/foo third-party/bar -r 1234 svn://example.com/repos/bar Subversion 1.5及以上的版本也支持以下的格式: http://example.com/foo third-party/foo -r 1234 http://example.com/bar third-party/bar 第三个指令则可以查询项目的外部定义的属性列表。 > 外部定义 > > 有时候创建一个由多个不同检出得到的工作拷贝是非常有用的,举个例子,你或许希望不同的子目录来自不同的版本库位置,或者是不同的版本库。你可以手工设置这样一个工作拷贝— 使用svn checkout来创建这种你需要的嵌套的工作拷贝结构。但是如果这个结构对所有的用户是很重要的,每个用户需要执行同样的检出操作。 > > 很幸运, Subversion提供了外部定义的支持,一个外部定义是一个本地路经到URL的影射—也有可能一个特定的修订版本—一些版本化的资源。在Subversion你可以使用svn:externals属性来定义外部定义,你可以用svn propset或svn propedit(见“为什么需要属性?”一节)创建和修改这个属性。它可以设置到任何版本化的路经,它的值是一个多行的子目录和完全有效的Subversion版本库URL的列表(相对于设置属性的版本化目录)。 > > $ svn propget svn:externals calc > third-party/sounds [http://sounds.red-bean.com/repos][http_sounds.red-bean.com_repos] > third-party/skins [http://skins.red-bean.com/repositories/skinproj][http_skins.red-bean.com_repositories_skinproj] > third-party/skins/toolkit -r21 [http://svn.red-bean.com/repos/skin-maker][http_svn.red-bean.com_repos_skin-maker] > > **svn:externals的方便之处是这个属性设置到版本化的路径后,任何人可以从那个目录取出一个工作拷贝,同样得到外部定义的好处。**换句话说, 一旦一个人努力来定义这些嵌套的工作拷贝检出,其他任何人不需要再麻烦了—Subversion会在原先的工作拷贝检出之后,也会检出外部工作拷贝。 > 注意前一个外部定义实例,当有人取出了一个calc目录的工作拷贝,Subversion会继续来取出外部定义的项目。 > > $ svn checkout [http://svn.example.com/repos/calc][http_svn.example.com_repos_calc] > A calc > A calc/Makefile > A calc/integer.c > A calc/button.c > Checked out revision 148. > > Fetching external item into calc/third-party/sounds > A calc/third-party/sounds/ding.ogg > A calc/third-party/sounds/dong.ogg > A calc/third-party/sounds/clang.ogg > … > A calc/third-party/sounds/bang.ogg > A calc/third-party/sounds/twang.ogg > Checked out revision 14. > > Fetching external item into calc/third-party/skins > … svn忽略目录 已经在版本控制的目录或者文件是不能加入svn:ignore,加入了也无效,如果要加入,必须先删除然后commit,然后再加入svn:ignore svn propset svn:ignore "\*" log/ svn propset svn:ignore "\*" tmp/ svn propset svn:ignore "\*" cache/ svn propset svn:ignore "\*" sessions/ svn全局忽略 ,修改目录下 .subversion/config文件,取消global-ignroes的注释 global-ignores = CVS .DS\_Store Thumbs.db WS\_FTP.LOG \_notes \_vti\_\* \*.LCK 最近遇到一个需求,就是把一些文件从svn版本库中移除而保留现有文件不变。比如数据库配置文件,每个程序员的本地配置不同,如果一更新提交上去就乱套了。用svn del会从版本库中删除但是文件也被删了, 这样会造成一更新所有人的文件都被删除掉。 用带参数--keep-local可以保留本地副本, 注意别人的副本如果没有更新过也会被删除掉 svn del --keep-local config.php delete (del, remove, rm): 从版本库中删除文件和目录。 用法: 1、delete PATH... 2、delete URL... 1、每个 PATH 指定的项目会被调度到下次提交时从版本库删除。除非给出--keep-local 参数,工作副本中没有提交的文件和目录会被立即删除。 如果 PATH 是未版本控制或者已修改的项目,或者包含这些项目,那么仅当给出 --force 参数时这些项目才会被删除。 2、每个 UR L指定的项目会通过立即提交从版本库中删除。 ## SVN实现在更新本地版本库时忽略指定目录 ## 1. checkout project: 1. \# svn co http://svn\_url/project 如果项目较大,你可以随时终止,但你要保证本地已经将tags目录取下来了(哪怕是只取了其中的一个文件也行),确保你要排除的那个目录(tags)已经在你working copy的version control下了。 2. 运行以下命令将tags以及branches目录排除在svn up列表: \# svn update --set-depth=exclude tags branches D tags D branches 选项后面可以跟多个目录,这样,就在你当前的working copy中成功的将tags和branches目录排除掉了,在你下一次的update中,就不会去理会这两个目录了,但同时有保证了你的project是在version control下的,因此不需要每次都逐个进入目录进行svn up了。 转载于:https://my.oschina.net/alphajay/blog/75767 [http_sounds.red-bean.com_repos]: http://sounds.red-bean.com/repos [http_skins.red-bean.com_repositories_skinproj]: http://skins.red-bean.com/repositories/skinproj [http_svn.red-bean.com_repos_skin-maker]: http://svn.red-bean.com/repos/skin-maker [http_svn.example.com_repos_calc]: http://svn.example.com/repos/calc
相关 SVN技巧 项目开发的过程中我们很可能会遇到这种情况:我们手头开发的项目可能要用到其他项目的内容。 最容易想到的办法是从其他项目的版本库里取出那部分内容,拷贝并添加到本项目的版本库... 淡淡的烟草味﹌/ 2024年04月19日 14:16/ 0 赞/ 19 阅读
相关 svn 转自:http://blog.csdn.net/daobantutu/article/details/60467185 搭建SVN服务器详细教程 本教程会从最基本的 小咪咪/ 2022年05月29日 07:47/ 0 赞/ 175 阅读
相关 svn 以下文章转自:http://developer.51cto.com/art/201005/201764.htm 1、在本文的操作过程中如果遇到相关问题。比如命令找不 旧城等待,/ 2022年05月29日 02:46/ 0 赞/ 173 阅读
相关 【SVN】SVN初识 <table> <tbody> <tr> <td><font> SVN 介绍</font></td> </tr> </tbody> </table 港控/mmm°/ 2022年05月16日 05:26/ 0 赞/ 211 阅读
相关 SVN sudo apt-get install subversion libapache2-svn sudo svnadmin create /svn $ s 骑猪看日落/ 2022年05月10日 15:40/ 0 赞/ 154 阅读
相关 SVN SVN简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控 た 入场券/ 2022年04月23日 22:24/ 0 赞/ 196 阅读
相关 SVN 一、准备工作 1. Subversion服务器程序 先到官方网站上下载最新版本,\[url\]http://subversion.tigris.org/se 水深无声/ 2022年04月14日 04:21/ 0 赞/ 195 阅读
相关 svn apache产品,下载https://www.visualsvn.com/downloads/ ![1382212-20190411223038268-2119141780 曾经终败给现在/ 2022年01月06日 04:41/ 0 赞/ 262 阅读
相关 svn 安装svn 1. 客户端 [客户端][Link 1] ![1250855-20190722160356912-317256987.png][] [服务器端] 旧城等待,/ 2021年11月09日 22:06/ 0 赞/ 275 阅读
相关 svn 1.装包配置conf目录下authz passwd svnserve.conf三个配置文件,配置规则登录用户名和权限。 2.svn import . file:///var/ 女爷i/ 2021年10月30日 04:48/ 0 赞/ 290 阅读
还没有评论,来说两句吧...