मैंने Tortoise Docs का उपयोग करके एक समान वातावरण स्थापित किया है और कह सकता है: हाँ, यह है!
प्रारंभ-कमिट हुक
यह हुक तीन पैरामीटर पारित हो: ऑपरेशन एक हुक प्रारंभ-कमिट कि लाइनों में भर जाता है कि उपयोगकर्ता पढ़ा जाएगा और एक पूर्व प्रतिबद्ध हुक कि तुझे फिर से लाइनों को हटा शामिल PATH MESSAGEFILE CWD
। MESSAGEFILE
एक अस्थायी फ़ाइल का पथ है जिसका उपयोग प्रतिबद्ध संदेश संग्रहीत करने के लिए किया जाएगा। आप इस अस्थायी फ़ाइल को अपने संदेश से भर सकते हैं एक्स को मत भूलना! या, आप अपने संदेश को उस चीज़ के साथ उपसर्ग करते हैं जिसे आप प्रतिबद्ध संदेश में टिप्पणी के रूप में देखेंगे और फ़िल्टर हो जाएंगे। चूंकि गिट #
को प्रतिबद्ध संदेश में टिप्पणी के रूप में उपयोग करता है, इसलिए मैंने वही किया: #
से शुरू होने वाली प्रत्येक पंक्ति को प्रतिबद्ध संदेश से फ़िल्टर किया जाता है। और इसलिए मैं # Don't forget to do X!
संदेश लिखूंगा। पर्ल (untested) में नमूना कार्यान्वयन:
use strict; # what we always have
use warnings; # what we always have
use Fcntl ':flock'; # lock files when writing
use Carp; # use croak instead of die
use English qw(-no_match_vars); # words instad of cryptic variables
sub startcommit_hook{
# open the logfile
my $logfilename = $ARGV[1];
# write hint line about supported tags
open my $handle, '>:utf8', $logfilename
or croak "Opening $logfilename for writing failed\n";
flock $handle, LOCK_EX;
print {$handle} "# Don't forget to do X!\n";
flock $handle, LOCK_UN;
return close $handle or croak "unable to close $OS_ERROR";
}
startcommit_hook();
पूर्व प्रतिबद्ध हुक
यह हुक चार मापदंडों पारित हो: PATH DEPTH MESSAGEFILE CWD
। प्री-प्रतिबद्ध हुक का काम उस संदेश को फ़िल्टर करना है जिसे आपने MESSAGEFILE
में स्टार्ट-प्रतिबद्ध हुक में भर दिया है (अन्यथा यह सर्वर पर प्रतिबद्ध संदेश के हिस्से के रूप में जाएगा और यह शायद आप जो चाहते हैं वह नहीं है) । या तो बस अपना संदेश हटाएं एक्स करना न भूलें! या – यदि आप के रूप में मैं – ऊपर लिखा हर पंक्ति है कि एक #
हस्ताक्षर के साथ शुरू होता है (या उस पैटर्न ^\s*#
मेल खाता है) के बाद से यह हमारी दुनिया में एक टिप्पणी है हटाना टिप्पणी दृष्टिकोण का उपयोग करें।
हम पूर्व-प्रतिबद्ध सामग्री को संभालने के लिए स्टार्ट-प्रतिबद्ध हुक के लिए हमारी फ़ाइल का विस्तार कर सकते हैं क्योंकि पैरामीटर की संख्या अलग है।
use strict; # what we always have
use warnings; # what we always have
use feature 'switch'; # for given-when construct
use Fcntl ':flock'; # lock files when writing
use Carp; # use croak instead of die
use English qw(-no_match_vars); # words instad of cryptic variables
sub startcommit_hook{
# open the logfile
my $logfilename = $ARGV[1];
# write hint line about supported tags
open my $handle, '>:utf8', $logfilename
or croak "Opening $logfilename for writing failed\n";
flock $handle, LOCK_EX;
print {$handle} "# Don't forget to do X!\n";
flock $handle, LOCK_UN;
return close $handle or croak "unable to close $OS_ERROR";
}
sub precommit_hook{
my $logfilename = $ARGV[2];
# first, read the logfile
open my $handle,'<:utf8',$logfilename or croak "Error reading file contents of $logfilename: $OS_ERROR\n";
my @content = <$handle>;
close $handle or croak "unable to close: $OS_ERROR";
chomp @content;
# now, write it, ignoring the comment lines
open my $handle, '>:utf8', $logfilename
or croak "Opening $logfilename for writing failed\n";
flock $handle, LOCK_EX;
foreach my $line(@content){
if($line !~ /^\s*#/){ # line has no comment, print it.
print {$handle} $line . "\n";
}
}
flock $handle, LOCK_UN;
close $handle or croak "unable to close $OS_ERROR";
return;
}
given($#ARGV){
when (3){startcommit_hook();}
when (4) {precommit_hook();} # no user supplied -> auto lookup
default {croak "Invalid number of parameters";}
}
हुक को सक्रिय करने के TortoiseSVN की सेटिंग खोलने के लिए, hook scripts
के पास जाओ और के रूप में एक बार स्क्रिप्ट जोड़ने: जो हुक कॉल करने के लिए पर निर्णय स्क्रिप्ट (यह भी अपरीक्षित) के लिए पारित गिनती पैरामीटर से बना है स्टार्ट-प्रतिबद्ध हुक और एक बार पूर्व-प्रतिबद्ध हुक के रूप में। कॉल करने के लिए कमांड लाइन perl /path/to/script
होगी। और Wait for the script to finish
और Hide script while running
भी देखें।
नोट
आप अधिक जानकारी हुक के लिए पारित की जरूरत है, तो आप भी जब आप TortoiseSVN की सेटिंग में हुक आवंटित कस्टम पैरामीटर गुजर सकता है। यदि आप कस्टम पैरामीटर असाइन करते हैं, तो ये से डिफ़ॉल्ट पैरामीटर (जैसा कि docs में बताया गया है) से पहले हुक पर पास हो जाता है।