[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
11 Jan 2006 12:15:34 -0800
Hi, I was trying to come up with a vbscript that makes sure that a
comment is entered when something is committed. I started with CVS
documentation, but most samples were on Unix scripting. I am trying to
make this work under windows.
According to my limited observation, cvs is behaving differently on
windows. I don't think the documentation applies (and I very well might
be wrong) to the cases where cvsnt is reading verifymsg and triggering
a script. By the way, after reading little bit more, I learned that a
script called within loginfo can not actually stop the commit since
loginfo is called after commit takes place, so I switched to verifymsg.
Here is what I have observed using verifymsg on windows.
When a script is called within verifymsg, the only argument passed to
the script is the name of a temporary file which includes the text of
the commit message. I figured out this by echoing the arguments to a
text file that the script received. Is this a correct observation?
Having seen this, I have read the contents of this temp file into a
variable so that my variable has the commit message then I looked for
"no message" string in this variable.
This seemed to work to this point, some debugging lines I put into the
script showed that the script correctly determined whether the commit
message was empty or not, but I was never able to prevent commit. The
logic I used was that if the "no message" existed, the script should
quit with a non-zero exit code (Wscript.Quit (999)), but CVS allowed
the commit even if the execution reached the portion of the script
where Wscript.Quit command was executed with non-zero exit code. The
complete script is at the bottom of the email. Any help you can provide
will be appreciated. I am having a hard time finding
documentation\samples for cvs operations and scripting on windows so
even if you can direct me to a location where I can see some samples,
it would be a great help.
Here is the script
'Define the variables & constants
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'Define the file system object
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Parse the argument and assign the temp file which contains the commit
message to a string
Set objArgs = WScript.Arguments
strLogTxt = objArgs(0)
'Open the temp file and read the contents into a variable
Set f = objfso.GetFile(strLogTxt)
Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
TextStreamTest = ts.ReadAll
'If the variable text has "no message" in it, exit with non-zero exit
code, if it is not, exit with zero exit code
MyPos = Instr(1, TextStreamTest, "no message", 1)
If MyPos <> 0 Then
WScript.Echo "The commit message is empty. Please enter a
of the commit purpose"
WScript.Echo "The commit message is not empty. Successful
- verifymsg script,