Skip to content
0

Svn使用手册

命令

Update

shell
--depth ARG              : limit operation by depth ARG ('empty', 'files', 'immediates', or 'infinity')
--set-depth ARG          : set new working copy depth to ARG ('exclude', 'empty', 'files', 'immediates', or 'infinity')
  • depth:仅针对当前操作有效。
  • set-depth:永久修改深度。

set-depth优先级更高:比如目录Package\ZGGG的永久深度为 empty,执行 svn up --depth files Package\ZGGG 依然不会更新内容。

深度参数:

  • empty:空目录。只更新一个空目录,这有助于你精确控制想下载哪些目录或文件。如果目录深度为空,执行 svn up your_empty_dir 将不会更新任何内容。要么重新设定深度,要么指定需要更新的文件。
  • files:仅更新直接子文件。
  • immediates:更新直接子目录和直接子文件,需注意子目录都是空目录(即depth为empty)。
  • infinity:递归下载所有子目录及其文件。
  • exclude:排除

特别注意:

  • 每次设置永久深度时,本地可能会删除已存在的文件。比如每次执行 --set-depth immediates 时,子目录内的文件都会被清空。即每次设置目录的深度时,会按深度规则重新整理这个目录。
  • 通配符是匹配本地已存在的文件进行更新!

查看深度:svn info your_dir --show-item depth

示例:

  1. 本地仓库没有EDDF目录,从远端更新下来。
shell
# 设置Package/EDDF目录的深度为infinity,表示每次更新都自动更新所有子目录及其文件
svn update --set-depth infinity Package/EDDF/
  1. 本地仓库没有此文件和文件所在的目录,只想更新文件。
shell
# 先更新文件所在的空目录
svn update --set-depth empty Package/ZUJZ/
# 再更新文件
svn update Package/ZUJZ/Manifest.json

Ubuntu编译安装pysvn

注意

不要直接 pip install pysvn

  1. 安装 subversion 相关库,主要是编译需要subversion的头文件。安装完之后应该能在 /usr/include/subversion-1 看到 svn 的头文件。
bash
apt install -y libsvn-dev libapr1-dev libaprutil1-dev
  1. 下载安装PySvn源码(注意下载 Source
bash
wget https://sourceforge.net/projects/pysvn/files/pysvn/pysvn-1.9.22.tar.gz
  1. 解压到本地
bash
tar -xvzf pysvn-1.9.22.tar.gz
  1. 进入到 pysvn-1.9.22 目录下进行编译,也可跳过直接到下一步安装。
bash
cd pysvn-1.9.22
python3 setup.py build
  1. 安装到本地python库
bash
python3 setup.py install

如果想安装在虚拟环境,最简单的方式是先激活虚拟环境,然后进入到 pysvn-1.9.22 目录下直接安装即可。例如:

bash
pipenv shell
cd /toyourpath/pysvn-1.9.22
python setup.py install

报错解决方案

  1. Error: Cannot find PyCXX include CXX/Version.hxx - use --pycxx-dir 和 Error: Cannot find SVN include svn_client.h - use --svn-inc-dir
python
# 修改setup.py文件

os.system( sys.executable + ' setup.py configure ')
# 把上面的代码更换为
os.system( sys.executable + ' setup.py configure --pycxx-dir=/root/pysvn-1.9.22/Import/pycxx-7.1.9 --svn-inc-dir=/usr/include/subversion-1' )

附:PySvn使用文档