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 "your_email@example.com"
  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 的基本操作以及如何保存登录信息,你可以显著提升开发效率。

相关推荐
siqiangming19 小时前
将SVN项目迁移到Git,保留提交记录
git·svn
小趴菜不能喝2 天前
Linux 搭建SVN服务
linux·运维·svn
在下小孙3 天前
Git与SVN常用指令
git·svn
Albert Edison8 天前
【Git】多人协作二(不同分支下)
git·elasticsearch·svn·github
秃秃秃秃哇8 天前
svn学习记录
svn
相偎9 天前
Ubuntu搭建svn服务器
服务器·ubuntu·svn
虫小宝9 天前
个微iPad协议场景下Java后端的协议解析异常排查与问题定位技巧
java·svn·ipad
Albert Edison10 天前
【Git】多人协作一(同一分支下)
git·vscode·svn·github
chen<>11 天前
Git原理与应用
大数据·git·elasticsearch·svn
Albert Edison15 天前
【Git】远程操作
git·svn·github