আমি সংগ্রহস্থল ব্রাউজারে একটি লগ মন্তব্য সম্পাদনা করতে চেয়েছিলাম এবং একটি ত্রুটি বার্তা পেয়েছি যে কোনও রেগপ্রপ-পরিবর্তন হুকটি সংগ্রহস্থলের জন্য বিদ্যমান নেই। একটি ভীতিজনক নাম থাকা ছাড়াও প্রাক-রেভপ্রপ-চেঞ্জ হুক কী এবং আমি কীভাবে এটি তৈরি করব?
আমি সংগ্রহস্থল ব্রাউজারে একটি লগ মন্তব্য সম্পাদনা করতে চেয়েছিলাম এবং একটি ত্রুটি বার্তা পেয়েছি যে কোনও রেগপ্রপ-পরিবর্তন হুকটি সংগ্রহস্থলের জন্য বিদ্যমান নেই। একটি ভীতিজনক নাম থাকা ছাড়াও প্রাক-রেভপ্রপ-চেঞ্জ হুক কী এবং আমি কীভাবে এটি তৈরি করব?
উত্তর:
মূলত এটি একটি স্ক্রিপ্ট যা ভাণ্ডারগুলিতে রূপান্তরিত সম্পত্তিটি সংশোধন করার আগে চালু করা হয়েছিল, যাতে আপনি আপনার ভাণ্ডারটিতে কী ঘটছে তা আরও বিশদভাবে পরিচালনা করতে পারেন।
বিভিন্ন হুকের জন্য এসভিএন ডিস্ট্রিবিউটে টেমপ্লেট রয়েছে যা / হুক সাব-ডিরেক্টরিতে অবস্থিত (* .tmpl যা আপনাকে আপনার ওএসের উপর নির্ভর করে নাম পরিবর্তন করতে হবে, সক্রিয় করতে)।
svnsync
মিররটির জন্য হুকের প্রয়োজন হয় , তবে ডিফল্ট স্ক্রিপ্টটি পরিবর্তন করা দরকার, কারণ এটি কেবল এসএনএন: লগ-এ পরিবর্তনের অনুমতি দেয়। এসভিএনসিঙ্ক এর চেয়ে আরও বেশি পরিবর্তন করে, তাই exit 0
সমস্ত সম্পত্তি পরিবর্তনের জন্য আমি কেবল সেখানে প্রবেশ করলাম (যেহেতু এটি কেবল আমার জন্য একটি আয়না) is
pre-revprop-change
একই ডিরেক্টরি হিসাবে সংরক্ষণ করুন এবং এটি ওয়েব সার্ভার ব্যবহারকারীর জন্য (লিনাক্সে) কার্যকর করতে সক্ষম করুন।
উইন্ডোজের জন্য, এখানে একটি ব্যাচ ফাইলে একটি উদাহরণ রয়েছে যা কেবলমাত্র লগ বার্তায় (অন্য বৈশিষ্ট্য নয়) পরিবর্তনের অনুমতি দেয়:
http://ayria.livejournal.com/33438.html
মূলত নীচের কোডটি একটি পাঠ্য ফাইলে অনুলিপি করুন এবং নাম দিন pre-revprop-change.bat
এবং এটি \hooks
আপনার সংগ্রহস্থলের জন্য সাব - ডিরেক্টরিতে সংরক্ষণ করুন।
@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5
:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME
:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION
:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
লিনাক্স কোনও লগ মন্তব্য সংস্করণের অনুমতি দেওয়ার জন্য,
pre-revprop-change.tmpl
সন্ধান করুনhooks
pre-revprop-change
www-data
)সম্পাদিত: (লিন্ডসকে ধন্যবাদ)
0
ধরণের সম্পাদনার অনুমতি দিতে চান তার প্রস্থান করার জন্য একটি স্ক্রিপ্ট সম্পাদনা করতে হতে পারে।এখানে উইন্ডোজ ক্রস-পোস্টের হুকের আসল উত্স সহ অনেকগুলি সাধারণ হুকস অফ সাবভার্সন হুকের প্রচলিত হুকের সাথে স্ট্যাক ওভারফ্লো প্রশ্নটির লিঙ্কটি রয়েছে pre-revprop-change
।
সময়ের সাথে সাথে তারা উন্নত হতে পারে বলে আপনার সেখানে উল্লেখ করা উচিত।
ধন্যবাদ # পেটমোরটেক
এবং আমি আপনার কোড যুক্ত করেছি যা "কেবল একই ব্যবহারকারী তার কোড পরিবর্তন করতে পারে"।
:: Only allow editing of the same user.
for /f "tokens=*" %%a in (
'"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %revision% %repository%') do (
set orgAuthor=%%a
)
if /I not "%userName%" == "%orgAuthor%" goto ERROR_SAME_USER
হুক স্ক্রিপ্টের নামটি এতোটাই ভীতিজনক নয় যদি আপনি এটিকে মীমাংসা করে পরিচালনা করেন: এটি পূর্ববর্তী সম্পত্তি পরিবর্তন হুকের পুনর্বিবেচনার । সংক্ষেপে, এর উদ্দেশ্যpre-revprop-change
হুক স্ক্রিপ্টের হ'ল রূপান্তরিত (পুনর্বিবেচনা) বৈশিষ্ট্যগুলির পরিবর্তনগুলি নিয়ন্ত্রণ করা এবং বিজ্ঞপ্তিগুলি প্রেরণ করা (উদাহরণস্বরূপ যখন সংশোধন সম্পত্তি পরিবর্তন করা হয় তখন ইমেল প্রেরণ করা)।
সাবভার্সনে 2 ধরণের বৈশিষ্ট্য রয়েছে:
svn:needs-lock
এবংsvn:mime-type
) যা ফাইল এবং ডিরেক্টরিতে সেট করা যেতে পারে,svn:log
এবং svn:date
) যে সংগ্রহস্থলের সেট করা পুনর্বিবেচনা ।সংস্করণযুক্ত বৈশিষ্ট্যের ইতিহাস রয়েছে এবং সাধারণ ব্যবহারকারীরা যেগুলি পড়তে / লিখতে কোনও ভাণ্ডার অ্যাক্সেস পেয়ে থাকে তা দ্বারা পরিচালিত হতে পারে। অন্যদিকে, রূপান্তরিত বৈশিষ্ট্যের কোনও ইতিহাস নেই এবং বেশিরভাগ রক্ষণাবেক্ষণের উদ্দেশ্যে পরিবেশন করা হয়। উদাহরণস্বরূপ, আপনি যদি কোনও সংশোধন করেন তবে তা অবিলম্বে svn:date
আপনার প্রতিশ্রুতিবদ্ধতার ইউটিসি সময়, svn:author
আপনার ব্যবহারকারীর নাম এবং svn:log
আপনার প্রতিশ্রুতি লগ বার্তা সহ (যদি আপনি কোনও নির্দিষ্ট করে থাকেন) পান।
যেমন আমি ইতিমধ্যে উল্লেখ করেছি, pre-revprop-change
হুক স্ক্রিপ্টের উদ্দেশ্য হ'ল সংশোধন বৈশিষ্ট্যগুলির পরিবর্তনগুলি নিয়ন্ত্রণ করা। আপনি চান না যে যার সংগ্রহস্থলটিতে অ্যাক্সেস রয়েছে এমন প্রত্যেককেই সমস্ত পুনর্বিবেচনা বৈশিষ্ট্য সংশোধন করতে সক্ষম করা উচিত, তাই পুনর্বিবেচনা বৈশিষ্ট্যগুলি পরিবর্তন করা ডিফল্টরূপে নিষিদ্ধ। ব্যবহারকারীদের বৈশিষ্ট্য পরিবর্তন করতে অনুমতি দিতে, আপনাকে তৈরি করতে হবেpre-revprop-change
হুক ।
সবচেয়ে সহজ হুক মাত্র এক লাইন ধারণ করতে পারে: exit 0
। এটি কোনও অনুমোদিত ব্যবহারকারীকে যে কোনও সংশোধন সম্পত্তি পরিবর্তন করার অনুমতি দেবে এবং এটি বাস্তব পরিবেশে ব্যবহার করা উচিত নয়। উইন্ডোজে, আপনি pre-revprop-change
হুকের মধ্যে কিছু যুক্তি প্রয়োগ করতে ব্যাচ স্ক্রিপ্ট বা পাওয়ারশেল-ভিত্তিক স্ক্রিপ্ট ব্যবহার করতে পারেন ।
এই পাওয়ারশেল স্ক্রিপ্টটি svn:log
কেবল সম্পত্তি পরিবর্তন করতে দেয় এবং খালি লগ বার্তাগুলিকে অস্বীকার করে।
# Store hook arguments into variables with mnemonic names
$repos = $args[0]
$rev = $args[1]
$user = $args[2]
$propname = $args[3]
$action = $args[4]
# Only allow changes to svn:log. The author, date and other revision
# properties cannot be changed
if ($propname -ne "svn:log")
{
[Console]::Error.WriteLine("Only changes to 'svn:log' revision properties are allowed.")
exit 1
}
# Only allow modifications to svn:log (no addition/overwrite or deletion)
if ($action -ne "M")
{
[Console]::Error.WriteLine("Only modifications to 'svn:log' revision properties are allowed.")
exit 2
}
# Read from the standard input while the first non-white-space characters
$datalines = ($input | where {$_.trim() -ne ""})
if ($datalines.length -lt 25)
{
# Log message is empty. Show the error.
[Console]::Error.WriteLine("Empty 'svn:log' properties are not allowed.")
exit 3
}
exit 0
এই ব্যাচের স্ক্রিপ্টটি শুধুমাত্র "এসভিএনএমজিআর" ব্যবহারকারীকে পুনর্বিবেচনা বৈশিষ্ট্যগুলি পরিবর্তন করতে দেয়:
IF "%3" == "svnmgr" (goto :label1) else (echo "Only the svnmgr user may change revision properties" >&2 )
exit 1
goto :eof
:label1
exit 0
পিসি ব্যবহারকারীদের জন্য: উইন্ডোজ সার্ভার ম্যাচিংয়ে ব্যবহার করার সময় .bat এক্সটেনশনটি আমার পক্ষে কাজ করে না। জ্যাঙ্গো রেইনহার্টের পরামর্শ অনুসারে আমি ভিজ্যুয়ালএসভিএন ব্যবহার করেছি এবং এটি একটি সিএমডি এক্সটেনশান সহ একটি হুক তৈরি করেছে।
(এই সমাধানটির অবশ্যই অসুবিধাগুলি রয়েছে, যেহেতু কিছুই চেক / নিষিদ্ধ নেই But তবে আমার ক্ষেত্রে - একটি স্থানীয় রেপো যা আমি কেবল ব্যবহার করছি - এটি কাজ করে বলে মনে হয়))