SVN(Subversion)教程


SVN(Subversion)教程:版本控制入门

什么是 SVN?

SVN(Subversion)是一个集中式版本控制系统,用于管理代码、文档等文件的版本历史。它帮助团队协作开发,提供版本跟踪、文件还原和冲突解决等功能,是 Git 出现前非常流行的版本控制工具。


SVN 的基本概念

  1. 版本库(Repository)

    • 存储项目文件的中央服务器,记录文件的所有版本历史。
  2. 工作副本(Working Copy)

    • 从版本库检出的本地副本,开发者可以在本地修改、提交或更新。
  3. 版本号(Revision Number)

    • 每次提交(Commit)会为版本库分配一个唯一的版本号,方便追踪文件的变化。
  4. 提交(Commit)

    • 将本地工作副本的更改推送到版本库中,更新中央存储。
  5. 更新(Update)

    • 将版本库中最新的更改同步到本地工作副本。
  6. 冲突(Conflict)

    • 多人修改同一文件时可能出现冲突,需要手动解决。

SVN 的安装

在 Linux(Ubuntu)安装

执行以下命令安装 SVN:

bash 复制代码
sudo apt update
sudo apt install subversion

在 Windows 安装

下载并安装 TortoiseSVN,它提供了用户友好的图形界面。


使用 SVN 的基本操作

1. 创建版本库(Repository)

如果你想本地创建一个 SVN 版本库,可以执行以下命令:

bash 复制代码
svnadmin create /path/to/repository

2. 检出代码库(Checkout)

将远程版本库的文件检出到本地工作副本:

bash 复制代码
svn checkout <repository_url> /path/to/working_copy

示例:

bash 复制代码
svn checkout https://example.com/svn/project_name

3. 查看文件状态

在本地工作副本中,可以查看文件的修改状态:

bash 复制代码
svn status

输出示例:

复制代码
?       新文件.txt    # 文件未被跟踪
M       修改的文件.txt # 文件已被修改

4. 添加文件到版本库

新文件需要添加到版本库后才能提交:

bash 复制代码
svn add 文件名

示例:

bash 复制代码
svn add 新文件.txt

5. 提交更改

将本地修改提交到版本库:

bash 复制代码
svn commit -m "提交说明"

6. 更新工作副本

获取版本库中的最新更改:

bash 复制代码
svn update

7. 查看日志

查看文件或项目的版本提交历史:

bash 复制代码
svn log

保持 SVN 登录

为了避免每次操作都需要输入用户名和密码,可以通过以下方法保存 SVN 登录信息:

方法 1:启用自动保存登录信息

SVN 默认支持保存登录信息,但需要确认配置文件中此功能已启用。

操作步骤:
  1. 打开 SVN 配置文件:

    bash 复制代码
    nano ~/.subversion/servers
  2. 找到 store-auth-creds 设置,确保其值为 yes

    plaintext 复制代码
    store-auth-creds = yes
  3. 保存文件并退出(按 Ctrl+O,然后按回车,再按 Ctrl+X 退出)。


方法 2:首次登录时选择保存凭据

首次运行 svn checkout 或其他需要登录的操作时,输入用户名和密码后,SVN 通常会询问是否保存凭据:

复制代码
Store password unencrypted (yes/no)?

输入 yes 后,SVN 将登录信息保存到本地,下次操作时无需重新输入。


方法 3:使用 SSH 密钥登录(适用于 svn+ssh 协议)

如果 SVN 服务器使用 svn+ssh 协议,可以通过配置 SSH 密钥免去输入密码的麻烦:

  1. 生成 SSH 密钥:

    bash 复制代码
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
  2. 将公钥上传到服务器:

    bash 复制代码
    ssh-copy-id user@svn-server-address
  3. 配置完成后,使用 svn+ssh 登录时无需输入密码。


方法 4:手动删除或查看已保存的凭据

  1. SVN 将认证信息存储在 ~/.subversion/auth/ 目录下。可以通过以下命令查看:

    bash 复制代码
    ls ~/.subversion/auth/
  2. 如果需要清除已保存的登录信息,删除对应的凭据文件。例如:

    bash 复制代码
    rm -rf ~/.subversion/auth/svn.simple

高级操作

1. 创建分支

SVN 的分支是通过复制实现的:

bash 复制代码
svn copy <repository_url/trunk> <repository_url/branches/branch_name> -m "创建分支"

2. 合并分支

在工作副本中合并分支的更改:

bash 复制代码
svn merge <repository_url/branches/branch_name>

3. 解决冲突

当多人修改同一文件时可能会出现冲突,更新文件后可能看到冲突标记(如 <<<<<<<>>>>>>>)。此时可以手动解决冲突并标记解决状态:

bash 复制代码
svn resolve --accept working 文件名

总结

SVN 是一款经典的版本控制工具,适合小型团队或集中管理的项目。通过掌握 SVN 的基本操作以及如何保存登录信息,你可以显著提升开发效率。

相关推荐
limnade3 天前
版本控制利器——SVN简介
svn
前端啊龙17 天前
Git vs SVN 核心区别
git·svn
程序猿John17 天前
Linux下创建svn库 和 svn安装与操作
linux·运维·svn
H13469489019 天前
svn服务器数据备份,svn服务器数据备份的方法你会吗?
服务器·svn·负载均衡
困觉少年22 天前
我该怎么设置SVN客户端的认证信息?
svn
逍遥天下00723 天前
svn提交时候,要写注释
svn
涛ing24 天前
【Git “fetch“ 命令详解】
linux·c语言·c++·人工智能·git·vscode·svn
never_go_away25 天前
SVN server on ubuntu
linux·ubuntu·svn
Beyond欣1 个月前
RepoReporter 仿照`TortoiseSVN`项目监视器,能够同时支持SVN和Git仓库
git·svn
努力的搬砖人.1 个月前
SVN常用命令
java·后端·svn