嗨我想知道是否有一种方法用于SVN服务器自动分配的svn:需要锁酒店上任何文件,该文件是二进制的和未文本。

我们有一个小型开发人员的团队,但搁置在大家记得,设置这一财产在新创建的二进制文件没有意义,因为它是非常容易忘记这样的事情。

有帮助吗?

解决方案

编辑svn配置文件,并添加一项自动或者使用的道具 svn:auto-props 版本控制的财产与SVN1.8和新客户。 读SVNBook!

编辑:

从SVN1.8你可以申请 svn:auto-props 酒店的根路径的存储库。看看这个 注释 和更新 SVNBook1.8章.

其他提示

的Apache的Subversion 1.8引入的库口述配置功能,它需要的 SVN 1.8客户端,但因为这是一个客户端的特征1.8服务器是没有必要的。

与Subversion 1.8,你可以在仓库内使用新的Subversion的 svn:auto-props继承属性

例如,设置svn:auto-props*.exe = svn:needs-lock=*您的库的根(或储存库路径代表一个项目的一个根)属性。这将导致成每个新加入的 *具有施加.exe文件svn:needs-lock=*属性。

可以存储多行值Subversion属性,所以可以添加以下标准的svn:需要锁定和MIME图案svn:auto-props

*.bmp = svn:mime-type=image/bmp;svn:needs-lock=*
*.gif = svn:mime-type=image/gif;svn:needs-lock=*
*.ico = svn:mime-type=image/x-icon;svn:needs-lock=*
*.jpeg = svn:mime-type=image/jpeg;svn:needs-lock=*
*.jpg = svn:mime-type=image/jpeg;svn:needs-lock=*
*.png = svn:mime-type=image/png;svn:needs-lock=*
*.tif = svn:mime-type=image/tiff;svn:needs-lock=*
*.tiff = svn:mime-type=image/tiff;svn:needs-lock=*    
*.doc = svn:mime-type=application/x-msword;svn:needs-lock=*
*.docx = svn:mime-type=application/x-msword;svn:needs-lock=*
*.jar = svn:mime-type=application/octet-stream;svn:needs-lock=*
*.odc = svn:mime-type=application/vnd.oasis.opendocument.chart;svn:needs-lock=*
*.odf = svn:mime-type=application/vnd.oasis.opendocument.formula;svn:needs-lock=*
*.odg = svn:mime-type=application/vnd.oasis.opendocument.graphics;svn:needs-lock=*
*.odi = svn:mime-type=application/vnd.oasis.opendocument.image;svn:needs-lock=*
*.odp = svn:mime-type=application/vnd.oasis.opendocument.presentation;svn:needs-lock=*
*.ods = svn:mime-type=application/vnd.oasis.opendocument.spreadsheet;svn:needs-lock=*
*.odt = svn:mime-type=application/vnd.oasis.opendocument.text;svn:needs-lock=*
*.pdf = svn:mime-type=application/pdf;svn:needs-lock=*
*.ppt = svn:mime-type=application/vnd.ms-powerpoint;svn:needs-lock=*
*.ser = svn:mime-type=application/octet-stream;svn:needs-lock=*
*.swf = svn:mime-type=application/x-shockwave-flash;svn:needs-lock=*
*.vsd = svn:mime-type=application/x-visio;svn:needs-lock=*
*.xls = svn:mime-type=application/vnd.ms-excel;svn:needs-lock=*
*.zip = svn:mime-type=application/zip;svn:needs-lock=*

应当指出,自动道具的方法必须配置在每个SVN客户使用。所以当你设置一个新的开发或现有的开发一个新的机器,你要记住执行这种配置。

如果你们都使用 如今, 你可以设定 tsvn:自动属性 财产上的基本文件夹的每个账,它将荣幸地通过如今所有客户。

如果你真的想要美甲了,你会需要把一个 预提交 钩,在每一个储存库中。的 强制执行 脚本可能很容易地加工。

如果你有任何python-fu, RepoGuard (继任者 SVNChecker)看起来可能是有用的。

无论你选择,有没有办法追溯性地适用财产的现有文件存储库中,我想。你也许可以强制实施它在下一次提交的文件,但是。

有这么描述如何自动添加需要锁定,以及如何保证它已经被设置各种不同的选项这一颠覆维基页面。该网页还给出了示例脚本和配置的详细信息:

http://www.orcaware.com/svn/wiki/Automatic_lock -modify解锁

使用一个pre-commit钩子

#!/bin/bash

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

SVNLOOK=/usr/bin/svnlook
ICONV=/usr/bin/iconv

SVNLOOKOK=1

# Check files for svn:needs-lock property
# Exit on all errors.
set -e

echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
 if [[ $REPOS_PATH =~ (A|M|U)[[:blank:]]{3}(.*)\.(.*) ]]
 then
  if [ ${#BASH_REMATCH[*]} -ge 2 ]
    then
  FILENAME=${BASH_REMATCH[2]}.${BASH_REMATCH[3]};

  # Make sure every file has the svn:needs-lock property set
   if [ "" == "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:needs-lock \"$FILENAME\" 2> /dev/null`" ]
    then
    ERROR=1;
    echo "" >&2
    echo "svn:needs-lock property has to be set on \"$FILENAME\"" >&2
    echo "" >&2
   fi
  fi
 fi
 test -z $ERROR || (exit 1)
done

# All checks passed, so allow the commit.
exit 0

和锁定预钩

#!/bin/bash

REPOS="$1"
PATH="$2"
USER="$3"

# If a lock exists and is owned by a different person, don't allow it
# to be stolen (e.g., with 'svn lock --force ...').

# (Maybe this script could send email to the lock owner?)
SVNLOOK=/usr/bin/svnlook
GREP=/bin/grep
SED=/bin/sed

LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
            $GREP '^Owner: ' | $SED 's/Owner: //'`

# If we get no result from svnlook, there's no lock, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "" ]; then
  exit 0
fi

# If the person locking matches the lock's owner, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "$USER" ]; then
  exit 0
fi
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top