I'm running Windows XP Home, and am using Cygwin to simulate a Unix-like environment. Perl and Subversion (SVN) are installed on the machine. In this case, Perl was installed via the Cygwin setup file, and SVN was installed from the Collabnet website download. I believe SVN can be installed through the Cygwin setup file as well, but I haven't tried it. The following describes the steps I did to create a SVN repository that contains three versions of Unix core utilities - coreutils 6.6, 6.7, and 6.9 (no version 6.8 exists, apparently). 1. Create a repository. I just did this in the current directory (C:/): "svnadmin create repo4" 2. Import the first revision, specifying the just-created repository: "svn import "C:/Documents and Settings/Biggs/Desktop/coreutils-6.6" file:///"C:/repo4" -m "imported coreutils 6.6" 3. Create a working copy by checking out the first revision: "svn checkout file:///"C:/repo4" " -- repo4 was the repository we initially created. It's a directory that exists in the current directory. Running this svn checkout checks out the first revision (accomplished by the "import" command above) into repo4, making it a working copy now. (C:/repo4 is in double quotes in the call.) 4. Change directory to repo4 (now a working copy), and add the next version of files: "svn add coreutils-6.7" -- The entire directory "coreutils-6.7" must exist inside of repo4. In other words, manually move the coreutils-6.7 directory into repo4, then do the "svn add" command. I tried "svn add" from where "coreutils-6.7" originally was, passing in the entire path to svn add -> "svn add file:///C:/.../Desktop/coreutils-6.7" and it complained that ".../Desktop was not a working copy." In order to do the add command, it has to come from a working copy, which is repo4 in this case. 5. Commit the files from the previous add command into the repository: "svn commit -m "added coreutils 6.7" " 6. Add the next version of files: "svn add coreutils-6.9" -- Like in step 4, the directory "coreutils-6.9" has to have been put into the repo4 directory. This time, we don't have to check anything out, because repo4 is now a working copy. 7. Commit the files from the previous add command into the repository: "svn commit -m "added coreutils 6.9" -- Now, 3 revisions exist within the "repo4" repository: coreutils 6.6, 6.7, and 6.9. We're now ready to test our tool on these revisions. The size of the tar balls I downloaded were all a little over 5 MB. Committing versions 6.7 and 6.9 (steps 5 and 7 above) took well over 1 full minute, with several dots being printed after the words "Transmitting file data". Just to give an idea, here's the last things outputted from the commit done in step 7: . . . Adding coreutils-6.9\tests\wc\c2.I Adding coreutils-6.9\tests\wc\c2.X Adding coreutils-6.9\tests\wc\wc-tests Transmitting file data ......................................................... ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ .................................................................. Committed revision 3 *** Test #1 - Try the tool on a larger repository. Coreutils, version 6.6 and 6.7. *** Initial testing of the tool involved testing on this repository I just created. I believe the coreutils have about 3000 files. So first, we have to create a file list from the files in coreutils. The "svn list" command will list all the files in a particular revision. I did the following: svn list -r 1 -R file:///"C:/repo4" > "coreutils_files.txt" I then ran the following short script, passing in the "coreutils_files.txt" file just created. The purpose of this is to try to make the filelist look the way it's supposed to for our tool. All this script does is add a "/" to the beginning of each file: #!/usr/bin/perl my $filelist = shift; open FILELIST_FH, $filelist; my @files = ; close FILELIST; open NEWFILELIST_FH, ">$filelist"; foreach $line (@files) { print NEWFILELIST_FH "/$line"; } close NEWFILELIST_FH; And the call: perl addName.pl coreutils_files.txt However, the list still contains names of directories, which I went in and deleted manually myself (because I couldn't figure out how to include this in the script). I also deleted the files that began with "." I then tried to run our tool given this file list, and the 2 revisions in the repository (repo4). Initially, the script would not complete. Here's the call and the output: perl run_turmoil.pl -p product -i coreutils_filelist.txt -o file:///C:/repo4@ 1 -r file:///C:/repo4@2 Directory was not specified. Defaulting to current directory. Usage: mktemp(template) at filelist_turmoil.pl line 22 I looked up the "mktemp" function (at http://perldoc.perl.org/File/Temp.html) and changed the filelist_turmoil.pl file so that the call to mktemp included a $template variable as in the example on the web site. I'm not sure if this is right, and communication will (or has) occurred about this problem. (A defect may be logged. Again, communication will happen first.) Again, for the sake of testing the tool, I changed the filelist_turmoil.pl file to include what I thought would make it work. I tried the call to the tool again: perl run_turmoil.pl -p product -i coreutils_filelist.txt -o file:///C:/repo4@ 1 -r file:///C:/repo4@2 This time, the tool appeared to have hung for over 2 minutes before I forced it to stop (Ctrl+C). Two temporary files were created in the current working directory, as well as a "perl.exe.stackdump" file BEFORE I manually terminated the program. Specifically, these files - as well as the required output files - showed up about 20 seconds into the execution of the call. The temp files were changing as the tool was running. The names of these temp files weren't changing, but their contents were. (This is probably due to the way I "fixed" the filelist_turmoil.pl file.) Also, the output file for turmoil on ignored files (.turmoil-ignored) was not created. The .turmoil file that was created (for the kept files) showed no turmoil measurement for the files: . . . /configure.ac Added 0 Deleted 0 Changed 0 Total 0 /gl/modules/getloadavg.diff Added 0 Deleted 0 Changed 0 Total 0 /lib/ChangeLog Added 0 Deleted 0 Changed 0 Total 0 /lib/TODO Added 0 Deleted 0 Changed 0 Total 0 /lib/__fpending.c Added 0 Deleted 0 Changed 0 Total 0 /lib/__fpending.h . . . *** Test #2 - Try the tool on a much smaller repository of only three simple files. Sample.c.txt files. *** The previous test was testing the whole tool on a repository with nearly 3000 files. I set up a smaller repository with two files in its first revision, and three in its second. There are also no additional directories in this repository. I changed only 2 lines in one of the original files. Here's the file list used (filelist_try2.txt). It includes all three files in the repository: /sample1.c.txt /sample2.c.txt /sample3.c.txt Here's the call and output using this much smaller and simpler repository: perl run_turmoil.pl -p product -i filelist_try2.txt -o file:///C:/repo5@1 -r file:///C:/repo5@2 Directory was not specified. Defaulting to current directory. svn: Unable to find repository location for 'file:///C:/repo5/sample3.c.txt' in revision 1 The tool ran in about 3 seconds. The contents of the .turmoil file were: /sample1.c.txt Added 2 Deleted 0 Changed 0 Total 2 /sample2.c.txt Added 0 Deleted 0 Changed 0 Total 0 /sample3.c.txt Added 6 Deleted 0 Changed 0 Total 6 new This looks like expected output. The .turmoil-ignored file was created this time, and was empty, as was the ignored file list. The kept file list had the three ".c.txt" files, and looked exactly the same as the original file list passed in. --Note: I changed the filelist_turmoil.pl file back to the way it was before any testing (i.e. before I changed it the first time). I got the same error when trying to run the tool on this smaller repository: Usage: mktemp(template) at filelist_turmoil.pl line 22 *** Test #3 - Try the tool on versions of a small Unix utility - bool. *** This test was done much in the same was as Test #1. I created the file list in the same way. The primary difference is the number of files: the file list only had 42 files listed, in comparison to 2869 in for Test #1. Some of the files have same names though, as the source files for both the coreutils and the bool utilities were downloaded from the GNU web site. This time, the tool did complete running, and gave control back to the command prompt after about 20 seconds. It produced the feeling that it had hung though, and the results were similar: no turmoil (all zeroes) was reported for the kept files, and the "perl.exe.stackdump" file was also created. This time, however, unlike the results of Test #1, a .turmoil-ignored file was created. -- These tests were run to explore the nominal operation of the tool. I was testing to see what would go wrong if a user entered in expected or likely input. At no point was I trying to "break" the tool, although this kind of testing is also important. Also, here's the site where you can download sources of GNU Unix utilities (i.e. where I got the bool and coreutils files): http://ftp.gnu.org/gnu/