सबवर्सन हुक के सामान्य प्रकार

सबवर्सन के लिए लोग किस प्रकार की हुक स्क्रिप्ट का उपयोग कर रहे हैं? बस सामान्य विचार लेकिन कोड भी बहुत अच्छा होगा!

0
ro fr bn

16 उत्तर

मेरे कार्यस्थल में हमने एक पोस्ट-प्रतिबद्ध हुक स्थापित किया है जो विभिन्न डैश बोर्डों में प्रदर्शित आरएसएस फ़ीड उत्पन्न करता है और कोड समीक्षाकर्ताओं के लिए उपयोग किया जाता है ताकि यह पता चल सके कि समीक्षा करने का समय कब है और हमारे लिए यह देखने के लिए कि नए कर्मचारी पर्याप्त कर रहे हैं ।

0
जोड़ा

मुझे लगता है कि सबसे आम बात यह है कि लोगों को आने के बाद संशोधन टिप्पणियां बदलने की अनुमति दें।

आपको अनुमति देने के लिए 'प्री-रेप्रप्रॉप-चेंज' हुक स्क्रिप्ट को सक्षम करने की आवश्यकता है। प्रदान किया गया उदाहरण, यदि सक्षम है तो केवल टिप्पणी संपत्ति को संपादित करने की अनुमति देता है और केवल मूल धूमकेतु बनता है। टाइपो को सही करने के लिए बढ़िया।

0
जोड़ा

मैं पोस्ट-प्रतिबद्ध हुक का उपयोग कर रहा हूं ( मुझे लगता है कि यह यह है ) प्रत्येक प्रतिबद्धता के लिए बेसकैम्प पर एक मंच पर एक संदेश पोस्ट करने के लिए। दो फायदे:

  1. लीड डेवलपर के रूप में, मुझे हर सुबह (उस बेसकैम्प फ़ोरम से आरएसएस फ़ीड के माध्यम से) का रोल-अप मिलता है और देख सकता है कि मेरी टीम कितनी जल्दी हो गई है।

  2. हमारा ट्रैक / एसवीएन इंस्टॉल हमारी फ़ायरवॉल के पीछे है, इसलिए यह मेरे स्थान को अन्य स्थानों में एक खिड़की देता है जो हम कर रहे हैं। वे इसे समझ नहीं सकते हैं, लेकिन एक प्रबंधक के लिए बहुत सी गतिविधि बहुत अच्छी तरह दिखती है;)

मुझे लगता है कि इसका अंतिम परिणाम @Aviv क्या कर रहा है के समान है।

मैं निरंतर एकीकरण के लिए एक अलग सर्वर पर नवीनतम प्रतिबद्धता बनाने के लिए समाधानों की तलाश में हूं, लेकिन काम करने से पहले मुझे अपने डेटाबेस स्कीमा में बदलाव करने के तरीके को बदलना होगा।

0
जोड़ा

भंडार में परिवर्तन की बग / समस्या प्रबंधन प्रणाली को सूचित करने के लिए एक हुक। अर्थात। प्रतिबद्ध संदेश में समस्या है: 546 या उसमें समान टैग जिसे बग प्रबंधन प्रणाली को पार्स किया गया है और खिलाया गया है।

0
जोड़ा

हम निम्नलिखित हुक स्क्रिप्ट के साथ जांचते हैं:

  • वह एक प्रतिबद्ध लॉग संदेश प्रदान किया गया है
  • कि एक समीक्षक को प्रतिबद्धता के लिए निर्दिष्ट किया गया है
  • कि स्वचालित रूप से जेनरेट नहीं किया गया कोड या प्रतिबंधित फ़ाइल प्रकार भंडार में उतरता है
  • एक शाखा / टैग बनने पर ईमेल भेजें

हम अभी भी निम्नलिखित को लागू करना चाहते हैं:

  • जब कोई उपयोगकर्ता फ़ाइल पर लॉक प्राप्त करता है तो एक ईमेल भेजें
  • जब आपका लॉक चोरी हो गया है तो एक ईमेल भेजें
  • एक संशोधन संपत्ति बदल दी गई है जब सभी को एक ईमेल भेजें
0
जोड़ा

मेरे पास रूबी टिंडर लाइब्रेरी का उपयोग करके एक सेटअप है जिसे मैं कैम्पफायर रूम में भेजता हूं, अगर कोई स्क्रिप्ट चाहता है जो मैं आपको पोस्ट कर सकता हूं या आपको कोड भेज सकता हूं।

मैंने देखा है कि अन्य आम हैं बग ट्रैकिंग सिस्टम और ईमेल अधिसूचनाओं के लिए पोस्ट हैं।

0
जोड़ा

मैं pre-revprop-change हुक का उपयोग कर रहा हूं जो प्रतिबद्धता के बाद वास्तव में वापस जाने और टिप्पणियों और ऐसी जानकारी संपादित करने की अनुमति देता है। प्रतिबद्ध टिप्पणियों में गायब / ग़लत जानकारी होने पर यह बहुत उपयोगी है।

यहां मैं Windows NT या बाद में pre-revprop-change.bat बैच फ़ाइल पोस्ट करता हूं ... आप निश्चित रूप से इसे और अधिक संशोधनों के साथ बढ़ा सकते हैं। आप भी प्राप्त कर सकते हैं post-revprop-change.cmd पुराने snv: लॉग को बैकअप करने के लिए या बस इसे नए लॉग में जोड़ने के लिए ...

एकमात्र मुश्किल हिस्सा वास्तव में stdin पार्स करने में सक्षम होना था बैच फ़ाइल ... यह FIND.EXE कमांड के साथ यहां किया गया है।

दूसरा यह है कि / b के उपयोग के साथ exit कमांड के उपयोग के साथ समस्याओं के अन्य उपयोगकर्ताओं से मुझे रिपोर्ट मिली है। यदि त्रुटि मामले अच्छी तरह से व्यवहार नहीं करते हैं तो आपको अपने विशिष्ट एप्लिकेशन में उस / b को हटाने की आवश्यकता हो सकती है।

@ECHO OFF

set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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 properties are not allowed. >&2
goto ERROR_EXIT

:ERROR_PROPNAME
echo Only changes to svn:log revision properties 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 
0
जोड़ा
धन्यवाद यह बहुत उपयोगी था।
जोड़ा लेखक ziggy, स्रोत
मैं वास्तव में अपने सभी हुक को एक जिथब खाते में फिर से भरता हूं ताकि इसे समय के साथ बेहतर किया जा सके github.com/philibertperusse / तोड़फोड़-हुक
जोड़ा लेखक Philibert Perusse, स्रोत
किसी भी गैर-खाली लॉग संदेश की अनुमति देने के बजाय, इसे कैसे करें ताकि संपादित लॉग संदेश में कम से कम कई वर्ण हों, उदा। 10 अक्षर?
जोड़ा लेखक alondono, स्रोत

विंडोज़ प्री-प्रतिबद्ध हुक को जांचने के लिए कि लॉग में कुछ है।

@ECHO OFF
setlocal

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set txn=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set svnlookparam="%repos%" -t %txn%

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
set bIsEmpty=true
for /f "tokens=* usebackq" %%g in (`svnlook log %svnlookparam%`) do (
   set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY

echo Allowed. >&2

goto :END


:ERROR_EMPTY
echo Empty log messages are not allowed. >&2
goto ERROR_EXIT

:ERROR_EXIT
:: You may require to remove the /b below if your hook is called directly by subversion
exit /b 1

:END
endlocal
0
जोड़ा

ईमेल अधिसूचना भेजने के लिए पोस्ट-प्रतिबद्ध हुक जो ईमेल की सूची में रिपॉजिटरी में कुछ बदल गया है। Sendmail.ini के साथ आपको अपनी हुक फ़ाइल की तुलना में उसी फ़ोल्डर में sendmail.exe की आवश्यकता है।

मेल प्राप्तकर्ताओं को सूचीबद्ध करने के लिए आपको अपने post-commit.cmd के बगल में फ़ाइल पोस्ट-commit.tos.txt की भी आवश्यकता है। फ़ाइल में होना चाहिए:

[email protected],[email protected],[email protected]

हुक कोड यहां है:

@ECHO OFF
setlocal

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set rev=%2

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set tos=%repos%\hooks\%~n0.tos.txt
set reposname=%~nx1
set svnlookparam="%repos%" --revision %rev%

if not exist "%tos%" goto :END

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Prepare sendmail email file
set author=
for /f "tokens=* usebackq" %%g in (`svnlook author %svnlookparam%`) do (
  set author=%%g
)

for /f "tokens=* usebackq delims=" %%g in ("%tos%") do (
  set EmailNotificationTo=%%g
)
set SendMailFile=%~n0_%reposname%_%rev%.sm

echo To: %EmailNotificationTo% >> "%sendMailFile%"
echo From: %reposname%[email protected] >> "%sendMailFile%"
echo Subject: [%reposname%] Revision %rev% - Subversion Commit Notification  >> "%sendMailFile%"

echo --- log [%author%] --- >> "%sendMailFile%"
svnlook log %svnlookparam% >> "%sendMailFile%" 2>&1
echo --- changed --- >> "%sendMailFile%"
svnlook changed %svnlookparam% --copy-info >> "%sendMailFile%" 2>&1

echo .>> "%sendMailFile%"

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Send email
type "%sendMailFile%" | "%~dp0sendmail.exe" -t

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Clean-up
if exist "%sendMailFile%" del "%sendMailFile%"


:END
endlocal
0
जोड़ा

कई चीजें जिनके लिए हम उनका उपयोग करते हैं:

  • integrating with the bug tracker (Trac in our case - a commit message that says 'Closes #514' automatically marks that bug as closed
  • integrating with the build integration (buildbot in our case - a commit to a watched branch triggers a build
  • pre-commit hook for validating the commit - we use svnchecker. It validates our Python code for PEP8 correctness
  • sending checkin mails to a mailing list
  • running indentation scripts
0
जोड़ा

हम बग ट्रैकिंग के लिए FogBugz का उपयोग करते हैं, यह सबवर्जन प्रतिबद्ध स्क्रिप्ट प्रदान करता है जो आपको केस नंबर शामिल करने की अनुमति देता है टिप्पणियों में आपकी जांच और उसके बाद बग को उस चेक के साथ जोड़ता है जो इसे ठीक करता है। इसे एक WebSVN इंस्टेंस की आवश्यकता होती है ताकि आपके पास आपके भंडार के लिए एक वेब आधारित दर्शक हो।

0
जोड़ा

हम अपने रिलीज रोबोट को ट्रिगर करने के लिए एक प्रतिबद्ध हुक स्क्रिप्ट का उपयोग करते हैं। हमारे विभिन्न उत्पादों में change.txt नाम की फ़ाइल में नई रिलीज जानकारी लिखना टैग और प्रासंगिक कलाकृतियों के निर्माण को ट्रिगर करेगा।

0
जोड़ा

यदि आपके पास रिपिक्स के साथ काम करने वाले यूनिक्स और विंडोज उपयोगकर्ता का मिश्रण है, तो मैं आपको case-insensitive.py सावधानी पूर्वक उपाय के रूप में पूर्व-प्रतिबद्ध हुक-स्क्रिप्ट। यह हार्ड-टू-सॉर्ट-आउट स्थितियों को रोकता है जहां svn अपडेट विंडोज उपयोगकर्ताओं के लिए विफल रहता है फ़ाइल नाम बदलें जो केवल फ़ाइल नाम के मामले को बदल देता है । मेरा विश्वास करो, एक अच्छा मौका है कि यह आपको परेशानी बचाएगा।

0
जोड़ा
मुझे नहीं लगता कि यह अभी भी एक मुद्दा क्यों है। एक विशिष्ट रजिस्ट्री परिवर्तन के साथ, विंडोज एक्सपी और ऊपर, केस संवेदनशीलता हो सकती है। यह केवल क्लाइंट यूटिलिटीज है, जैसे कि टोर्टोइज एसवीएन जो इसका समर्थन नहीं करता है। इन क्लाइंट svn उपयोगिताओं को स्थापित करते समय इस रजिस्टर को सेट करने के लिए एक इंस्टॉलर विकल्प होना चाहिए।
जोड़ा लेखक TamusJRoyce, स्रोत

कुछ समय पहले उपversण उपयोगकर्ता मेलिंग सूची पर इस पर चर्चा की गई थी। यह पोस्ट विशेष रूप से कुछ उपयोगी विचार है।

0
जोड़ा

I forgot to enter a comment while committing. Didn't have time to figure out why my pre-revprop-change hook wasn't working. So the following svnadmin command worked for me to enter a commit message: svnadmin setlog --bypass-hooks -r 117 junk, where "junk" is the file containing the text which I wanted to be the comment. svn setlog help has more usage info...

0
जोड़ा

उन लोगों के लिए जो एक snvsync ऑपरेशन के लिए प्री-रेप्रप्रॉप-चेंज.बैट की तलाश में हैं:

https://gist.github.com/1679659

@ECHO OFF

set user=%3

if /I '%user%'=='syncuser' goto ERROR_REV

exit 0

:ERROR_REV echo "Only the syncuser user may change revision properties" >&2
exit 1

यह यहां से आता है: http: / /chestofbooks.com/computers/revision-control/subversion-svn/Repository- प्रतिकृति-Reposadmin-Maint-Replication.html और विंडोज के लिए अनुकूलित किया गया है।

0
जोड़ा