svn命令行使用说明

0、查看帮助
命令:   svn help

1、同步(checkout)服务器数据到本地
命令:   svn checkout  [directory]
        svn co  [directory]
例:把
https://svn.test.cn/book/network/
目录同步到本地的 /usr/local/svn/book/network 目录
# cd /usr/local/svn/book
# svn checkout
https://svn.test.cn/book/network/
...
(R)eject, accept (t)emporarily or accept (p)ermanently? t
...
Password for 'wandering':    # wandering是我当前登录系统的帐号
Authentication realm:  book Subversion Repository
Username: jack
Password for 'jack':
...

2、提交(commit)本地文档到服务器
命令:   svn commit -m "" [directory|file]
        svn ci -m "" [directory|file]
例:把 /usr/local/svn/book/network/tcpip.txt 提交到服务器,前提是服务器上已经有此文件。
# cd /usr/local/svn/book/network/
# svn commit -m ""  # -m是记录的log信息,可以为空
一般情况下,只要在需要更新的数据文件所在的目录执行 svn ci -m "" 即可。

3、更新(update)服务器数据到本地
命令:   svn update [directory|file]
        svn up [directory|file]
例:把
https://svn.test.cn/book/network/
目录中的内容更新到本地
# cd /usr/local/svn/book/network
# cd update

4、查看日志
命令:   svn log [directory|file]
例:查看 /usr/local/svn/book/network 目录的修改日志
方法一:
# cd /usr/local/svn/book/network
# svn log
方法二:
# svn log /usr/local/svn/book/network

5、增加(add)本地数据到服务器
命令:   svn add

检出
svn checkout [-N] [--ignore-externals] [-r rev] URL PATH

Svn中文网


如果希望只检出顶级目录被选中,使用-N选项。

参考资料:www.svn8.com


如果希望忽略外部被选中,使用--ignore-externals选型。 Svn8.Com

如果你正在检出特定的修订版本,在URL后使用-r指定。 参考资料:www.svn8.com

更新
svn info URL_of_WC
svn update [-r rev] PATH

Www.Svn8.Com


更新多个项目在Subversion还不是原子操作,所以TortoiseSVN会首先找到版本库的HEAD修订版本,然后将所有项目更新到特定修订版本,防止出现混合修订版本的工作副本。 Bbs.Svn8.Com

如果只有一个项目被选中更新,或选中的项目来自不同的版本库,TortoiseSVN只会更新到HEAD。

Svn8.Com


没有使用命令行选项,更新到修订版本也实现了更新命令,但提供了更多的选项。

Svn中文网


更新到版本
svn info URL_of_WC
svn update [-r rev] [-N] [--ignore-externals] PATH 参考资料:www.svn8.com

如果希望只更新顶级目录,使用-N选项。 Svn中文网

如果希望忽略外部被选中,使用--ignore-externals选型。

Svn中文网


提交
在TortoiseSVN,提交对话框使用Subversion命令,第一部分是检查工作副本哪些文件可能被提交,然后你可以检查列表,比较与BASE的区别,选择你希望提交包含的项目。 Www.Svn8.Com

svn status -v PATH 参考资料:www.svn8.com

如果选择了显示未版本控制的文件,TortoiseSVN会遵循忽略规则显示工作目录中所有未版本控制的文件和文件夹。这个特性在Subversion中没有等价操作,因为svn status 命令不扫描未版本控制的文件夹。 Svn8.Com

如果你选择了未版本控制的文件和文件夹,这些项目都会先增加到你的工作副本。 Svn8.Com

svn add PATH...

Svn中文网

当你点击确认,开始执行Subversion提交。如果你不修改所有的文件检查框,TortoiseSVN 会递归提交工作副本。如果你取消选择一些文件,那么就必须使用非递归提交 (-N) ,每个路径都必须在命令行上单独指定。 Svn中文网

svn commit -m "LogMessage" [-N] [--no-unlock] PATH...

Svn8.Com

日志消息是日志编辑框的内容。它可以为空。

Bbs.Svn8.Com


如果选择了保持锁,就使用--no-unlock开关。

参考资料:www.svn8.com


差异
svn diff PATH Www.Svn8.Com

If you use Diff from the main context menu, you are diffing a modified file against its BASE revision. The output from the CLI command above also does this and produces output in unified-diff format. However, this is not what TortoiseSVN is using. TortoiseSVN uses TortoiseMerge (or a diff program of your choosing) to display differences visually between full-text files, so there is no direct CLI equivalent. Svn中文网

你可以使用TortoiseSVN,比较任意两个文件的差异,不管他们是否受版本控制。TortoiseSVN只是把这两个文件传递给已经选择的比较差异程序,让它比较差异。 Bbs.Svn8.Com

显示日志
svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH
  或者
svn log -v -r M:N [--stop-on-copy] PATH

Www.Svn8.Com


默认情况下,TortoiseSVN尝试用--limit方法取得100个日志消息。如果设置了让它使用旧借口,那么就使用第二种个是获得100个日志消息。

参考资料:www.svn8.com

如果选择了停止于复制/改名,就使用--stop-on-copy开关。 Svn中文网

检查所作的修改
svn status -v PATH
  或者
svn status -u -v PATH Bbs.Svn8.Com

只在你的工作副本执行初始的状态检查。如果你点击检查版本库,那么也检查版本库,察看哪些文件会被更新操作修改,它需要-u开关。 Bbs.Svn8.Com

如果选择了显示未版本控制的文件,TortoiseSVN会遵循忽略规则显示工作目录中所有未版本控制的文件和文件夹。这个特性在Subversion中没有等价操作,因为svn status 命令不扫描未版本控制的文件夹。

Svn中文网


版本图
版本图是TortoiseSVN特有的,命令行客户端没有等价实现。 Svn8.Com

TortoiseSVN执行了这些操作

Svn8.Com


svn info URL_of_WC
svn log -v URL Svn8.Com

其中URL是版本库的 根,返回分析数据。

Svn中文网


版本库浏览器
svn info URL_of_WC
svn list [-r rev] -v URL Www.Svn8.Com

你可以使用svn info检查版本库的根,它在版本库浏览器的顶级显示。你不能浏览它的上级目录。同样,这个命令返回所有显示在版本库浏览器的锁信息。 Www.Svn8.Com

给出URL和可选的版本号,svn list列出目录中的内容。

参考资料:www.svn8.com

编辑冲突
这个命令没有控制台等价实现。它调用TortoiseMerge或者外部三路差异/合并工具察看棘手的冲突,挑选出冲突行。

Svn中文网


已解决
svn resolved PATH Www.Svn8.Com

改名
svn rename CURR_PATH NEW_PATH

参考资料:www.svn8.com


删除
svn delete PATH Www.Svn8.Com

恢复
svn status -v PATH Www.Svn8.Com

首先开始状态检查,察看你的工作副本有哪些项目可以被撤销。你可以复审文件列表,检查这些文件的修改,然后选择你要撤销的项目。 Www.Svn8.Com

当你点击确认时,开始Subversion撤销操作。如果你不修改所有的文件检查框,TortoiseSVN 会递归撤销 (-R)工作副本的修改。如果你取消选择一些文件,那么就必须使用非递归撤销 ,每个路径都必须在命令行上单独指定。" Svn中文网

svn revert [-R] PATH... Svn8.Com

清理
svn cleanup PATH

Www.Svn8.Com

获得锁
svn status -v PATH

参考资料:www.svn8.com


首先开始状态检查,察看你的工作副本有哪些项目可以被加锁。你可以选择想加锁的项目。

Www.Svn8.Com


svn lock -m "LockMessage" [--force] PATH...

Svn8.Com


加锁信息是加锁编辑框的内容。它可以为空。" 参考资料:www.svn8.com

如果选择了强制锁定 ,就使用--force开关。

Bbs.Svn8.Com


释放锁
svn unlock PATH

Svn8.Com


分支/标记
svn copy -m "LogMessage" URL URL
  或
svn copy -m "LogMessage" URL@rev URL@rev
  或
svn copy -m "LogMessage" PATH URL Svn中文网

分支/标签对话框在版本库执行复制。有三个单选按钮:

Svn中文网


版本库中的最新版本
指定版本库中的版本
工作副本
对应上面的三个命令行参数。 Svn中文网

日志消息是日志编辑框的内容。它可以为空。

Www.Svn8.Com


切换
svn info URL_of_WC
svn switch [-r rev] URL PATH

Bbs.Svn8.Com

合并
svn merge [--dry-run] --force From_URL@revN To_URL@revM PATH

Svn8.Com

Dry run与使用--dry-run选项的merge相同。 Svn8.Com

svn diff From_URL@revN To_URL@revM 参考资料:www.svn8.com

Unified diff显示了用来合并的区别操作。 参考资料:www.svn8.com

输出
svn export [-r rev] [--ignore-externals] URL Export_PATH Bbs.Svn8.Com

这个形式是当从一个未版本控制目录访问,并且文件夹作为目标。 Bbs.Svn8.Com

导出一个工作副本到一个目录没有使用Subversion的库,所以没有等同的命令行匹配。

Svn中文网

TortoiseSVN做的只是将所有文件复制到一个新的位置,并且会显示操作的过程。未版本控制的文件/文件夹也可以被导出。

Bbs.Svn8.Com


在两种情况下,如果Omit externals被选中,就相当于使用了--ignore-externals选项。

Bbs.Svn8.Com


重新定位
svn switch --relocate From_URL To_URL Svn8.Com

在当前位置创建版本库
svnadmin create --fs-type fsfs PATH
  或
svnadmin create --fs-type bdb PATH Www.Svn8.Com

添加
svn add PATH...

Svn中文网

如果选择了一个文件夹,TortoiseSVN会首先会递归的访问可以添加的条目。

Svn中文网

导入
svn import -m LogMessage PATH URL Www.Svn8.Com

日志消息是日志编辑框的内容。它可以为空。

Www.Svn8.Com


追溯
svn blame -r N:M -v PATH
svn log -r N:M PATH Svn8.Com

If you use TortoiseBlame to view the blame info, the file log is also required to show log messages in a tooltip. If you view blame as a text file, this information is not required. 参考资料:www.svn8.com

加入忽略列表
svn propget svn:ignore PATH > tempfile
{编辑新的忽略内容到tempfile文件中}
svn propset svn:ignore -F tempfile PATH

参考资料:www.svn8.com

因为svn:ignore通常是多行的,这里是通过文件显示,而不是直接使用命令行操作。

Www.Svn8.Com

创建补丁
svn diff PATH > patch-file Bbs.Svn8.Com

TortoiseSVN creates a patch file in unified diff format by comparing the working copy with its BASE version. 参考资料:www.svn8.com

应用补丁(Apply Patch)
如果补丁和工作副本不是同一版本的话,那么应用补丁会是一件很棘手的事情。幸运的是,你可以使用 TortoiseMerge(在Subversion中没有等同的工具)。

 

本节向大家讲解一下Windows下SVN使用手册,在这列和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。

五、客户端使用
通常使用TortoiseSVN客户端,它是作为一个系统插件存在的。
导入版本库:在本地创建欲导入的目录,使用右键checkout菜单项,在URLofrepository中输入如“svn://127.0.0.1/vwas“,确定之后输入用户名和密码即可完成导入。
其它操作请查TortoiseSVN使用手册。命令行列举版本库:svnlistsvn://127.0.0.1/vwas 
六、SVN命令行
SVN使用手册中SVN命令行问题。创建新的版本库
svnadmincreate/path/to/repository
svnadmin是有用的subversion系统管理命令,使用svnadminhelp查看在线帮助信息。
添加新的项目(importnewproject)
svnimportprojectfile:///repository_name/project-m"Comment"
svnimportprojecthttp://yourhost/svn_dir/repository_name/project-m"Comment"
检出(checkout)项目
svncheckoutfile:///repository_name/project/trunkproject
svncheckouthttp://yourhost/svn_dir/repository_name/project/trunkproject
列出仓库中的项目(list)
svnlist--verbosefile:///repository_name/project
svnlist--verbosehttp://host/svn_dir/repository_name/project
状态查询(status)
svnstatus
给出新文件,已经改变的文件和被删除的文件列表;
添加文件或目录(add)
svnadd
删除文件或目录(delete)
svndelete
svndeletehttp://yourhost/svn_dir/repository/project_dir
提交(commit)
svncommithttp://yourhost/svn_dir/repository/project_dir
更新(update)
svnupdate
更新仓库中的文件到本地。
标签和特殊版本项目
使用copy命令
svncopyhttp://yourhost/repos/project/trunkhttp://yourhost/repos/project/tags/1.0.0
用于创建某个特定版本的快照(snapshot);
svnlisthttp://yourhost/repos/project/tags/1.0.0
七、版本库备份(SVN使用手册介绍这里引用了rocksun的《谈谈Subversion的备份》)
1.完全备份
最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上就可以了。但是,这样不是很安全的方式。因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用。为此Subversion提供了“svnadminhotcopy”命令,可以防止这种问题。
如果要把vwas备份到d:svnrootbak目录下,只需要运行:
svnadminhotcopyd:svnrootvwasd:svnrootbakvwas
但是我们作为配置管理员,必须想办法优化这个过程,如果我们这个目录下有许多版本库,需要为每个版本库写这样一条语句备份。为此我写了下面的脚本,实现备份一个目录下的所有版本库。我们在D:SVNROOT下创建了两个文件,第一个是simpleBackup.bat:
echooff
remSubversion的安装目录
setSVN_HOME="D:Subversion"
rem所有版本库的父目录
setSVN_ROOT=D:svnroot
rem备份的目录
setBACKUP_SVN_ROOT=D:svnrootbak
@echo正在备份版本库%1......
@%SVN_HOME%binsvnadminhotcopy%SVN_ROOT%%1%BACKUP_DIRECTORY%%2
@echo版本库%1成功备份到了%2!
这个文件仅仅是对“svnadminhotcopy”的包装,第二个是backup.bat:
echooff
remSubversion的安装目录
setSVN_HOME="D:Subversion"
rem所有版本库的父目录
setSVN_ROOT=D:svnroot
rem备份的目录
setBACKUP_SVN_ROOT=D:svnrootbak
setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%%date:~0,10%
ifexist%BACKUP_DIRECTORY%gotocheckBack
echo建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%backup.log
mkdir%BACKUP_DIRECTORY%
rem验证目录是否为版本库,如果是则取出名称备份
for/r%SVN_ROOT%%%Iin(.)do@ifexist"%%Iconfsvnserve.conf"%SVN_ROOT%simpleBackup.bat"%%~fI"%%~nI
gotoend
:checkBack
echo备份目录%BACKUP_DIRECTORY%已经存在,请清空。
gotoend
:end
在使用的时候,只需要修改backup.bat开头的三个路径,将两个脚本拷贝到“SVN_ROOT”下就可以了。根据以上的配置,你只需要运行backup.bat,就可以把“SVN_ROOT”下的版本库都备份到“BACKUP_SVN_ROOT”里,并且存放在备份所在日的目录里,例如“D:svnrootbak2006-10-22”。虽然这部分工作很简单,可是必须有人定时地去执行这个操作(例如每周一凌晨)。为了避免发生遗忘的情况,我们可以将这个操作加入到系统的at任务当中去。例如还是上面的环境,为了安装at任务,我们运行:
at1:00/every:MD:svnrootbackup.bat
这样在每周一凌晨1:00都会执行这个备份过程。当然备份在本机也是不安全的,你也许需要上传到别的机器,这个就要靠你自己去实现了。

 

<think>我们正在讨论SVN命令行工具的使用方法。根据引用内容,用户已经安装了SVN命令行工具,并配置了环境变量(如设置SVN_CMD_HOME和PATH)。现在用户想知道如何在命令行使用SVN命令。 首先,我们需要确保用户已经正确安装了SVN命令行工具。根据引用[2],用户可以通过在命令行中输入`svn help`来查看帮助,或者输入`svn --version`来查看版本信息以验证安装。 接下来,我们将介绍一些基本的SVN命令行操作,包括: 1. 检出(Checkout):从SVN仓库中获取代码到本地工作副本。 2. 添加(Add):将新文件或目录添加到版本控制。 3. 提交(Commit):将本地修改提交到SVN仓库。 4. 更新(Update):将SVN仓库中的最新修改同步到本地工作副本。 5. 状态(Status):查看工作副本中文件的状态(如修改、添加、删除等)。 6. 日志(Log):查看提交历史。 此外,我们还会提到一些其他常用命令。 注意:在下面的命令中,<repository_url>代表SVN仓库的URL,<file>代表文件名,<directory>代表目录名。 我们将按照以下步骤进行说明: 步骤1:检出代码(Checkout) 步骤2:添加文件(Add) 步骤3:提交更改(Commit) 步骤4:更新工作副本(Update) 步骤5:查看状态(Status) 步骤6:查看日志(Log) 下面逐一介绍: ### 步骤1:检出代码(Checkout) 将仓库中的代码检出到本地目录(如果目录不存在,会自动创建): ``` svn checkout <repository_url> [<directory>] ``` 或者简写为: ``` svn co <repository_url> [<directory>] ``` ### 步骤2:添加文件(Add) 在本地工作副本中新建文件后,需要将其添加到版本控制: ``` svn add <file> ``` 如果要添加一个目录及其下的所有文件(包括子目录),可以使用: ``` svn add <directory> ``` ### 步骤3:提交更改(Commit) 将本地修改(包括添加、删除、修改等)提交到仓库: ``` svn commit -m "提交日志信息" ``` 或者简写为: ``` svn ci -m "提交日志信息" ``` 注意:提交时需要使用`-m`参数指定提交日志,否则会打开默认编辑器要求输入日志。 ### 步骤4:更新工作副本(Update) 将仓库中的最新版本同步到本地工作副本: ``` svn update ``` 或者简写为: ``` svn up ``` 可以指定更新到某个特定版本: ``` svn up -r <revision_number> ``` ### 步骤5:查看状态(Status) 查看当前工作副本中文件的状态(哪些文件被修改、添加、删除等): ``` svn status ``` 或者简写为: ``` svn st ``` 状态标志的含义: ?:未纳入版本控制 A:已添加 M:已修改 D:已删除 C:冲突 !:文件丢失(被非svn命令删除)或者不完整 ~:受控文件被其他类型文件(如链接)阻碍 ### 步骤6:查看日志(Log) 查看当前工作副本的提交历史: ``` svn log ``` 可以指定查看某个文件的日志: ``` svn log <file> ``` 也可以限制显示的日志条目数量: ``` svn log -l <number> ``` 除了以上基本命令,还有一些其他常用命令: - 删除文件(Delete): ``` svn delete <file> svn ci -m "删除文件" ``` - 重命名文件(Move/Rename): ``` svn move <old_file> <new_file> svn ci -m "重命名文件" ``` - 比较差异(Diff): ``` svn diff ``` - 撤销本地修改(Revert): ``` svn revert <file> # 撤销单个文件的修改 svn revert -R <directory> # 递归撤销目录下的所有修改 ``` - 创建分支(Branch)和合并(Merge): 创建分支: ``` svn copy <source_url> <branch_url> -m "创建分支" ``` 合并分支(在主干工作目录下执行): ``` svn merge <branch_url> ``` 以上是SVN命令行工具的基本使用方法。用户可以通过`svn help`命令查看所有可用命令,或者使用`svn help <command>`查看特定命令的详细帮助。 注意:在使用SVN命令行时,请确保网络连接正常(对于远程仓库),并且有相应的权限(如提交时需要写权限)。 最后,如果用户在使用过程中遇到问题,可以参考官方文档或在线资源,如引用[1]和引用[2]中提到的内容。 根据用户的需求,我们生成了以下相关问题: §§相关问题§§ 1. 如何解决SVN命令行操作中的冲突? 2. 如何使用SVN命令行创建标签(tag)? 3. SVN命令行如何忽略某些文件或目录?</think>### SVN命令行使用方法指南 SVN命令行工具是版本控制的核心操作方式,以下是基本使用流程: #### 1. **环境配置** - 设置环境变量(以Windows为例): ```shell set SVN_CMD_HOME=C:\your\svn\bin\path set path=%path%;%SVN_CMD_HOME% ``` - 验证安装: ```shell svn --version ``` 输出示例: ``` svn, version 1.14.3 (r1914484) compiled Jan 18 2024... ``` #### 2. **基础操作** | 命令 | 功能 | 示例 | |------|------|------| | `checkout` | 下载仓库 | `svn checkout http://svn.example.com/repo` | | `add` | 添加新文件 | `svn add filename.txt` | | `commit` | 提交更改 | `svn commit -m "修改说明"` | | `update` | 更新本地副本 | `svn update` | | `status` | 查看文件状态 | `svn status` | | `diff` | 比较差异 | `svn diff filename.txt` | #### 3. **常用工作流** 1. **首次获取代码**: ```shell svn checkout http://svn.example.com/project/trunk ``` 2. **日常修改流程**: ```shell svn update # 更新代码 svn add newfile.py # 添加新文件 svn commit -m "添加功能模块" # 提交修改 ``` 3. **查看历史记录**: ```shell svn log # 完整日志 svn log -l 5 # 最近5条记录 ``` #### 4. **高级操作** - **撤销修改**: ```shell svn revert filename.py # 撤销单个文件 svn revert -R . # 递归撤销目录 ``` - **解决冲突**: ```shell svn resolve --accept working conflict_file.txt ``` - **分支管理**: ```shell svn copy http://svn.example.com/trunk \ http://svn.example.com/branches/feature1 \ -m "创建特性分支" ``` #### 5. **配置技巧** - **忽略文件**(编辑`.svnignore`): ```shell *.log temp/ ``` - **永久认证**(保存密码): ```shell svn auth --store-simple-credentials ``` > 注意:所有修改需通过`commit`提交才会同步到服务器,本地操作使用`revert`可放弃未提交的更改[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值