CCNet vaultplugin and modificationWriter

If you are having a problem using Vault, post a message here.

Moderator: SourceGear

Post Reply
tstafney
Posts: 5
Joined: Mon Jul 24, 2006 11:44 am
Contact:

CCNet vaultplugin and modificationWriter

Post by tstafney » Thu Jun 26, 2008 1:00 pm

We use CCNet as our integration server. We had been using v1.3. Our build scripts rev our product versioninfo files. Using either a build task or a publisher task in CCNet a vault COMMIT would randomly fail (I suspect due to a cache conflict between "actual vault" and the default CCNet Vault Source Control Block. Ok, you all have provided a "new and improved" source control block. We moved to that one and now we cannot use the <modificationWriter> CCNet element. Your new vaultplugin aborts immediately after getting the latest source. Your new vaultplugin does copious logging - normally. But alas, there is NO debug loggin information on this one.

The problem is remedied by removing the modificationWriter element. But we NEED the modificationWriter for our build. Anyway, after a TREMENDOUS amount of investigation which included using Lutz Roeder's Reflector to disassemble your vaultplugin and tediously comb the source I have found a flaw that prohibits your plugin from working properly when modificationWriter is use:

ccnet.fortressvault.plugin.FortressModification is marked Friend. That class derives from ThoughtWorks.CruiseControl.Core.Modification which is used by the modificationWriter. I believe CCNet is using reflection to discover/create instances of this type - which throws an access exception because it is not publicly creatable.

Boy it'd be nice if that were fixed

Er, actually I fixed it in my disassembled version - but when recompiled I cant seem to get a list of repositories. Anyway, SIMPLE fix. And it would unblock any folks out there whose build scripts try to parse the change log generated by CCNet!

regards,
t

shannon

Post by shannon » Thu Jun 26, 2008 1:22 pm

There is no Friend in C# but it's probably been marked internal by default. We'll log a bug and get it changed to public.

tstafney
Posts: 5
Joined: Mon Jul 24, 2006 11:44 am
Contact:

Post by tstafney » Thu Jun 26, 2008 2:07 pm

friend, internal... shared, static... (), []... C'mon cut me a LITTLE slack. Everybody knows multi-lingual folk toss elements from language A into a conversation spoken using language B ;)

Now that I think about it... What does it matter? I deconstructed your assembly - taking it from MSIL back down into code. I could have chosen to reconstitute it into VB, C# or any other supported vernacular. Not my fault Reflector defaulted to VB. The point is I did 4 hours of debugging on SourceGear binaries that resulted in (what I'm fairly sure is) a neatly packaged solution to a rather large integration incompatibility in one of your products (albeit an somewhat unsupported/opensource product). I did not ask for accolades nor compensation. In fact I asked for Nothing (though it seems I should have asked for null) except the implementation of the fix. What DID I get? A terse response pointing out what for all intents and purposes, amounts to a spelling error. Nice. But at least we all now know that you wrote this plugin in C#.

Anyway, thank you for the prompt response. I eagerly await the next version.

pip pip,
t

shannon

Post by shannon » Thu Jun 26, 2008 2:25 pm

I wasn't berating you, by any means, I suppose the comment stemmed from my confusion as to how you got Friend anyway :-) I'm sorry for the trouble we caused you by overlooking an obviously simple thing that cause you a big problem. I've made the change, if you'll send an email to shannon at sourcegear dot com I'd be happy to send you a link to a pre-release build as soon as I've got one.

Post Reply