سؤال

مرحبًا، كنت أتساءل عما إذا كانت هناك طريقة لخادم SVN لتعيين خاصية svn:needs-lock تلقائيًا على أي ملف ثنائي وليس نصيًا.

لدينا فريق مطورين صغير إلى حد ما ولكن الاعتماد على الجميع لتذكر تعيين هذه الخاصية على الملفات الثنائية المنشأة حديثًا ليس له معنى لأنه من السهل جدًا نسيان مثل هذا الشيء.

هل كانت مفيدة؟

المحلول

قم بتحرير ملف التكوين svn وأضف إدخالاً للدعائم التلقائية أو الاستخدام svn:auto-props خاصية تم إصدارها مع SVN 1.8 والعملاء الأحدث. قراءة SVNBook!

يحرر:

من SVN 1.8 يمكنك تطبيق svn:auto-props الخاصية إلى المسار الجذر لمستودعك.انظر الى هذا أصدر مذكرة وتحديثها SVNBook 1.8 الفصل.

نصائح أخرى

وأباتشي التخريب 1.8 قدم مستودع تكوين تمليها ميزة الذي يتطلب على SVN 1.8 العميل ، لكن الخادم 1.8 ليست ضرورية لأن هذا هو سمة من جانب العميل.

ومع التخريب 1.8، يمكنك تكوين أنماط السيارات الدعائم داخل مستودع باستخدام التخريب جديد <لأ href = "http://svnbook.red-bean.com/en/1.8/svn.advanced.props.html# svn.advanced.props.inheritable "يختلط =" noreferrer "> svn:auto-props ورثت الملكية .

وعلى سبيل المثال، تعيين قيمة svn:auto-props إلى *.exe = svn:needs-lock=* الملكية على جذر المخزون الخاص بك (أو مسار المستودع الذي يمثل جذر المشروع). وسيؤدي هذا إلى <م> كل المضافة حديثا * ملف exe بعد أن الملكية svn:needs-lock=* تطبيقها.

ويمكنك تخزين القيم متعدد الخطوط في خصائص التخريب، حتى تتمكن من إضافة إس القياسية التالية: احتياجات قفل ونمط 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: autoprops الملكية في المجلد الأساسي لكل الخروج و وسيتم تكريم جميع عملاء تورتويز إس في إن.

إذا كنت تريد حقا أن الظفر ذلك، سوف تحتاج إلى وضع <لأ href = "http://svnbook.red-bean.com/en/1.5/svn.ref.reposhooks.pre-commit.html "يختلط =" noreferrer "> قبل ارتكاب هوك في كل مستودع. البرنامج النصي المنفذ قد مزخرف بسهولة لهذا الغرض.

إذا كان لديك أي الثعبان فو، RepoGuard (خليفة <لأ href = "HTTP: / /svnchecker.tigris.org/ "يختلط =" noreferrer "> SVNChecker ) يبدو أنها يمكن أن تكون مفيدة جدا.

وبغض النظر عن أي اخترت، وليس هناك وسيلة لتطبيق بأثر رجعي الخاصية إلى الملفات الموجودة في المستودع، على ما أعتقد. ربما يمكنك تطبيقه على التالي ارتكاب الملف، ولكن.

وهناك صفحة على هذا الويكي التخريب التي تصف كل الخيارات المختلفة حول كيفية إضافة احتياجات قفل وكيفية ضمان تم تعيينها تلقائيا. الصفحة كما يعطي مخطوطات سبيل المثال وتفاصيل التكوين:

http://www.orcaware.com/svn/wiki/Automatic_lock -modify-فتح

استخدم ما قبل ارتكاب هوك

#!/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