最近在公司的项目中,因为很多人都参与开发,于是我们毫不犹豫的使用了svn来管理我们的项目,我们也特别强调,在提交代码的时候必须要添加注释,如果不添加注释,代码版本多了,根本搞不清,哪个版本改了什么东西?所以如果加一些注释的话,我们看起来,也方便很多。但是在真正的实际中,很多人都没有添加相关的注释,这里面的原因很多,因此决定通过脚本来控制这一过程,也就是实现必须要通过添加描述信息才能顺利的提交你的代码!。所以在提交的时候,我会强制要求写注释。如果对svn的安装配置不怎么了解,请参考:linux svn安装和配置,不结合apache
#cd /home/administrator/www/svntest svntest是一个代码仓库 #cp ./hooks/pre-commit.tmpl ./hooks/pre-commit 将代码仓库根目录下,hooks文件夹中的pre-commit.tmpl文件重命名为pre-commit #chmod +x ./hooks/pre-commit #vi ./hooks/pre-commit
修改前的SHELL脚本:
REPOS="$1" TXN="$2" # Make sure that the log message contains some text. SVNLOOK=/usr/bin/svnlook $SVNLOOK log -t "$TXN" "$REPOS" | \ grep "[a-zA-Z0-9]" > /dev/null || exit 1 # Exit on all errors. set -e # Check that the author of this commit has the rights to perform # the commit on the files and directories being modified. "$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \ "$REPOS"/hooks/commit-access-control.cfg # All checks passed, so allow the commit. exit 0
修改后的脚本:
REPOS="$1" TXN="$2" # Make sure that the log message contains some text. SVNLOOK=/usr/bin/svnlook LOGMSG=`$SVNLOOK log -t $TXN $REPOS | wc -m` //定义个变量,注意这里不是单引号 #$SVNLOOK log -t "$TXN" "$REPOS" | \ //把这一行和下面的一行注释掉 # grep "[a-zA-Z0-9]" > /dev/null || exit 1 echo $LOGMSG > /home/administrator/www/aaa.txt //为了测试变量用的,查看$LOGMSG有没有值,最后要注释掉 if [ "$LOGMSG" -lt 48 ] //这里为什么是48呢,一个汉字对应16个字符 then echo "\n至少输入4个汉字" >&2 //必须填四个汉字 exit 1 fi # Exit on all errors. #set -e # Check that the author of this commit has the rights to perform # the commit on the files and directories being modified. #"$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN \ //把这一行和下面的一行注释掉。 # "$REPOS"/hooks/commit-access-control.cfg # All checks passed, so allow the commit. exit 0
保存退出后!执行提交操作,效果图如下:
相关推荐
在Windows环境下,实现SVN提交时强制添加注释的方法是通过编写一个批处理文件(`.bat`文件),并将其放置在SVN仓库的`hooks`目录下。具体步骤如下: 1. **创建批处理文件**:首先需要创建一个名为`pre-commit.bat`...
1. **post-commit hook**:配置SVN仓库的post-commit钩子脚本,以便在每次提交后自动触发索引更新流程。 2. **hook脚本编写**:编写Shell脚本或批处理文件,用于获取最新的提交信息并调用索引更新程序。 3. **异常...
这个客户端提供了丰富的右键菜单选项,使得用户可以直接在文件或目录上执行各种SVN操作,如添加、提交、更新、解决冲突等。 4. **基本操作**:使用SVN,你需要了解几个关键概念和操作,如`checkout`(检出)用于...
- **客户端工具**:TortoiseSVN是一个集成于Windows Shell中的客户端工具,方便用户通过右键菜单进行SVN操作。下载链接为TortoiseSVN官网,推荐版本为`TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi`。 ##### 2. ...
- `svn commit -m "commit message"`: 提交更改并附带注释。 - `svn diff`: 查看工作副本与仓库的差异。 - `svn merge URL`: 合并仓库的更改到本地。 - `svn revert`: 撤销本地更改,恢复到上次提交状态。 5. ...
- **冲突解决**:当多人同时修改同一文件时可能出现冲突,SVN会标记出冲突部分,用户需要手动解决冲突后再提交。 4. **TortoiseSVN特色功能**: - **图形化界面**: 提供直观的右键菜单操作,如检出、更新、提交等...
TortoiseSVN是一款开源的、与Windows Shell紧密集成的SVN客户端,它的图标和操作方式都与Windows资源管理器无缝结合,使得用户可以在熟悉的界面下进行版本控制操作。它支持包括创建、提交、更新、合并、解决冲突等一...
安装完成后,可选择是否重启,重启是为了使TortoiseSVN的Windows风格生效,但并非必须。 3. **建立版本库(Repository)** - 可以通过命令行工具`svnadmin`创建,例如`svnadmin create E:\svndemoepository`。 - ...
1. **界面友好**:TortoiseSVN将SVN命令集成到Windows右键菜单中,用户可以通过直观的界面完成诸如添加、删除、更新、提交等操作。 2. **版本控制**:用户可以查看文件的历史版本,轻松回滚到任何之前的版本,防止...
- 对文件进行修改后,使用`svn commit`命令提交更改,例如`svn commit -m "Update README file"`. - **查看所作的修改**: - 使用`svn status`查看当前工作拷贝的状态。 - 使用`svn log`查看提交记录。 - 使用`...
- 提交:支持批量提交文件或整个项目,同时可以添加提交注释。 - 冲突解决:当多个用户修改同一文件时,工具会标识冲突,并提供解决冲突的方法。 - 查看历史:显示文件或目录的历史版本,便于追踪变更。 - 分支...
在本文中,我们将详细探讨如何在Windows 7系统上搭建本地SVN(Subversion)服务器。SVN是一种版本控制系统,用于管理软件项目中的源代码和其他文件的变更历史。通过创建本地SVN服务器,开发人员可以在同一台计算机上...
TortoiseSVN是一款直观易用的Windows Shell接口,与svn紧密集成,提供图形化的用户界面,使得svn的操作更为便捷。提供的文件名为"TortoiseSVN-1.10.0.28176-x64.msi",表明这是TortoiseSVN的64位版本,版本号为...
1. **TortoiseSVN**:这是一款非常流行的免费客户端,它作为一个Windows shell扩展集成在文件资源管理器中,提供直观的右键菜单选项进行SVN操作。TortoiseSVN支持多种语言,包括中文,且与大多数IDE(如Visual ...
- 修改 `ApacheGroup\Apache2\conf\httpd.conf` 文件,取消注释相关模块的加载指令,并添加新的模块指令: ```apache LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/...
最后,为了方便开发人员使用,我们还需要在Eclipse等集成开发环境中配置SVN插件,以实现项目版本的同步、提交、更新等功能。具体步骤包括安装SVN客户端工具、配置IDE中的SVN选项以及设置项目属性等。 总之,配置SVN...
例如,TortoiseSVN是一个Windows shell接口,用户可以直接在资源管理器中进行SVN操作,如添加、提交、更新、比较、解决冲突等。 5. **命令行工具**: 对于熟悉命令行的开发者,SVN还提供了一个命令行客户端,通过...
1. **Subversion服务器**:如`svnserve`或`Apache HTTPD`模块(mod_dav_svn),用于托管版本库,让团队成员可以访问和提交更改。 2. **Subversion客户端**:例如`TortoiseSVN`,这是一个Windows shell集成的图形化...
`-m`选项后面跟的是提交的注释。 4. **Lock/Unlock(加锁/解锁)** `svn lock`用于锁定文件,防止他人编辑。例如: ``` svn lock -m "Locking for editing" test.php ``` `svn unlock`则用于解锁。例如: ``...