iOS开发基础48-SVN介绍一

Subversion(SVN)是一种流行的版本控制系统,广泛用于版本管理、代码管理和团队协作。

1. 将文件 Checkout 到本地目录

命令:

svn checkout path
# 简写:svn co

示例:

svn checkout svn://192.168.1.1/pro/domain

解释:
svn checkout 命令将服务器上的指定目录检出到本地目录。该命令会下载所有文件及其历史记录到本地,使你能够开始进行版本控制操作。

底层逻辑:
该命令会从服务器下载项目存储库,并创建一个工作副本。本地副本包括一个隐藏的 .svn 目录,用于存储本地副本的元数据和管理信息。

2. 往版本库中添加新的文件

命令:

svn add file

示例:

svn add test.php
svn add *.php

解释:
svn add 命令用于将未受版本控制的文件添加到版本库中。添加之后,可以进行提交操作,真正将文件写入版本库。

底层逻辑:
svn add 不会立即将文件上传到服务器,而是标记这些文件,以便在下次提交时包括它们。

3. 将改动的文件提交到版本库

命令:

svn commit -m "LogMessage"
# 简写:svn ci

示例:

svn commit -m "add test file for my test" test.php

解释:
svn commit 命令用于提交工作副本中的更改到版本库。-m 选项用于添加提交说明。

底层逻辑:
该命令会将本地更改上传到版本库,并为这些更改分配一个新的版本号。这一步是将本地变更同步到版本库的关键步骤。

4. 加锁/解锁

命令:

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

示例:

svn lock -m "lock test file" test.php
svn unlock test.php

解释:
svn locksvn unlock 用于加锁和解锁文件。加锁使文件变为只读状态,以防止其他用户修改。

底层逻辑:
锁定操作会更新版本库中的锁定元数据,使得其他尝试修改此文件的操作被拒绝,直到解锁为止。

5. 更新到某个版本

命令:

svn update [-r版本号] [路径]
# 简写:svn up

示例:

svn update -r 200 test.php
svn update test.php

解释:
svn update 命令用于更新工作副本到最新版本或指定版本。

底层逻辑:
该命令会将版本库中的更改同步到本地副本。如果版本库中的某个文件发生了改动,svn update 会将这些改动合并到本地文件。

6. 查看文件或者目录状态

命令:

svn status [路径]
# 简写:svn st

示例:

svn status
svn status -v

解释:
svn status 命令用于查看工作副本中文件或目录的状态。

底层逻辑:
该命令会比较工作副本与版本库的差异,并显示变更信息。由于 .svn 目录中存储了本地副本的元数据,因此这个操作不需要访问网络。

7. 删除文件

命令:

svn delete PATH -m "delete test file"
# 简写:svn del, svn remove, svn rm

示例:

svn delete test.php -m "delete test file"

解释:
svn delete 命令用于从版本库中删除文件或目录。

底层逻辑:
删除操作会将目标文件标记为删除,但不会立即移除。在下次提交操作中,文件会被真正从版本库中删除。

8. 查看日志

命令:

svn log [路径]

示例:

svn log test.php

解释:
svn log 命令用于查看文件或目录的所有修改记录,包括每次提交的版本号和注释。

底层逻辑:
版本库中存储了所有提交的历史记录,svn log 命令访问并显示这些历史记录。

9. 查看文件详细信息

命令:

svn info [路径]

示例:

svn info test.php

解释:
svn info 命令用于显示文件或目录的详细元数据信息,包括 URL、版本号和最近一次修改等。

底层逻辑:
该命令访问 .svn 目录中存储的元数据,并显示相关信息。

10. 比较差异

命令:

svn diff [路径]
# 简写:svn di

示例:

svn diff test.php
svn diff -r 200:201 test.php

解释:
svn diff 命令用于比较工作副本和版本库之间的差异,或者比较不同版本之间的差异。

底层逻辑:
该命令会读取并比较本地文件和版本库中的文件,将不同之处显示出来。

11. 将两个版本之间的差异合并到当前文件

命令:

svn merge -r 版本号1:版本号2 路径

示例:

svn merge -r 200:205 test.php

解释:
svn merge 用于将两个版本之间的差异合并到当前文件。这通常用于合并分支上的更改。

底层逻辑:
该命令会计算两个版本之间的差异,并将这些差异应用到当前工作副本中。如果产生冲突,用户需要手动解决。

12. SVN 帮助

命令:

svn help
svn help [命令]

解释:
svn help 提供 Subversion 的帮助信息和命令详解。使用特定命令参数可以获取该命令的详细用法。

13. 版本库下的文件和目录列表

命令:

svn list [路径]
# 简写:svn ls

解释:
svn list 用于列出版本库中特定目录下的所有文件和目录。

底层逻辑:
该命令会访问版本库,获取并显示指定路径下的所有内容。

14. 创建纳入版本控制下的新目录

命令:

svn mkdir 路径

解释:
svn mkdir 用于在版本库中创建新目录。

底层逻辑:
此命令不仅会在文件系统上创建目录,还会将新创建的目录纳入版本控制范围。

15. 恢复本地修改

命令:

svn revert [路径]

解释:
svn revert 用于恢复原始未改变的工作副本文件。

底层逻辑:
该命令会将本地副本恢复到上次更新或提交的状态,不访问版本库。

16. 代码库 URL 变更

命令:

svn switch URL
svn switch --relocate FROM TO [路径]

解释:
svn switch 用于更新工作副本至不同的 URL。这用于在同一版本库内切换分支或标签。

底层逻辑:
该命令会更新工作副本的元数据,使其指向一个新的 URL。

17. 解决冲突

命令:

svn resolved [路径]

解释:
svn resolved 用于移除工作副本的冲突状态。

底层逻辑:
该命令不会自动解决冲突,仅会清除冲突标记,使得文件可以重新提交。

18. 输出指定文件或 URL 的内容

命令:

svn cat 目标 [@版本]

解释:
svn cat 用于输出指定文件或 URL 的内容。

底层逻辑:
该命令会读取并输出版本库中指定文件的内容,可以选择特定版本进行输出。

posted @ 2015-08-29 09:16  Mr.陳  阅读(266)  评论(0编辑  收藏  举报