Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Yveltals Blog

Current

1
2
3
4
# 忽略当前路径下的 PROJECT 的更新
svn propset svn:ignore <PROJECT> .
# 执行 svn up 导致 与 git 冲突后,解决冲突并保留本地当前(git)版本
svn resolve --accept working <PROJECT>

配合Phabricator工作流

1
2
3
4
5
## 保存修改
svn add,delete
## code review
arc diff
arc commit

代码检出 checkout

把 SVN 服务器上的代码下载到电脑上,checkout 也可以简写为 co

1
2
3
4
5
svn checkout svn://svnbucket.com/xxx/xxx
## 指定存储目录
svn checkout svn://svnbucket.com/xxx/xxx save-dir
## 指定用户名密码
svn checkout svn://svnbucket.com/xxx/xxx --username xxxx --password xxx

提交代码 commit

commit 可以简写为 ci,-m 参数后面跟的是本次提交的描述内容

1
2
3
4
5
6
## 描述是必须的,但是可以填写空字符串,不指定
svn commit -m "提交描述"
## 只提交指定文件或目录
svn commit /path/to/file-or-dir -m "提交指定文件"
## 指定后缀的所有文件
svn commit *.js -m "提交所有 js 文件"

更新代码 update

update 也可以简写为 up

1
2
3
4
5
6
## 更新到最新
svn update
## 更新到指定版本的代码。特别是最新版本代码有问题时,我们可以用这个命令回到之前的版本
svn update -r xxx
## 仅更新指定文件或者目录
svn up /path/to/file-or-dir

添加文件 add

1
2
3
4
## 添加指定文件或目录
svn add /path/to/file-or-dir
## 添加当前目录下所有 php 文件
svn add *.php

删除文件 delete

此命令会从 SVN 移除版本控制,移除后需要提交一下

1
2
3
svn delete /path/to/file-or-dir
## 删除版本控制,但是本地依旧保留文件
svn delete /path/to/file-or-dir --keep-local

查看日志 log

1
2
3
4
5
6
7
8
## 查看当前目录的日志
svn log
## 查看指定文件或目录的提交日志
svn log /path/to/file-or-dir
## 查看日志,并且输出变动的文件列表
svn log -v
## 限定只输出最新的 5 条日志
svn log -l 5

查看变动 diff

1
2
3
4
5
6
7
8
## 查看当前工作区的改动
svn diff
## 查看指定文件或目录的改动
svn diff /path/to/file-or-dir
## 本地文件跟指定版本号比较差异
svn diff /path/to/file-or-dir -r xxx
## 指定版本号比较差异
svn diff /path/to/file-or-dir -r 1:2

撤销修改 revert

1
2
3
4
## 撤销文件的本地修改
svn revert test.php
## 递归撤销目录中的本地修改
svn revert -R /path/to/dir

添加忽略 ignore

SVN 的忽略是通过设置目录的属性 prop 来实现的,添加后会有一个目录属性变动的修改需要提交

1
2
3
4
5
6
7
8
9
10
11
12
## 忽略所有 log 文件。点号表示在当前目录设置忽略属性
svn propset svn:ignore "*.log" .
## 递归忽略 global-ignores
svn propset svn:global-ignores "*.log" .
## 从文件读取忽略规则,一行一个规则
svn propset svn:ignore -F filename.txt .
## 打开编辑器修改忽略属性
svn propedit svn:ignore .
## 查看当前目录的属性配置
svn proplist . -v
## 删除当前目录的忽略设置
svn propdel svn:ignore .

忽略仅对还未添加到版本库的文件生效,已经在版本库里的文件,添加忽略后是不会自动删除的也不会忽略,需要手动 delete 命令删除下才行。

查看状态 status

任何时候,你可以用下面的命令查看当前工作目录的 SVN 状态喔,会列出来哪些文件有变动。

1
2
svn status
svn status /path/to/file-or-dir

清理 cleanup

SVN 出现报错时可以执行一下,会清理掉本地的一些缓存

1
svn cleanup

查看信息 info

1
svn info

查看文件列表 ls

1
2
3
svn ls 
## 指定版本号
svn ls -r 100

查看文件内容

1
2
## 查看指定版本的文件内容,不加版本号就是查看最新版本的
svn cat test.py -r 2

查看 blame

1
svn blame filename.php

地址重定向

如果你的 SVN 地址变了,不需要重新 checkout 代码,只需要这样重定向一下就可以了

1
svn switch --relocate 原 SVN 地址 新 SVN 地址

分支操作

1
2
3
4
5
6
7
8
9
10
11
## 创建分支,从主干 trunk 创建一个分支保存到 branches/online1.0
svn cp -m "描述内容" http://svnbucket.com/repos/trunk http://svnbucket.com/repos/branches/online1.0
## 合并主干上的最新代码到分支上
cd branches/online1.0
svn merge http://svnbucket.com/repos/trunk
## 分支合并到主干
svn merge --reintegrate http://svnbucket.com/repos/branches/online1.0
## 切换分支
svn switch svn://svnbucket.com/test/branches/online1.0
## 删除分支
svn rm http://svnbucket.com/repos/branches/online1.0