资料
SVN 分支及合并的介绍和实践—命令行MAC升级Catalina(10.15.*)导致SVN无法使用的解决方法
分支和主干的合并
# 从分支到主干
svn merge --reintegrate ^/branches/quota
# 从主干到分支
svn merge [-r M:N] ^/trunk
# 仅记录的合并
svn merge -c 25 --record-only ^/trunk
创建新分支
svn cp -m "#note create branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001
在 svn生成patch与应用patch中,提供了一种把一个分支的修改合并到另一个分支的方法,需要借助一个patch文件.
下面使用merge命令可以直接实现这个功能.
先用svn info 查看一下当前目录的SVN信息, 注意Relative URL.
假设当前分支工作目录的Relative URL: ^/branches/xxxx, 要合并的源分支是my_proj, 只需要合并源分支的dir_a/dir_b目录在r100 版本修改的内容
svn merge ^/branches/my_proj/dir_a/dir_b@99 ^/branches/my_proj/dir_a/dir_b@100
svn ci . -m "merge ^/branches/my_proj/dir_a/dir_b@100"
把^/branches/my_proj/dir_a/dir_b上r100的修改,合入当前工作目录并提交.
svn merge ^/branches/my_proj/dir_a/dir_b@100 ^/branches/my_proj/dir_a/dir_b@99
svn ci . -m " revert ^/branches/my_proj/dir_a/dir_b@100"
在当前工作目录, 回退^/branches/my_proj/dir_a/dir_b上r100的修改,提交.
回退本分支提交,跟上面类似,my_proj换成当前分支xxxx就可以了.
跟使用patch一样, merge也是合入本地工作目录的,要提交,代码才真正进入仓库.
创建分支
svn cp -m "create branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001
获得分支
svn co http://svn_server/xxx_repository/branches/br_feature001
合并主干上的最新代码到分支上
cd br_feature001
svn merge http://svn_server/xxx_repository/trunk
如果需要预览该刷新操作,可以使用svn mergeinfo命令,如:
svn mergeinfo http://svn_server/xxx_repository/trunk --show-revs eligible
或使用svn merge --dry-run选项以获取更为详尽的信息。
分支合并到主干
一旦分支上的开发结束,分支上的代码需要合并到主干。SVN中执行该操作需要在trunk的工作目录下进行。命令如下:
cd trunk
svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001
分支合并到主干中完成后应当删该分支,因为在SVN中该分支已经不能进行刷新也不能合并到主干。
合并版本并将合并后的结果应用到现有的分支上
svn -r 148:149 merge http://svn_server/xxx_repository/trunk
建立tags
产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本
svn copy http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/tags/release-1.0 -m "1.0 released"
删除分支或tags
svn rm http://svn_server/xxx_repository/branches/br_feature001
svn rm http://svn_server/xxx_repository/tags/release-1.0
svn add 命令 递归目录下所有文件
svn add . --no-ignore --force
svn ignore 的用法(忽略文件及目录)
若想创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容:
𝑠𝑣𝑛𝑚𝑘𝑑𝑖𝑟𝑠𝑝𝑜𝑜𝑙 svn propset svn:ignore ‘*’ spool
$ svn ci -m ‘Adding “spool” and ignoring its contents.’
若想创建一个文件夹,但不加入版本控制,即忽略这个文件夹:
𝑚𝑘𝑑𝑖𝑟𝑠𝑝𝑜𝑜𝑙 svn propset svn:ignore ‘spool’ .
$ svn ci -m ‘Ignoring a directory called “spool”.’
若已经创建了文件夹,并加入了版本控制,现在想忽略这个文件夹,但要保持文件夹的内容:
𝑠𝑣𝑛𝑒𝑥𝑝𝑜𝑟𝑡𝑠𝑝𝑜𝑜𝑙𝑠𝑝𝑜𝑜𝑙−𝑡𝑚𝑝 svn rm spool
𝑠𝑣𝑛𝑐𝑖−𝑚′𝑅𝑒𝑚𝑜𝑣𝑖𝑛𝑔𝑖𝑛𝑎𝑑𝑣𝑒𝑟𝑡𝑒𝑛𝑡𝑙𝑦𝑎𝑑𝑑𝑒𝑑𝑑𝑖𝑟𝑒𝑐𝑡𝑜𝑟𝑦”𝑠𝑝𝑜𝑜𝑙”.′ mv spool-tmp spool
$ svn propset svn:ignore ‘spool’ .
$ svn ci -m ‘Ignoring a directory called “spool”.’
如果想在SVN提交时,忽略某个文件,也就是某个文件不提交,可以使用
svn propedit svn:ignore命令。
下面详细介绍一下使用步骤。
单纯的看svn官方文档和一些网上搜索的资料,有时候真的不如亲自试验的好。
svn propedit svn:ignore 目录名称。
注意,在使用这个SVN的属性编辑前,你得确保后面的“目录名称”是SVN版本控制的目录。
如果要忽略此目录下的文件,可以如下操作。
比如,想忽略/product目录下的test.php文件。前提是/product目录必须在svn版本控制下,而test.php文件不在svn版本控制。
svn st先看一下状态,会显示如下:
? /product/test.php
我们需要将test.php文件加入忽略列表。
此时先设置SVN默认的编辑器
export SVN_EDITOR=vim
然后,使用svn propedit svn:ignore ,用法如下
svn propedit svn:ignore /product
此时会出现一个VIM的编辑窗口,表示需要将某个文件加入到忽略列表里
我们在编辑窗口中,写入
test.php
然后保存,并退出VIM编辑器。
这时候会有一个提示:属性 “svn:ignore” 于 “product” 被设为新值。
表示文件test.php的svn:ignore属性设置成功。
然后使用svn st查看,会显示:
M product
我们需要提交,然后这个svn:ignore属性才会起作用
svn ci -m ‘忽略test.php文件’
这时候,无论你如何修改test.php文件,再使用svn st时,也不会出现修改提示符合M了。
mac下安装svn
brew install subversion
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: Oauth2协议中如何对accessToken进行校验
大家好,我是飘渺。今天我们来聊聊oauth2.0的accesstoken校验逻辑。 概述 Never Sett* 的提问 看完这个问题,我感觉读者对于accesstoken的校验逻辑不太清楚,所以特意写了这篇文章解释一下。 首先我们要知道Oauth2是一个授权…