|
From: Clayton H. <cla...@sp...> - 2004-12-16 15:45:44
|
Hi Thomas, just a quick question are you using the AddCommand before =
using the CommitCommand? The AddCommand does not do a lot at the server =
(well there are checks to see if the file exists from what I can tell) =
but results in a new line in the CVS\Entries folder for your file which =
should look like:
/foo.cs/0/dummy timestamp//
I will have more time to look into this tonight. =20
Cheers,
Clayton
-----Original Message-----
From: Thomas Guillemin [mailto:tg...@ja...]
Sent: Thu 12/16/2004 1:47 AM
To: Clayton Harbour
Cc: sha...@li...
Subject: Re: [Sharpcvslib-users] Simple question
Hi Clayton
Did you receive my last mail with the sample attached ? I've sent it to=20
your sporadicism address because of the size and the attached file.
As an additional information about it, i get something strange, and in=20
fact i think that comes from my program: i've manually created another=20
module, checked out, commited. Then i try the 'validate' part of my app, =
and i get cvs server: Up-to-date check failed for `Index.xml', as with=20
my other module. Knowing that i start with a newly commited directory,=20
then only index.xml is modified, then it is commited, and this is where=20
i get the cvs error. Here is my cvs dialog (after the rlog command):
REQUEST: [UseUnchanged]
--> []
REQUEST: [Root /CVSRep]
--> []
REQUEST: [Global_option -q]
--> []
REQUEST: [Argument -m]
--> []
REQUEST: [Argument LOG MESSAGE]
--> []
REQUEST: [Argument --]
--> []
REQUEST: [Directory .]
--> [/CVSRep/Test2]
--> []
REQUEST: [Entry /Index.xml/0///]
--> []
REQUEST: [Modified Index.xml]
--> [u=3Drw,g=3Drw,o=3Drw]
--> []
REQUEST: [Directory .]
--> [/CVSRep/Test2]
--> []
REQUEST: [Argument Index.xml]
--> []
REQUEST: [ci]
--> []
ERROR: cvs server: E cvs server: Up-to-date check failed for `Index.xml'
RESPONSE: cvs server: Up-to-date check failed for `Index.xml'
- ( ErrorMessageResponse )ERROR: cvs server: E cvs [server aborted]:=20
correct above errors first!
RESPONSE: cvs [server aborted]: correct above errors first!
- ( ErrorMessageResponse )ERROR: cvs server: M=20
If you have any idea...
Thomas
Clayton Harbour wrote:
> Hi Thomas,
> =20
> It looks like you are reading in the entire CVS\Entries file using the =
> TextReader. This file will definitely give you too many '/'=20
> characters as it is made up of many Entry objects. Try using the=20
> following:
> Entry entry =3D Entry.CreateEntry(FileInfo managedFile);
> =20
> where the managedFile is the file on your local file system that you=20
> want to add to the repository. If that does not work can you please=20
> send the following:
> 1) fi.FullName
> 2) contents of fi.FullName file that you are trying to read.
> =20
> =20
> Cheers,
> =20
> Clayton
>
> -----Original Message-----
> *From:* Thomas Guillemin [mailto:tg...@ja...]
> *Sent:* December 13, 2004 10:18 AM
> *To:* Clayton Harbour
> *Cc:* sha...@li...
> *Subject:* Re: [Sharpcvslib-users] Simple question
>
> Hi Clayton
>
> I'm not sure of how to set the FileInfo object.
> Here is what i do to replace vpath by a FileInfo (first line and
> last line are the same so you can replace it in the precedent code
> part):
> Entries entries =3D Entries.Load(dir);
> FileInfo fi =3D new FileInfo(vpath);
> TextReader tr =3D fi.OpenText();
> string fstr =3D tr.ReadToEnd();
> Entry entry =3D new Entry(fi, fstr);
> folder.Entries.Add(pathdir, entry);
>
> And here is what i get from execution: (message is in french but
> that's ok)
> Une exception non g=E9r=E9e du type
> 'ICSharpCode.SharpCvsLib.FileSystem.EntryParseException' s'est
> produite dans icsharpcode.sharpcvslib.dll
>
> Informations suppl=E9mentaires : Too many tokens in entry
> line.tokens.Length=3D[34]line=3D[<?xml version=3D"1.0" =
encoding=3D"utf-8" ?>
> <Revision_Index>
> <FileList>
> <Filename>Test/App.config</Filename>
> <Revision>1.4</Revision>
> </FileList>
> <FileList>
> <Filename>Test/AssemblyInfo.cs</Filename>
> <Revision>1.1</Revision>
> </FileList>
> <FileList>
> <Filename>Test/Index.txt</Filename>
> <Revision>1.10</Revision>
> </FileList>
> <FileList>
> <Filename>Test/Index.xml</Filename>
> <Revision>1.9</Revision>
> </FileList>
> <FileList>
> <Filename>Test/Member.cs</Filename>
> <Revision>1.5</Revision>
> </FileList>
> <FileList>
> <Filename>Test/Pack.xml</Filename>
> <Revision>1.3</Revision>
> </FileList>
> <FileList>
> <Filename>Test/doc.xml</Filename>
> <Revision>1.5</Revision>
> </FileList>
> <FileList>
> <Filename>Test/docVPFW.xml</Filename>
> <Revision>1.4</Revision>
> </FileList>
> </Revision_Index>]
>
> So i don't really know the way i should do it.
> Does that ring anything for you ?
>
> Thanks
> Thomas
>
> Clayton Harbour wrote:
>
>> Hi Thomas,
>> =20
>> I think you are correct the commandline option would be uglier.=20
>> Further I think that what you have found here is a break of some
>> sort and should be fixed. Having said that I believe that vpath
>> is a string, am I correct? If a string is passed in the
>> application will try to "guess" if the string is a File or
>> Directory. I have added methods for most parts of the API to
>> take either a FileInfo or DirectoryInfo object. Could you try
>> changing your vpath to a FileInfo object (and use
>> FileInfo.FullPath fo the folders Hashtable) and let me know if
>> that gets you by the latest challenge? I will look into the
>> actual cause of the break tonight.
>> =20
>> =20
>> Cheers,
>> =20
>> Clayton
>>
>> -----Original Message-----
>> *From:* Thomas Guillemin [mailto:tg...@ja...]
>> *Sent:* December 13, 2004 2:32 AM
>> *To:* Clayton Harbour
>> *Cc:* sha...@li...
>> *Subject:* Re: [Sharpcvslib-users] Simple question
>>
>> Hi
>>
>> The recent changes seem to have deeply changed the whole
>> behaviour. First, the first part that was working quite fine
>> now generates a file not found exception ; it looks for
>> d:\dev\CVSTest\Test\Index.xml\CVS (still with that part of
>> the code:
>> DirectoryInfo dir =3D new
>> DirectoryInfo(Path.Combine(pathdir, "CVS"));
>> FileInfo reposfile =3D new FileInfo(pathdir +
>> "\\CVS\\Repository");
>> Folder folder =3D new Folder();
>> folder.Repository =3D =
Repository.Load(reposfile);
>> Entries entries =3D Entries.Load(dir);
>> Entry entry =3D entries[vpath];
>> folder.Entries.Add(pathdir, entry);
>> wd.Folders.Add(pathdir, folder);
>> cnx =3D new CVSServerConnection(wd);
>> RegisterListenEvents(cnx);
>> cnx.Connect(wd, userpass);
>> CommitCommand2 cmd2 =3D new =
CommitCommand2(wd);
>> cmd2.Execute(cnx);
>> cnx.Close();
>> knowing that pathdir =3D d:\dev\CVSTest\Test\, and vpath =3D
>> d:\dev\CVSTest\Test\Index.xml)
>> Any recommandation ? i'm not sure of what i should change or
>> not change, now i feel like i understand the mechanism less
>> and less...
>> And for the second part (i'm currently on it so maybe i will
>> find more today) i do:
>> cnx =3D new CVSServerConnection(wd);
>> cnx.Connect(wd, userpass);
>> RegisterListenEvents(cnx);
>> UpdateCommand2 cmd =3D new =
UpdateCommand2(wd);
>> cmd.Execute(cnx);
>> and nothing appears in my textbox (knowing that
>> registerlistenevents starts the requests, responses and
>> errors listening and that no internal error appears, every
>> line is passed fine in trace mode). What do you think ?
>>
>> For your information, i'm working here until 24/12, then i
>> quit. I'd like to give them something finished as for my
>> other works ; and i also would like to send you this app that
>> could be an example of how to use your lib. So if we can't be
>> done for this date, i'm not sure of when i'll finish it,
>> because i'm not sure of when i'll be programming again at
>> all. And i'm also thinking that if you keep changing elements
>> of the base structure after that, which is much probable, my
>> example won't be of any use anymore, so, maybe i could just
>> replace the stuff by a command-line maker that would do what
>> i want, that's ugly, but tell me what you think.
>>
>> Thomas
>>
>> Clayton Harbour wrote:
>>
>>> Hi Thomas,
>>> =20
>>> I agree with making the Folders object the default. When I
>>> move the Property I will make the accessor a Folders object
>>> (which is backed by a Hashtable, but implements
>>> ICollection). That is going to take awhile because I would
>>> like to refactor all commands to have something like
>>> that...and won't be in right away. For the immediate I will
>>> try to make sure changing the Folders and FoldersToUpdate to
>>> use the same variable under the covers which should
>>> accomplish some of what you need.
>>> =20
>>> Adding the -A should be rather simple. If you look at the
>>> Tag property it is basically like you describe below. As
>>> far as I remember the remove sticky tags always operates on
>>> an enumeration of files (i.e. we are unable to pick and
>>> choose which file to remove stickies unless you execute the
>>> command more than once). So it should make sense to set the
>>> -A (on requested) for the group of folders in the
>>> FoldersToUpdate...hopefully I am making sense here :-). I
>>> will try to get this in tonight if I have time, I have added
>>> it as issue ( 1082691 ).
>>> =20
>>> =20
>>> Cheers,
>>> =20
>>> Clayton
>>>
>>> -----Original Message-----
>>> *From:* Thomas Guillemin [mailto:tg...@ja...]
>>> *Sent:* December 9, 2004 7:43 AM
>>> *To:* Clayton Harbour
>>> *Cc:* sha...@li...
>>> *Subject:* Re: [Sharpcvslib-users] Simple question
>>>
>>> yeah that's great.
>>> i'll have to wait for the cvs changes ; btw i think you
>>> should also transform the class of FoldersToUpdate: it
>>> is a Folder[], so one can't use the Add method, while
>>> Folders is a FileSystem.Folders object (which is, i
>>> guess, some kind of an ArrayList right ?) which is way
>>> more easy to use for our purposes.
>>> Another issue i'm thinking of is the sticky tags
>>> thing... Personnally, when i want to remove some tags i
>>> just type an 'update -A' command... but here for some
>>> people it could be harmful. For the moment, i think the
>>> easiest way would be to add a special property to the
>>> updatecommand class, so that people would only use it
>>> when needed... but there could be different
>>> possibilities (and i don't know cvs enough to be able to
>>> enumerate them).
>>> What do you think ?
>>>
>>> Thomas
>>>
>>> Clayton Harbour wrote:
>>>
>>>>Hi Thomas,
>>>>
>>>>Yeah, that is a bit of ugliness. The whole Folders/ FoldersToUpdate =
needs to be reworked actually. The basic idea was to store an entire =
list of the CVS Entries Folders in the Folders property and then filter =
that and put it in the FoldersToUpdate property. I have filed a bug on =
this (1082194) and the simple solution will probably be to just make the =
two properties equal if there are no issues anywhere else in the =
library. =20
>>>>
>>>>In the meantime though if you populate the FoldersToUpdate Property =
instead that should fix your issue.
>>>>
>>>>I have also added a check to see if the FoldersToUpdate is null and =
if so the method just returns which is better than the NullPointer.
>>>>
>>>>
>>>>Cheers,
>>>>
>>>>
>>>>Clayton
>>>>
>>>>-----Original Message-----
>>>>From: Thomas Guillemin [mailto:tg...@ja...]
>>>>Sent: Thu 12/9/2004 3:42 AM
>>>>To: Clayton Harbour
>>>>Cc: sha...@li...
>>>>Subject: Re: [Sharpcvslib-users] Simple question
>>>>hi hi
>>>>thanks for that you're great clayton, now my committing function =
seems=20
>>>>to work fine.
>>>>Now i'm still having problems with my update function, which begins =
with=20
>>>>the update of one file (still the index.xml):
>>>>if (File.Exists(IndexPath))
>>>> {
>>>> string pathdir =3D vpath.Substring(0,=20
>>>>IndexPath.LastIndexOf("\\"));
>>>> string wdirname =3D pathdir.Substring(0,=20
>>>>pathdir.LastIndexOf("\\"));
>>>>
>>>> string reldirname =3D=20
>>>>pathdir.Substring(pathdir.LastIndexOf("\\")+1, pathdir.Length -=20
>>>>pathdir.LastIndexOf("\\")-1);
>>>> // We update the index file to the desired revision
>>>> // (the last one by default)
>>>> wd =3D new WorkingDirectory(cvsroot, wdirname, =
reldirname);
>>>> if (Revision !=3D "" && Revision !=3D "Last =
Version")
>>>> {
>>>> wd.Revision =3D Revision;
>>>> }
>>>> DirectoryInfo dir =3D new=20
>>>>DirectoryInfo(Path.Combine(pathdir, "CVS"));
>>>> FileInfo reposfile =3D new FileInfo(pathdir +=20
>>>>"\\CVS\\Repository");
>>>> Folder folder =3D new Folder();
>>>> folder.Repository =3D Repository.Load(reposfile);
>>>> Entries entries =3D Entries.Load(dir);
>>>> Entry entry =3D entries[vpath];
>>>> folder.Entries.Add(pathdir, entry);
>>>> wd.Folders.Add(pathdir, folder);
>>>> =
//Debug.WriteLine(wd.FoldersToUpdate.Length.ToString());
>>>> cnx =3D new CVSServerConnection(wd);
>>>> cnx.Connect(wd, userpass);
>>>> RegisterListenEvents(cnx);
>>>> UpdateCommand2 cmd =3D new UpdateCommand2(wd);
>>>> cmd.Execute(cnx);
>>>>
>>>>It crashes on UpdateCommand2.Execute(): =20
>>>>workingDirectory.FoldersToUpdate is NULL and so i get a=20
>>>>nullreferenceexception...
>>>>Do you know how i must proceed ?
>>>>
>>>>Thomas
>>>>
>>>>Clayton Harbour wrote:
>>>>
>>>> =20
>>>>
>>>>>Hi Thomas, just checking back in if you are still having an issue =
with this. I have been looking at the error message below and it looks =
like the Repository folder may have an extra empty line near the end. I =
added a trim on December 3rd that might take care if this if you could =
try it again.
>>>>>
>>>>>Cheers,
>>>>>
>>>>>Clayton
>>>>>
>>>>>
>>>>>-----Original Message-----
>>>>>From: Thomas Guillemin [mailto:tg...@ja...]
>>>>>Sent: Mon 12/6/2004 7:43 AM
>>>>>To: Clayton Harbour
>>>>>Cc: sha...@li...
>>>>>Subject: Re: [Sharpcvslib-users] Simple question
>>>>>i'm using the lib, updated last week (i'm waiting for sourceforge =
to be=20
>>>>>up again and i'll update then), so no cvs.exe, and the server is a =
cvsnt=20
>>>>>on windows xp, :pserver:.
>>>>>I was only listening to response events, not the request ones. I =
have=20
>>>>>added it, and here is what i get from my TextBox now:
>>>>>REQUEST: [Valid-responses ok error Valid-requests Checked-in =
New-entry=20
>>>>>Updated Created Merged Mod-time Removed Set-static-directory=20
>>>>>Clear-static-directory Set-sticky Clear-sticky Module-expansion M E =
MT]
>>>>> --> []
>>>>>REQUEST: [valid-requests]
>>>>> --> []
>>>>>RESPONSE: Root Valid-responses valid-requests Directory Max-dotdot=20
>>>>>Static-directory Sticky Entry EntryExtra Kopt Checkin-time Modified =
>>>>>Is-modified UseUnchanged Unchanged Notify NotifyUser Questionable =
Utf8=20
>>>>>Argument Argumentx Global_option Gzip-stream =
wrapper-sendme-rcsOptions=20
>>>>>Set Rename VirtualRepository expand-modules ci co chown setowner =
setperm=20
>>>>>chacl setacl lsacl passwd info update diff log rlog add remove=20
>>>>>update-patches status ls rdiff tag rtag import admin export history =
>>>>>release watch-on watch-off watch-add watch-remove watchers editors =
init=20
>>>>>annotate rannotate noop version Rootless-stream-modification=20
>>>>>Kerberos-encrypt Gssapi-encrypt Protocol-encrypt =
Gssapi-authenticate=20
>>>>>Protocol-authenticate read-cvsrc read-cvsrc2 read-cvsignore=20
>>>>>read-cvswrappers Error-If-Reader Valid-RcsOptions
>>>>>- ( ValidRequestsResponse )REQUEST: [UseUnchanged]
>>>>> --> []
>>>>>REQUEST: [Root /CVSRep]
>>>>> --> []
>>>>>REQUEST: [Global_option -q]
>>>>> --> []
>>>>>REQUEST: [Argument -m]
>>>>> --> []
>>>>>REQUEST: [Argument LOG MESSAGE]
>>>>> --> []
>>>>>REQUEST: [Argument --]
>>>>> --> []
>>>>>REQUEST: [Directory .]
>>>>> --> [/CVSRep/Test
>>>>>]
>>>>> --> []
>>>>> --> []
>>>>>REQUEST: [Entry /Index.xml/1.6/Mon Dec 6 16:32:25 2004+Fri Dec 3=20
>>>>>12:03:15 2004//T1.6]
>>>>> --> []
>>>>>REQUEST: [Modified Index.xml]
>>>>> --> [u=3Drw,g=3Drw,o=3Drw]
>>>>> --> []
>>>>>REQUEST: [Directory .]
>>>>> --> [/CVSRep/Test
>>>>>]
>>>>> --> []
>>>>> --> []
>>>>>REQUEST: [Argument Index.xml]
>>>>> --> []
>>>>>REQUEST: [ci]
>>>>> --> []
>>>>>ERROR: cvs server: M unrecognized request `'
>>>>>
>>>>>does that put some light on the scene ?
>>>>>
>>>>>Clayton Harbour wrote:
>>>>>
>>>>>=20
>>>>>
>>>>> =20
>>>>>
>>>>>>Which version of the client are you using Thomas? Also which =
version=20
>>>>>>of server are you connecting to? If you are using the code from =
cvs=20
>>>>>>could you do an update, sometimes it takes a while for =
sourceforge's=20
>>>>>>development cvs server to replicate to the anonymous server. Also =
>>>>>>verify that you are handling the following events:
>>>>>> serverConn.RequestMessageEvent +=3D
>>>>>> new MessageEventHandler(Writer.WriteLine);
>>>>>> serverConn.ResponseMessageEvent +=3D
>>>>>> new MessageEventHandler(Writer.WriteLine);
>>>>>>
>>>>>>This will print out all requests and responses. What I am =
suspecting=20
>>>>>>is that there is a CaseRequest being sent that the server does not =
>>>>>>like...at least that was an issue I came across l week. Let me =
know=20
>>>>>>what you find out.
>>>>>>
>>>>>>
>>>>>>Cheers,
>>>>>>
>>>>>>Clayton
>>>>>>
>>>>>> -----Original Message-----
>>>>>> *From:* Thomas Guillemin [mailto:tg...@ja...]
>>>>>> *Sent:* December 6, 2004 1:53 AM
>>>>>> *To:* Clayton Harbour
>>>>>> *Cc:* sha...@li...
>>>>>> *Subject:* Re: [Sharpcvslib-users] Simple question
>>>>>>
>>>>>> hm, it behaves exactly the same with this line instead.
>>>>>> and i still get [cvs server: M unrecognized request `'] in the =
end...
>>>>>>
>>>>>> Clayton Harbour wrote:
>>>>>>
>>>>>> =20
>>>>>>
>>>>>> =20
>>>>>>
>>>>>>> Hi Thomas,
>>>>>>> =20
>>>>>>> I think this line:
>>>>>>> FileInfo file =3D new FileInfo(pathdir + \\CVS =
<file://%5C%5CCVS>);
>>>>>>> should be:
>>>>>>> DirectoryInfo dir =3D new =
DirectoryInfo(Path.Combine(pathdir,
>>>>>>> "CVS");
>>>>>>> =20
>>>>>>> I am surprised that you don't get an error when you do an
>>>>>>> Entries entries =3D Entries.Load(file);
>>>>>>> =20
>>>>>>> There is no CvsFileNotFoundException being thrown? Are you =
sure
>>>>>>> you are not trapping this error silently?
>>>>>>> =20
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> *From:* Thomas Guillemin [mailto:tg...@ja...]
>>>>>>> *Sent:* December 2, 2004 8:12 AM
>>>>>>> *To:* Clayton Harbour
>>>>>>> *Cc:* sha...@li...
>>>>>>> *Subject:* Re: [Sharpcvslib-users] Simple question
>>>>>>>
>>>>>>> mh i'm not sure to understand...
>>>>>>> here is my code:
>>>>>>>
>>>>>>> (...stuff...)
>>>>>>> wd =3D new WorkingDirectory(CVSRoot, wdirname, =
reldirname);
>>>>>>> cnx =3D new CVSServerConnection(wd);
>>>>>>> cnx.Connect(wd, userpass);
>>>>>>> (...stuff...)
>>>>>>> then:
>>>>>>> pathdir is the full local dir path where the file i want =
to
>>>>>>> commit is stored (ie: D:\Dev\CVSTest\Test\)
>>>>>>> vpath is the path for the file (ie:
>>>>>>> D:\Dev\CVSTest\Test\Index.xml)
>>>>>>>
>>>>>>> wd.Folders.Clear();
>>>>>>> FileInfo file =3D new FileInfo(pathdir + =
"\\CVS");
>>>>>>> FileInfo reposfile =3D new =
FileInfo(pathdir +
>>>>>>> "\\CVS\\Repository");
>>>>>>> Folder folder =3D new Folder();
>>>>>>> folder.Repository =3D =
Repository.Load(reposfile);
>>>>>>> Entries entries =3D Entries.Load(file);
>>>>>>> Entry entry =3D entries[vpath];
>>>>>>> folder.Entries.Add(pathdir, entry);
>>>>>>> wd.Folders.Add(pathdir, folder);
>>>>>>> cnx =3D new CVSServerConnection(wd);
>>>>>>> cnx.Connect(wd, userpass);
>>>>>>> CommitCommand2 cmd2 =3D new =
CommitCommand2(wd);
>>>>>>> cmd2.Execute(cnx);
>>>>>>> cnx.Close();
>>>>>>>
>>>>>>> it makes no error, but no message at all in my textbox =
(where
>>>>>>> i print errors and responses as well).
>>>>>>> do you think this will work at all, and commit only the =
file
>>>>>>> i want ? (Index.xml)
>>>>>>>
>>>>>>> btw, i have to do exactly the same (with the revision =
number
>>>>>>> for the specified file added) for updating some files.
>>>>>>>
>>>>>>> Clayton Harbour wrote:
>>>>>>>
>>>>>>> =20
>>>>>>>
>>>>>>> =20
>>>>>>>
>>>>>>>>Hi Thomas,
>>>>>>>>
>>>>>>>>The code would look something like this:
>>>>>>>> Folder folder =3D new Folder();
>>>>>>>> Entries entries =3D new Entries.Load(file);
>>>>>>>> Entry entry =3D entries[file];
>>>>>>>> Folder.Entries.Add(entry);
>>>>>>>> WorkingDirectory wd.Folders.Add(folder);
>>>>>>>>
>>>>>>>>I have not compiled this code so you may have to play with it =
somewhat.
>>>>>>>>The basic idea is that you have to populate the Folders object =
on the
>>>>>>>>working directory with the Entry you want to update.
>>>>>>>>
>>>>>>>>
>>>>>>>>Cheers,
>>>>>>>>
>>>>>>>>Clayton
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> =20
>>>>>>>>
>>>>>>>> =20
>>>>>>>>
>>>>>>>>>-----Original Message-----
>>>>>>>>>From: Thomas Guillemin [mailto:tg...@ja...]=20
>>>>>>>>>Sent: December 2, 2004 5:45 AM
>>>>>>>>>To: sha...@li...
>>>>>>>>>Subject: [Sharpcvslib-users] Simple question
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>Hi
>>>>>>>>>Can someone show me how i must proceed to update/commit only=20
>>>>>>>>>one file ?=20
>>>>>>>>>(with UpdateCommand2/CommitCommand2)
>>>>>>>>>Thanks
>>>>>>>>>
>>>>>>>>>Thomas
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>-------------------------------------------------------
>>>>>>>>>SF email is sponsored by - The IT Product Guide
>>>>>>>>>Read honest & candid reviews on hundreds of IT Products from=20
>>>>>>>>>real users. Discover which products truly live up to the=20
>>>>>>>>>hype. Start reading now.=20
>>>>>>>>>http://productguide.itmanagersjournal.com/
>>>>>>>>>_______________________________________________
>>>>>>>>>Sharpcvslib-users mailing list =
Sha...@li...
>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/sharpcvslib-users
>>>>>>>>>
>>>>>>>>> =20
>>>>>>>>>
>>>>>>>>> =20
>>>>>>>>>
>>>>>>>>> =20
>>>>>>>>>
>>>>>>>>-------------------------------------------------------
>>>>>>>>SF email is sponsored by - The IT Product Guide
>>>>>>>>Read honest & candid reviews on hundreds of IT Products from =
real users.
>>>>>>>>Discover which products truly live up to the hype. Start reading =
now.=20
>>>>>>>>http://productguide.itmanagersjournal.com/
>>>>>>>>_______________________________________________
>>>>>>>>Sharpcvslib-users mailing list
>>>>>>>>Sha...@li...
>>>>>>>>https://lists.sourceforge.net/lists/listinfo/sharpcvslib-users
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> =20
>>>>>>>>
>>>>>>>> =20
>>>>>>>>
>>>>>=20
>>>>>
>>>>> =20
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>-------------------------------------------------------
>>>>SF email is sponsored by - The IT Product Guide
>>>>Read honest & candid reviews on hundreds of IT Products from real =
users.
>>>>Discover which products truly live up to the hype. Start reading =
now.=20
>>>>http://productguide.itmanagersjournal.com/
>>>>_______________________________________________
>>>>Sharpcvslib-users mailing list
>>>>Sha...@li...
>>>>https://lists.sourceforge.net/lists/listinfo/sharpcvslib-users
>>>>
>>>> =20
>>>>
|