svn的禁止tags目录修改

原创 2011年01月07日 15:22:00

虽然有时候可以通过authz文件来控制某些目录的读写问题,但是在一个repository中有多个子目录,然后每个目录中都有tags目录,可能还有3级情况。如果还是通过authz来控制的话,你会崩溃的。

 

现在可以用svn的hooks功能来完成禁止tags修改功能。hook是什么?网上有很多资料,我就不再这儿废话了。只想说hook可以是任何形式的可执行程序,如shell script, php, python, 你自己写c程序. 唯一要注意的是它的程序名字一定要是hooks/pre-commit.tmpl 模板名的前缀名,即 pre-commit。

 

实现"禁止修改tag"功能,就是在pre-commit中实现的,我这里用的是bash shell script完成。

 

下面代码功能包括:

1. 提交时写message的字数限制

2. 禁止任何修改tag

3. 管理员可以删除tag,但也不能修改,这里的管理员就是“deyilong”

 


REPOS="$1"
TXN="$2"


# Make sure that the log message contains some text.
SVNLOOK=/usr/local/bin/svnlook

#it needs somewhat numbers of commiting message

LOG=`$SVNLOOK log -t  "$TXN" "$REPOS"`

Len_log=`echo ${#LOG}`

if [ $Len_log -le 10 ]; then

  echo -e "/nThe Length of Committing Message is Too Short!" 1>&2

  exit 1

fi

 

 

#prevent someone from modifying a tag

MSG=`$SVNLOOK dirs-changed -t "$TXN" "$REPOS"`

echo $MSG | grep '//tags//' > /dev/null

if [ $? -eq 0 ]; then

  echo $MSG | grep '//tags//$' > /dev/null

  if [ $? -ne 0 ]; then

    echo -e "/nCannot Change A Tag! Please Recreate A New Tag." 1>&2

    exit 1

  else

    $SVNLOOK changed -t "$TXN" "$REPOS" |grep '^A' > /dev/null

    if [ $? -ne 0 ]; then

      $SVNLOOK author -t "$TXN" "$REPOS" |grep '^deyilong$' > /dev/null

      if [ $? -eq 0 ]; then

        exit 0

      else

        echo -e "/nCannot Change A Tag! Please Recreate A New Tag." 1>&2

        exit 1

      fi

    fi

  fi

fi


SVN的标准目录结构:trunk、branches、tags及提交工作注意事项及错误提示

一.提交之前先更新 1.         SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。 2.         如果在修改的期间别人也更改了...

svn创建branches、tags命令

svn是项目代码管理的常用工具。创建分支branches、tags是常有的事情。 用命令是最方便的形式(这也是让我爱上用linux开发的原因,呵呵) 创建分支branches: svn copy ht...
  • lazy_p
  • lazy_p
  • 2012年10月19日 15:33
  • 4882

SVN的标准目录结构:trunk、branches、tags

SVN的标准目录结构:trunk、branches、tags 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在...
  • pttaag
  • pttaag
  • 2012年10月16日 11:07
  • 27824

SVN的标准目录结构:trunk、branches、tags

SVN的标准目录结构:trunk、branches、tags 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在...
  • zljjava
  • zljjava
  • 2015年08月07日 12:26
  • 368

SVN的标准目录结构:trunk、branches、tags

在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这...

SVN的标准目录结构:trunk、branches、tags

我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因...
  • wishfly
  • wishfly
  • 2013年03月12日 17:28
  • 22002

SVN的标准目录结构:trunk、branches、tags

SVN的标准目录结构:trunk、branches、tags 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在...

SVN的标准目录结构:trunk、branches、tags

我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因...
  • zjt1388
  • zjt1388
  • 2014年12月31日 17:46
  • 174

SVN的标准目录结构:trunk、branches、tags

SVN的标准目录结构:trunk、branches、tags 我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:svn的禁止tags目录修改
举报原因:
原因补充:

(最多只允许输入30个字)