linux svn 多版本库的配置问题 以及钩子报错

本文详细介绍如何在一个SVN服务器中配置多个项目,并通过svnserve.conf进行统一管理。此外,还介绍了如何设置权限、实现自动同步及解决常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的服务器的环境是已经有一个svn的项目了,我想再添加第二个,网站的目录是web1 、web2

思路是这样的,一个版本库,里面放的是所有的svn的项目,这些项目有用一个svnserve.conf 控制,

1、先关闭已经开启的svn服务 killall svnserve

2、/alidata/www/svndata  是版本库目录 ,已经存在的是phpweb1项目

3、创建第二个 svnadmin create /alidata/www/svndata/phpweb2

4、 将phpweb1 或者phpweb2 下面的 conf 里面的 authz 、passwd、svnserve.conf 复制到 /alidata/www/svndata 下面

5、编辑 svnserve.conf 文件 nano svnserve.conf (菜鸟不会用vim)  里面的这几项分别这么设置

    anon-access = none

    auth-access = write

    password-db = passwd

    authz-db = authz

    realm = first (这个可以任意的写)

 6、编辑 passwd 文件

  格式   zhangsan=123456

     lisi = 123456 (用户名=密码)

7、 编辑 authz 文件

  [groups]

  zu1 = zhangsan

  zu2 = lisi

  [phpweb1:/]

  @zu1 = rw (读写的权限)

  *=             (没权限)

 [phpweb2:/]

  @zu2 = rw (读写的权限)

  *=             (没权限)

8、svnserve -d -r /alidata/www/svndata --config-file=/alidata/www/svndata/svnserve.conf

   --config-file 这个参数的意思是所有的项目都用这个文件控制

9、客户端的连接 svn://ip/phpweb1   ,这个时候应该可以连接上客户端了,

10、同步apach的网站目录 , 每个svn项目的目录下面都有一个hooks文件夹,里面都是一个关于钩子的文件

  新建post-commit文件,

  里面的内容#!/bin/sh      (这句是sell脚本执行需要的)
export LANG=en_US.UTF-8
SVN=/usr/bin/svn               (svn的安装目录)
WEB=/alidata/www/web1/   (网站的目录)
$SVN update $WEB --username zhangsan  --password 123456

钩子文件 需要有被执行的权限 chmod +x post-commit 

这个时候关闭所有的svn服务,重新启动svn的服务,

最坑爹的时候来了,客户端checkout下来之后,提交新的文件的时候,钩子报错,

commit blocked by pre-commit hook (exit code 1) with no output

svn:no repository found in 'svn:ip'

网站查了很多方法,都不行,

解决办法 从新checkouot svn的项目 到网站目录 之后,再在客户端操作就可以了

svn co svn:ip/phpweb1 /alidata/www/web1

绝对原创!!! 

转载于:https://www.cnblogs.com/dcj890828/articles/4148345.html

<think>好的,我现在需要解决用户的问题:TortoiseSVN缺少标识符的问题。用户提到“缺少标识符”,可能是指在提交日志时不符合规范,导致系统报错。根据用户提供的引用[1],里面提到了Commit message不合格的情况,可能与TortoiseSVN的提交日志规范有关。 首先,我要确定“标识符”具体指什么。在版本控制中,标识符可能指提交信息的格式要求,比如类型(type)、范围(scope)和主题(subject)。引用[1]中提到的格式是“<type>(<scope>): <subject>”,类似Angular提交规范。用户可能在提交时没有按照这个格式填写日志,导致报错“INVALID COMMIT MSG”。 接下来,需要指导用户如何配置TortoiseSVN以符合提交日志的规范。根据引用[3],IntelliJ IDEA通过插件支持版本控制工具,但客户端仍需正确安装。因此,用户可能已经安装了TortoiseSVN,但未正确配置提交日志的格式。 可能的解决方案包括: 1. **配置提交模板**:设置TortoiseSVN的客户端,使其使用预定义的提交信息模板,强制用户按照指定格式填写。用户可以在TortoiseSVN的设置中找到日志模板配置,添加如类型、范围等字段。 2. **使用钩子脚本**:类似于Git的commit-msg钩子SVN也有客户端钩子脚本。用户可以在本地仓的hooks目录下添加脚本,检查提交信息是否符合格式,否则拒绝提交。引用[1]中的Git示例可转换为SVN钩子脚本。 3. **团队规范培训**:确保所有成员了解提交信息的规范,避免格式错误。引用[3]提到版本控制的支持需要正确配置客户端,因此团队协作时统一配置很重要。 另外,引用[4]提到清除缓存可能影响本地历史记录,但此处问题不涉及缓存,所以暂时不需要处理这部分。 总结步骤:检查TortoiseSVN的日志模板配置,添加钩子脚本验证格式,培训团队遵守规范。这样应该能解决提交日志缺少标识符的问题。</think>### 如何解决TortoiseSVN提交日志缺少标识符的问题? #### 问题分析 TortoiseSVN提交日志“缺少标识符”通常指提交信息未按团队规范填写格式标识符(例如`<type>(<scope>): <subject>`)。这可能由以下原因导致: 1. **未配置提交模板**:客户端未强制使用格式模板; 2. **缺少钩子脚本验证**:本地或服务端未设置提交信息格式校验; 3. **团队成员未遵守规范**:未统一培训或配置导致格式随意[^1]。 --- #### 解决方法 ##### 1. 配置提交模板(客户端) 通过TortoiseSVN设置预定义格式模板,强制规范提交日志: 1. 右键点击任意文件夹 → 选择 **TortoiseSVN → Settings**; 2. 在左侧导航栏选择 **Log Messages → Template**; 3. 在输入框中填写模板(示例): ``` <type>(<scope>): <subject> // 可选添加详细说明 // 示例: feat(docs): 更新用户手册 ``` 4. 勾选 **Use this template for new log messages** → 点击 **OK** 保存[^3]。 --- ##### 2. 添加客户端钩子脚本(本地验证) 通过`pre-commit`钩子脚本验证提交信息格式(以Windows为例): 1. 定位到本地仓SVN配置目录: `C:\Users\<用户名>\AppData\Roaming\Subversion\hooks` 2. 新建批处理文件`pre-commit.bat`,内容如下: ```batch @echo off setlocal set REPOS=%1 set TXN=%2 svnlook log -t "%TXN%" "%REPOS%" | findstr /r "^[a-z]\+([a-zA-Z]*): .\+" > nul if %errorlevel% neq 0 ( echo 提交信息格式错误!必须符合"<type>(<scope>): <subject>"格式 >&2 exit 1 ) exit 0 ``` 3. 重启TortoiseSVN客户端后生效。 --- ##### 3. 服务端强制校验(推荐团队使用) 在SVN服务器端配置钩子脚本,统一拦截不符合规范的提交: 1. 进入服务器仓的`hooks`目录,如`D:\svn\repo\hooks`; 2. 创建`pre-commit`脚本(Windows用`.bat`,Linux用`.sh`),内容参考步骤2; 3. 确保脚本有执行权限(Linux需`chmod +x pre-commit`)。 --- ##### 4. 团队规范与培训 - 明确提交格式规范(例如`feat`/`fix`/`docs`等类型); - 提供模板示例: ``` feat(auth): 添加用户登录功能 fix(router): 修复页面跳转404错误 ``` - 结合代码审查工具(如SonarQube)检查日志格式。 --- #### 验证配置 1. 尝试提交不符合格式的日志(如`"update code"`),系统应拦截并报错; 2. 输入正确格式(如`docs(readme): 更新安装说明`),提交应成功。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值