包含 SVN 标签的文章

svnadmin 使用笔记

热拷贝备份 将整个库都热拷贝一份出来,包括库的钩子脚本、配置文件等,不包括事务文件(所以可能出现热拷贝后库占用空间变小的情况,是不影响正常使用的);任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。热拷贝出来的库可以直接被 SVN 服务器使用,不需要转换。 可以全量备份也可以增量备份。 svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH # --incremental 增量备份选项,只能用于 FSFS 格式的库 svnadmin hotcopy --incremental C:\Repositories\test C:\Backup\test dump 备份 可以全量备份也可以增量备份,可以指定备份的起止版本。 缺点是版本数过大时备份和恢复的时间比较长。 svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]] svnadmin dump C:\Repositories\test > backup.dump svnadmin dump C:\Repositories\test -r 100:200 --incremental > backup_100_200.dump svnadmin create new_repository svnadmin load new_repository < backup.dump 事务(txns [transactions]) SVN 客户端进程异常中止、网络异常等,可能导致文件提交的事务失败,生成的事务文件会继续占用磁盘,可以删除这些意外中止的事务以节省磁盘空间。 列出所有的事务: svnadmin lstxns REPOS_PATH 删除指定的事务: svnadmin rmtxns REPOS_PATH TXN_NAME1 TXN_NAME2 .....

TortoiseSVN 在 show log 时候出现 want to go offline 问题的解决

现象: 同事使用 TortoiseSVN 在 show log 时候出现 want to go offline 的异常,不能查看日志,操作系统为 Win7。 查找与解决问题: 1、清除同事电脑上的各种缓存都没有效果; 2、在我的 Win10 系统上用相同账户登录没有任何异常;(客户端存在版本差异) 3、升级同事的 TortoiseSVN 到最新的版本(1.10.0),问题依旧; 4、修改服务器上库中的 svnserve.conf 文件,设置 anon-access = none,重启 VisualSVN(3.8.1) 后同事的电脑恢复正常。 后注:后来发现似乎与 svnserve.conf 的修改无关,如果先在根目录 show log,然后在中文子目录 show log 是可以正常查看日志的。 5、再将 anon-access = 改为 read 或恢复为注释状态,重启服务器后同事的电脑上仍然正常。 后注:所以,与 svnserve.conf 应该没有关系的。 通过以上现象分析,该问题似乎与客户的操作系统、服务器上库的默认配置都有关系。根本原因仍未查明。 后来发现在自己的电脑上也不能 show log 了,再进一步仔细观察,发现在中文目录上 show log 会失败。 切换了几个 VisualSVN Server 版本没有作用,同时与操作系统 Win2012、Win10 也不相关。 最终发现 TortoiseSVN 版本从 1.9.5 开始,后续版本都存在同样的问...

iF.SVNAdmin 安装和使用笔记

iF.SVNAdmin 是一个基于 Web 的 GUI(图形用户界面)工具,用于管理 Subversion 的库和授权文件。 安装 Apache: yum -y install mod_dav_svn #apache svn支持模块 安装 PHP: yum -y install php 安装 Subversion yum -y install subversion svnserve --version #查看版本信息,测试安装是否成功 安装 iF.SVNAdmin: wget https://github.com/mfreiholz/iF.SVNAdmin/archive/stable-1.6.2.tar.gz tar -zxf stable-1.6.2.tar.gz mv iF.SVNAdmin-stable-1.6.2/ /data/svnadmin/ chown -R apache:apache /data/svnadmin/ 在 /etc/httpd/conf.d/ 创建一个虚拟服务器配置:svnadmin-vhost.conf Listen 888 <VirtualHost 192.168.72.100:888>   ServerAdmin name@email.com   ServerName 192.168.72.100   ErrorLog /etc/httpd/logs/svnadmin-error_log   TransferLog /etc/httpd/logs/svnadmin-access_log     SSLEngine on   SSLCertificateFile /data/ssl/localhost.crt   SSLCertificateKeyFile /data/ssl/localhost.key   DocumentRoot /data/svnadmin   <Directory "/data/svnadmin">     Options FollowSymLinks     AllowOverride all     Require all granted   </Directory>   Alias /svn /var/www/svn1   <Location /svn>      DAV svn     SVNParentPath /data/svn1     AuthzSVNAccessFile /data/svn1/authz     AuthUserFile /data/svn1/htpasswd      AuthName "Subversion Repositories"     AuthType Basic     Require valid-user   </Location> </VirtualHost> 创建服务目录: mkdir /data/svn1 touch /data/svn1/authz touch /data/svn1/htpasswd chown -R apache:apache /data/svn1 禁用 SELinux: setenforce 0 #临时关闭 vim /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled #需要重启 配置防火墙: firewall-cmd --permanent --add-port=888/tcp systemctl restart firewalld systemctl restart httpd.service 打开网页 https://192.168.72.100:888,跳转到初始化配置页面,配置如下: Subversion authorization file: /data/svn1/authz User view provider type: passwd User edit provider type: passwd Group view provider type: svnauthfile Group edit provider type: svnauthfile Repository view provider type: svnclient Repository edit provider type: svnclient User authentication file (SVNUserFile): /data/svn1/htpasswd Parent directory of the repositories (SVNParentPath): /data/svn1 Subversion client executable: /usr/bin/svn Subversion admin executable: /usr/bin/svnadmin 保存配置,提示自动生成管理员账户和密码:User: admin ,Password: admin 编辑配置文件: vim /data/svnadmin/data/config.ini 在[GUI]下增加一行: ApacheDirectoryListing=https://192.168.72.100:888/svn/%1/%2 源码修改记录: function xml_svn_list_character_data($xml_parser, $tagdata) 中的 $this->curList->curEntry->name.= self::encode_string(trim($tagdata));   trim函数会使 “01 测试”类似的字符与汉字间的空格也被清掉,临时换用ltrim来解决这个问题。 改为: $this->curList->curEntry->name.= self::encode_string(ltrim($tagdata)); 中文库名的支持: 从 1.7 版本开始使用 Apache + SVN,虽然在默认的情况下,mod_dav_svn 支持库内出现非纯英文命名的文件夹或文件名,但是一直不支持库名中出现非纯英文的字符。 试了很多方法都不能解决,偶然间了解到 mod_dav_svn 使用 7 位的 ASCII 编码与其钩子脚本交互,所以对于 UTF-8 等多字节的编码是不支持的,所以总会出现 Internal error: Can't convert string from 'UTF-8' to native encoding,即使库名已经使用了 UTF-8 编码也不行。 从 1.8 版本开始支持 SVNUseUTF8 On|Off 配置,在 httpd.conf 中添加一行: SVNUseUTF8 On 就可以支持中文的库名...