a blog post from me about refactoring Modification class

1 view
Skip to first unread message

David Cameron

unread,
Jul 7, 2009, 8:03:11 AM7/7/09
to ccnet...@googlegroups.com
Been thinking about this for a while. Finally wrote something down:
http://intwoplacesatonce.com/2009/07/introducing-a-changeset-class-to-cruisecontrol-net-why/

Let me know what you think. We should discuss here on the mailing list
to get the best exposure to the current maintenance team. I'm guessing
I should make the changes on a branch, with 1.5 coming up soon.

Dave Cameron - http://intwoplacesatonce.com
CruiseControl.NET - http://ccnet.thoughtworks.com

JohnM

unread,
Jul 7, 2009, 12:38:07 PM7/7/09
to ccnet-devel
With the 1.5 version are we close to stopping new features and
focusing on fixes for a release?

Is the time frame still the latter part of the year for 1.5?

Thanks,

John

On Jul 7, 8:03 am, David Cameron <dave...@gmail.com> wrote:
> Been thinking about this for a while. Finally wrote something down:http://intwoplacesatonce.com/2009/07/introducing-a-changeset-class-to...

Steve

unread,
Jul 7, 2009, 6:45:11 PM7/7/09
to ccnet-devel
First, thanks for the blog post, much appreciated!

FWIW, it appears this change will heavily affect my code. I have
written numerous Source Control Providers for things such as querying
a DB, an FTP server and web services. I've also created descendents of
Modification to include additional data I needed within subsequent
tasks to process information accordingly.

I'm not against the changes described per se but I'm hoping it will be
well documented as to what changes need to be made to upgrade one's
code.

Has backwards compatibility been considered in this case?

As I've read through at least some of the major changes coming in v1.5
particularly regarding backwards compatibility I'll admit it's really
looking like this next release could actually stall some users (like
myself) on the v1.4.x codebase since I have a lot of custom plugins.
It's looking more and more like v1.5 may be reaching a point beyond a
single 0.x point release difference.

-Steve

On Jul 7, 5:03 am, David Cameron <dave...@gmail.com> wrote:
> Been thinking about this for a while. Finally wrote something down:http://intwoplacesatonce.com/2009/07/introducing-a-changeset-class-to...
>
> Let me know what you think. We should discuss here on the mailing list
> to get the best exposure to the current maintenance team. I'm guessing
> I should make the changes on a branch, with 1.5 coming up soon.
>

David Cameron

unread,
Jul 8, 2009, 12:18:45 AM7/8/09
to ccnet...@googlegroups.com
Hi Steve

I have been thinking about backwards compatibility. I'm not keen to
update all the sourcecontrol providers myself! I'm hoping that by
having any new objects implement interfaces that are compatible with
the old objects, and by using adapters, this can be introduced without
*requiring* changes to any existing custom code. In other words,
hopefully it can be an opt-in thing to be implemented where and when
it makes sense to. More on how I think that can be accomplished in the
next blog post...

I had not considered people subclassing Modfication. That is an
important thing to consider though. I had always thought that the
Modification[] returned from the SourceControl implementation should
be preserved, but I thought it might be copied around a bit.
Subclasses suggest it should be preserved absolutely as-is, as far as
possible.

David Cameron

unread,
Jul 8, 2009, 12:20:36 AM7/8/09
to ccnet...@googlegroups.com
On Wed, Jul 8, 2009 at 2:38 AM, JohnM<john....@gmail.com> wrote:
>
> With the 1.5 version are we close to stopping new features and
> focusing on fixes for a release?
>
> Is the time frame still the latter part of the year for 1.5?

To be honest I am not completely sure. I was hoping to hear back from
Ruben, Craig and so on about that. I was interpreting the CTP as an
indication that a final release from that code-line was the next goal.
Changing central parts of the object model wouldn't seem to move us
towards that goal!

Craig & Sammi Sutherland

unread,
Jul 8, 2009, 1:02:30 AM7/8/09
to ccnet...@googlegroups.com
Hi Dave and John,

Yes, we are trying to stop new features and focus on getting
CruiseControl.NET 1.5.0 ready for a formal release. We need to do a SP2 for
1.4.4 to tidy up a couple of critical issues that were found after the
release. Hopefully, we'll also be able to release the CTP of 1.5.0 around
the same time - but that more depends on when somebody can do the actual
release.


Craig

Craig & Sammi Sutherland

unread,
Jul 8, 2009, 1:11:33 AM7/8/09
to ccnet...@googlegroups.com
Hi Steve,

Yes, there are a number of significant changes from 1.4.x to 1.5.0, but most
of them do not affect the core functionality of CruiseControl.NET. Where
possible, we have tried to not modify the interfaces, so hopefully all that
is needed is to recompile your extensions against the new 1.5.0 binaries and
all should be good - with maybe one or two exceptions (like we changed
LastChangeNumber on IIntegrationResult from an int to a string).

Are you able to try and compile your extensions against the 1.5.0 binaries
and tell us of any errors? Otherwise, it is going to be challenging to try
and find all the breaking changes :-(

There was some discussion around whether the next release would be 1.5 or
2.0, but no formal decision was made and most people were calling it 1.5, so
that's the label that stuck.


Craig

-----Original Message-----
From: ccnet...@googlegroups.com [mailto:ccnet...@googlegroups.com] On
Behalf Of David Cameron
Sent: Wednesday, 8 July 2009 4:19 p.m.
To: ccnet...@googlegroups.com
Subject: [ccnet-devel] Re: a blog post from me about refactoring
Modification class

Ruben Willems

unread,
Jul 8, 2009, 2:31:20 AM7/8/09
to ccnet...@googlegroups.com
Hi

I read the post but did not have time yet to properly reply, but here's a shot.

Changesets are indeed nice, I think svn and tfs are really going to benefit, maybe perforce to.
Only thing I'm concerned with is backwards compatibility, like Steve mentions.
We can not remove the Modification class, since there are still source control providers that work on file base
vss for instance. And yes, there are still people who use this dinosaur, (me included :-( )

But is it not possible to add changesets without removing the Modification?
--> the Integration result keeps the Modification Array, but also gets a new ChangeSetArray
     for VSS this is null, for svn this could be build up.
    So it is the responsibility of the source control provider to create the changeset
    a small code example is on the blog of Dave, this could go in a helper class that would be called by the source control in question.

I think this would maintain backwards compatibility, and benefit more modern source control systems.



with kind regards
Ruben Willems

David Cameron

unread,
Jul 9, 2009, 6:18:31 AM7/9/09
to ccnet...@googlegroups.com
Hi,

I've made the first set of changes on a branch in Mercurial.
(Subversion is pretty much unusably slow these days for me.)

I have blogged about the changes at:
http://intwoplacesatonce.com/2009/07/introducing-a-changeset-class-to-cruisecontrol-net-shifting-to-supertypes/

And the changes themselves are visible on bitbucket:
http://bitbucket.org/davcamer/ccnet/changeset/c6ae81ea556f/

In terms of backwards compatibility, implementers of ISourceControl
would need to change the signature of their GetModifications methods.
Everything else could stay the same at this point.

Reply all
Reply to author
Forward
0 new messages