History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: CCNET-1188
Type: New Feature New Feature
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Bill Barry
Votes: 2
Watchers: 5
Operations

If you were logged in you would be able to see more operations.
CruiseControl .NET

Mercurial support

Created: 26/Jun/08 09:24 AM   Updated: 01/Nov/08 06:18 AM
Component/s: Source Control
Affects Version/s: None
Fix Version/s: None

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
File Attachments: 1. File hg.diff (92 kb)
2. File hg2.diff (52 kb)

Issue Links:
Relationship
This issue Relates to:
CCNET-1230 CCNET should support source control s... Major Open
 


 Description  « Hide
I need Mercurial support in CCNET because we are switching from svn to hg, so I wrote it...
Initial patch coming, still needs documentation (not exactly certain where to write that).

 All   Comments   Work Log   Change History      Sort Order:
Bill Barry [26/Jun/08 09:32 AM]
Here is a patch against revision 3936.
It adds a new folder containing the new Mercurial namespace and classes, as well as a modification to the Modification class and a CreateDirectory utility function (which could probably be included as part of the filesystem interface but I didn't want to include a refactoring session with this patch).

Ross Patterson [26/Jun/08 11:24 AM]
Before the development team can merge in your submission, you need to accept the Contriibutors License Agreement (http://confluence.public.thoughtworks.org/display/CCNET/Contributor+License+Agreement). Please send a note to ccnet@thoughtworks.com with a copy to the ccnet-devel list (ccnet-devel@googlegroups.com) stating your acceptance and we'll take a look at it.

Ross Patterson [26/Jun/08 11:26 AM]
"Mercurial" is a relatively new open source distributed version control system. See http://www.selenic.com/mercurial/wiki/ for more details, and http://hgbook.red-bean.com/hgbook.html for doc.


Ross Patterson [30/Jun/08 12:43 PM]
Thanks, sorry about that. The team of currently active developers doesn't have a good list of who has and hasn't accepted it.

Ross Patterson [29/Jul/08 09:32 PM]
"still needs documentation (not exactly certain where to write that)"

Take the documentation for AccuRev, Subversion, or ClearCase as an example, write it up, and attach it here. Don't worry about formatting, we'll handle that when we check it in.

Ross Patterson [30/Jul/08 04:06 PM]
I'm not thrilled with using the abbreviation "hg" for "Mercurial" - I know where it comes from, but it's a little obtuse.

Daniel Hommel [30/Jul/08 04:26 PM]
A lot of mercurial related stuff is using "hg" as abbreviation (e.g. hgsvn, TortoiseHg), but i think naming the plugin "mercurial" should not be a problem. To me both names are good.

Ross Patterson [30/Jul/08 04:26 PM]
OK, I've got this all ready to go. Just waiting on documentation.

Bill Barry [30/Jul/08 09:45 PM]
I've been so busy this past month :( Maybe I might have some time this weekend for writing the documentation.

Ross Patterson [15/Aug/08 08:12 AM]
I'm concerned about the external effects of subclassing the Modification object and Mercurial's SHA-1 "change numbers". I'll take this up on the ccnet-devel list and see what we can hash out. Something has to be done, as the default answer to the "How can we come up with unique change IDs in a distributed version control system?" question seems to be "Compute an SHA-1 hash over something and use the result".

Ross Patterson [14/Oct/08 04:48 AM]
I'm returning this issue to the unassigned pool. I no longer have any CCNET systems to work with.

Mark Ryall [28/Oct/08 07:53 AM]
i've been using ccnet with this patch for a couple of months on our project using hg and its working well.

the only problem is that if someone commits while a build takes place, the attempt to push the tag (we've configured the build to tag successful builds) fails (because there are new changes in the remote repository) - this causes the build to fail.

the solution would be to try to do a pull, merge, commit then push but without losing that fact that a change was detected (in order to immediately kick off another build).

in the meantime, we just manually pull, merge, commit, push then kick off the build - fortunately our build at this stage only takes a few minutes so the problem doesn't occur too frequently,

i hope that all makes sense.

Matt Trentini [01/Nov/08 06:18 AM]
I applied the patch to rev 4300 but there were a couple of issues. First, the original diff file appeared to contain duplicate entries (eg, perform a search for "Mercurial/MercurialTest.cs") which broke the build. Second, there were some minor fixes required because of changes that have occurred on the trunk.

I've fixed up the issues and attached a new patch file.

I've built and run the unit tests (21 failures, 19 ignored - is that normal? None seem related to the patch.) but have *not* tried this build with a valid ccnet.build file.