text:
"use strict";

var Assert = require("assert");
var Client = require("./../../index");

describe("[orgs]", function() {
    var client;
    var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba";

    beforeEach(function() {
        client = new Client({
            version: "3.0.0"
        });
        client.authenticate({
            type: "oauth",
            token: token
        });
    });

    it("should successfully execute GET /users/:user/orgs (getFromUser)",  function(next) {
        client.orgs.getFromUser(
            {
                user: "String",
                page: "Number",
                per_page: "Number"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /orgs/:org (get)",  function(next) {
        client.orgs.get(
            {
                org: "String",
                page: "Number",
                per_page: "Number"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute PATCH /orgs/:org (update)",  function(next) {
        client.orgs.update(
            {
                org: "String",
                billing_email: "String",
                company: "String",
                email: "String",
                location: "String",
                name: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /orgs/:org/members (getMembers)",  function(next) {
        client.orgs.getMembers(
            {
                org: "String",
                page: "Number",
                per_page: "Number"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /orgs/:org/members/:user (getMember)",  function(next) {
        client.orgs.getMember(
            {
                org: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute DELETE /orgs/:org/members/:user (removeMember)",  function(next) {
        client.orgs.removeMember(
            {
                org: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /orgs/:org/public_members (getPublicMembers)",  function(next) {
        client.orgs.getPublicMembers(
            {
                org: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /orgs/:org/public_members/:user (getPublicMember)",  function(next) {
        client.orgs.getPublicMember(
            {
                org: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute PUT /orgs/:org/public_members/:user (publicizeMembership)",  function(next) {
        client.orgs.publicizeMembership(
            {
                org: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute DELETE /orgs/:org/public_members/:user (concealMembership)",  function(next) {
        client.orgs.concealMembership(
            {
                org: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /orgs/:org/teams (getTeams)",  function(next) {
        client.orgs.getTeams(
            {
                org: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /teams/:id (getTeam)",  function(next) {
        client.orgs.getTeam(
            {
                id: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute POST /orgs/:org/teams (createTeam)",  function(next) {
        client.orgs.createTeam(
            {
                org: "String",
                name: "String",
                repo_names: "Array",
                permission: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute PATCH /teams/:id (updateTeam)",  function(next) {
        client.orgs.updateTeam(
            {
                id: "String",
                name: "String",
                permission: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute DELETE /teams/:id (deleteTeam)",  function(next) {
        client.orgs.deleteTeam(
            {
                id: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /teams/:id/members (getTeamMembers)",  function(next) {
        client.orgs.getTeamMembers(
            {
                id: "String",
                page: "Number",
                per_page: "Number"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /teams/:id/members/:user (getTeamMember)",  function(next) {
        client.orgs.getTeamMember(
            {
                id: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute PUT /teams/:id/members/:user (addTeamMember)",  function(next) {
        client.orgs.addTeamMember(
            {
                id: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute DELETE /teams/:id/members/:user (deleteTeamMember)",  function(next) {
        client.orgs.deleteTeamMember(
            {
                id: "String",
                user: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /teams/:id/repos (getTeamRepos)",  function(next) {
        client.orgs.getTeamRepos(
            {
                id: "String",
                page: "Number",
                per_page: "Number"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute GET /teams/:id/repos/:user/:repo (getTeamRepo)",  function(next) {
        client.orgs.getTeamRepo(
            {
                id: "String",
                user: "String",
                repo: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute PUT /teams/:id/repos/:user/:repo (addTeamRepo)",  function(next) {
        client.orgs.addTeamRepo(
            {
                id: "String",
                user: "String",
                repo: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });

    it("should successfully execute DELETE /teams/:id/repos/:user/:repo (deleteTeamRepo)",  function(next) {
        client.orgs.deleteTeamRepo(
            {
                id: "String",
                user: "String",
                repo: "String"
            },
            function(err, res) {
                Assert.equal(err, null);
                // other assertions go here
                next();
            }
        );
    });
});


text:
package org.jboss.resteasy.test.resource.basic;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.resteasy.test.resource.basic.resource.ExtensionResource;
import org.jboss.resteasy.util.HttpResponseCodes;
import org.jboss.resteasy.utils.PortProviderUtil;
import org.jboss.resteasy.utils.TestUtil;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
import java.util.HashMap;
import java.util.Map;

/**
 * @tpSubChapter Resource
 * @tpChapter Integration tests
 * @tpTestCaseDetails Test for resteasy.media.type.mappings and resteasy.language.mappings parameters
 * @tpSince RESTEasy 3.0.16
 */
@RunWith(Arquillian.class)
@RunAsClient
public class ExtensionTest {

    static Client client;

    @Deployment
    public static Archive<?> deploy() {
        WebArchive war = TestUtil.prepareArchive(ExtensionTest.class.getSimpleName());

        Map<String, String> params = new HashMap<>();
        params.put("resteasy.media.type.mappings", "xml : application/xml, html : text/html, txt : text/plain");
        params.put("resteasy.language.mappings", "en : en-US");
        return TestUtil.finishContainerPrepare(war, params, ExtensionResource.class);
    }

    @BeforeClass
    public static void init() {
        client = ClientBuilder.newClient();
    }

    @AfterClass
    public static void after() throws Exception {
        client.close();
    }

    /**
     * @tpTestDetails Check correct values
     * @tpSince RESTEasy 3.0.16
     */
    @Test
    public void testIt() {
        basicTest("/extension.xml", "xml");
        basicTest("/extension.html.en", "html");
        basicTest("/extension.en.html", "html");
        basicTest("/extension/stuff.old.en.txt", "plain");
        basicTest("/extension/stuff.en.old.txt", "plain");
        basicTest("/extension/stuff.en.txt.old", "plain");
    }

    /**
     * @tpTestDetails Check wrong value
     * @tpSince RESTEasy 3.0.16
     */
    @Test
    public void testError() {
        Response response = client.target(PortProviderUtil.generateURL("/extension.junk", ExtensionTest.class.getSimpleName())).request().get();
        Assert.assertEquals(HttpResponseCodes.SC_NOT_FOUND, response.getStatus());
        response.close();
    }

    private void basicTest(String path, String body) {
        Response response = client.target(PortProviderUtil.generateURL(path, ExtensionTest.class.getSimpleName())).request().get();
        Assert.assertEquals(HttpResponseCodes.SC_OK, response.getStatus());
        Assert.assertEquals("Wrong content of response", body, response.readEntity(String.class));
        response.close();
    }
}

redpajama_set_name: RedPajamaGithub


text:
@interface NSString (Util)

+ (NSString *)stringWithDate:(NSDate *)date;

@end


text:
using System.Web.Mvc;
using System.Web.Routing;

namespace Mvc1
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}",
                defaults: new { controller = "Default", action = "Index" }
            );
        }
    }
}


text: a tableViewController with parallax effect imageView header


text:
/*
 * JBox2D - A Java Port of Erin Catto's Box2D
 *
 * JBox2D homepage: http://jbox2d.sourceforge.net/
 * Box2D homepage: http://www.box2d.org
 *
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * arising from the use of this software.
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 *
 * 1. The origin of this software must not be misrepresented; you must not
 * claim that you wrote the original software. If you use this software
 * in a product, an acknowledgment in the product documentation would be
 * appreciated but is not required.
 * 2. Altered source versions must be plainly marked as such, and must not be
 * misrepresented as being the original software.
 * 3. This notice may not be removed or altered from any source distribution.
 */

package org.jbox2d.dynamics.joints;

import org.jbox2d.common.Mat22;
import org.jbox2d.common.MathUtils;
import org.jbox2d.common.Settings;
import org.jbox2d.common.Vec2;
import org.jbox2d.dynamics.Body;
import org.jbox2d.dynamics.TimeStep;
import org.jbox2d.pooling.WorldPool;

//Updated to rev 56->130->142 of b2DistanceJoint.cpp/.h

//C = norm(p2 - p1) - L
//u = (p2 - p1) / norm(p2 - p1)
//Cdot = dot(u, v2 + cross(w2, r2) - v1 - cross(w1, r1))
//J = [-u -cross(r1, u) u cross(r2, u)]
//K = J * invM * JT
//= invMass1 + invI1 * cross(r1, u)^2 + invMass2 + invI2 * cross(r2, u)^2

/**
 * A distance joint constrains two points on two bodies
 * to remain at a fixed distance from each other. You can view
 * this as a massless, rigid rod.
 */
public class DistanceJoint extends Joint {

	public final Vec2 m_localAnchor1;
	public final Vec2 m_localAnchor2;
	public final Vec2 m_u;
	public float m_impulse;
	public float m_mass; // effective mass for the constraint.
	public float m_length;
	public float m_frequencyHz;
	public float m_dampingRatio;
	public float m_gamma;
	public float m_bias;

	public DistanceJoint(WorldPool argWorld, final DistanceJointDef def) {
		super(argWorld, def);
		m_localAnchor1 = def.localAnchorA.clone();
		m_localAnchor2 = def.localAnchorB.clone();
		m_length = def.length;
		m_impulse = 0.0f;
		m_u = new Vec2();
		m_frequencyHz = def.frequencyHz;
		m_dampingRatio = def.dampingRatio;
		m_gamma = 0.0f;
		m_bias = 0.0f;
	}

	public void setFrequency(float hz) {
		m_frequencyHz = hz;
	}

	public float getFrequency() {
		return m_frequencyHz;
	}

	public float getLength() {
		return m_length;
	}

	public void setLength(float argLength) {
		m_length = argLength;
	}

	public void setDampingRatio(float damp) {
		m_dampingRatio = damp;
	}

	public float getDampingRatio() {
		return m_dampingRatio;
	}

	@Override
	public void getAnchorA(Vec2 argOut) {
		m_bodyA.getWorldPointToOut(m_localAnchor1, argOut);
	}

	@Override
	public void getAnchorB(Vec2 argOut) {
		m_bodyB.getWorldPointToOut(m_localAnchor2, argOut);
	}

	// djm pooled
	@Override
	public void getReactionForce(float inv_dt, Vec2 argOut) {
		argOut.x = m_impulse * m_u.x * inv_dt;
		argOut.y = m_impulse * m_u.y * inv_dt;
	}

	@Override
	public float getReactionTorque(float inv_dt) {
		return 0.0f;
	}

	@Override
	public void initVelocityConstraints(final TimeStep step) {

		// TODO: fully inline temp Vec2 ops
		final Body b1 = m_bodyA;
		final Body b2 = m_bodyB;

		Vec2 r1 = pool.popVec2();
		Vec2 r2 = pool.popVec2();

		// Compute the effective mass matrix.
		r1.set(m_localAnchor1).subLocal(b1.getLocalCenter());
		r2.set(m_localAnchor2).subLocal(b2.getLocalCenter());
		Mat22.mulToOut(b1.getTransform().R, r1, r1);
		Mat22.mulToOut(b2.getTransform().R, r2, r2);

		m_u.x = b2.m_sweep.c.x + r2.x - b1.m_sweep.c.x - r1.x;
		m_u.y = b2.m_sweep.c.y + r2.y - b1.m_sweep.c.y - r1.y;

		// Handle singularity.
		float length = m_u.length();
		if (length > Settings.linearSlop) {
			m_u.x *= 1.0f / length;
			m_u.y *= 1.0f / length;
		}
		else {
			m_u.set(0.0f, 0.0f);
		}

		float cr1u = Vec2.cross(r1, m_u);
		float cr2u = Vec2.cross(r2, m_u);

		float invMass = b1.m_invMass + b1.m_invI * cr1u * cr1u + b2.m_invMass + b2.m_invI * cr2u * cr2u;
		assert (invMass > Settings.EPSILON);
		m_mass = 1.0f / invMass;

		if (m_frequencyHz > 0.0f) {
			float C = length - m_length;

			// Frequency
			float omega = 2.0f * MathUtils.PI * m_frequencyHz;

			// Damping coefficient
			float d = 2.0f * m_mass * m_dampingRatio * omega;

			// Spring stiffness
			float k = m_mass * omega * omega;

			// magic formulas
			m_gamma = step.dt * (d + step.dt * k);
			m_gamma = m_gamma != 0.0f ? 1.0f / m_gamma : 0.0f;
			m_bias = C * step.dt * k * m_gamma;

			m_mass = invMass + m_gamma;
			m_mass = m_mass != 0.0f ? 1.0f / m_mass : 0.0f;
		}

		if (step.warmStarting) {

			// Scale the impulse to support a variable time step.
			m_impulse *= step.dtRatio;

			Vec2 P = pool.popVec2();
			P.set(m_u).mulLocal(m_impulse);

			b1.m_linearVelocity.x -= b1.m_invMass * P.x;
			b1.m_linearVelocity.y -= b1.m_invMass * P.y;
			b1.m_angularVelocity -= b1.m_invI * Vec2.cross(r1, P);

			b2.m_linearVelocity.x += b2.m_invMass * P.x;
			b2.m_linearVelocity.y += b2.m_invMass * P.y;
			b2.m_angularVelocity += b2.m_invI * Vec2.cross(r2, P);

			pool.pushVec2(1);
		}
		else {
			m_impulse = 0.0f;
		}
		pool.pushVec2(2);
	}

	@Override
	public void solveVelocityConstraints(final TimeStep step) {
		final Body b1 = m_bodyA;
		final Body b2 = m_bodyB;

		final Vec2 r1 = pool.popVec2();
		final Vec2 r2 = pool.popVec2();

		r1.set(m_localAnchor1).subLocal(b1.getLocalCenter());
		r2.set(m_localAnchor2).subLocal(b2.getLocalCenter());
		Mat22.mulToOut(b1.getTransform().R, r1, r1);
		Mat22.mulToOut(b2.getTransform().R, r2, r2);

		final Vec2 v1 = pool.popVec2();
		final Vec2 v2 = pool.popVec2();

		// Cdot = dot(u, v + cross(w, r))
		Vec2.crossToOut(b1.m_angularVelocity, r1, v1);
		Vec2.crossToOut(b2.m_angularVelocity, r2, v2);
		v1.set(b1.m_linearVelocity).addLocal(b1.m_linearVelocity);
		v2.set(b2.m_linearVelocity).addLocal(b2.m_linearVelocity);

		float Cdot = Vec2.dot(m_u, v2.subLocal(v1));

		float impulse = -m_mass * (Cdot + m_bias + m_gamma * m_impulse);
		m_impulse += impulse;

		float Px = impulse * m_u.x;
		float Py = impulse * m_u.y;
		b1.m_linearVelocity.x -= b1.m_invMass * Px;
		b1.m_linearVelocity.y -= b1.m_invMass * Py;
		b1.m_angularVelocity -= b1.m_invI * (r1.x * Py - r1.y * Px);// b2Cross(r1, P);
		b2.m_linearVelocity.x += b2.m_invMass * Px;
		b2.m_linearVelocity.y += b2.m_invMass * Py;
		b2.m_angularVelocity += b2.m_invI * (r2.x * Py - r2.y * Px);// b2Cross(r2, P);

		pool.pushVec2(4);
	}

	@Override
	public boolean solvePositionConstraints(float baumgarte) {
		if (m_frequencyHz > 0.0f) {
			return true;
		}

		final Body b1 = m_bodyA;
		final Body b2 = m_bodyB;

		final Vec2 r1 = pool.popVec2();
		final Vec2 r2 = pool.popVec2();
		final Vec2 d = pool.popVec2();

		r1.set(m_localAnchor1).subLocal(b1.getLocalCenter());
		r2.set(m_localAnchor2).subLocal(b2.getLocalCenter());
		Mat22.mulToOut(b1.getTransform().R, r1, r1);
		Mat22.mulToOut(b2.getTransform().R, r2, r2);

		d.x = b2.m_sweep.c.x + r2.x - b1.m_sweep.c.x - r1.x;
		d.y = b2.m_sweep.c.y + r2.y - b1.m_sweep.c.y - r1.y;

		float length = d.normalize();
		float C = length - m_length;
		C = MathUtils.clamp(C, -Settings.maxLinearCorrection, Settings.maxLinearCorrection);

		float impulse = -m_mass * C;
		m_u.set(d);
		float Px = impulse * m_u.x;
		float Py = impulse * m_u.y;

		b1.m_sweep.c.x -= b1.m_invMass * Px;
		b1.m_sweep.c.y -= b1.m_invMass * Py;
		b1.m_sweep.a -= b1.m_invI * (r1.x * Py - r1.y * Px);// b2Cross(r1, P);

		b2.m_sweep.c.x += b2.m_invMass * Px;
		b2.m_sweep.c.y += b2.m_invMass * Py;
		b2.m_sweep.a += b2.m_invI * (r2.x * Py - r2.y * Px);// b2Cross(r2, P);

		b1.synchronizeTransform();
		b2.synchronizeTransform();

		pool.pushVec2(3);

		return MathUtils.abs(C) < Settings.linearSlop;
	}
}


text:
var RSVP = requireModule("rsvp");

RSVP.configure('async', function(callback, binding) {
  Ember.run.schedule('actions', binding, callback);
});

/**
@module ember
@submodule ember-runtime
*/

var get = Ember.get;

/**
  @class Deferred
  @namespace Ember
  @extends Ember.Mixin
 */
Ember.DeferredMixin = Ember.Mixin.create({
  /**
    Add handlers to be called when the Deferred object is resolved or rejected.

    @method then
    @param {Function} doneCallback a callback function to be called when done
    @param {Function} failCallback a callback function to be called when failed
  */
  then: function(resolve, reject) {
    var deferred, promise, entity;

    entity = this;
    deferred = get(this, '_deferred');
    promise = deferred.promise;

    function fulfillmentHandler(fulfillment) {
      if (fulfillment === promise) {
        return resolve(entity);
      } else {
        return resolve(fulfillment);
      }
    }

    return promise.then(resolve && fulfillmentHandler, reject);
  },

  /**
    Resolve a Deferred object and call any `doneCallbacks` with the given args.

    @method resolve
  */
  resolve: function(value) {
    var deferred, promise;

    deferred = get(this, '_deferred');
    promise = deferred.promise;

    if (value === this){
      deferred.resolve(promise);
    } else {
      deferred.resolve(value);
    }
  },

  /**
    Reject a Deferred object and call any `failCallbacks` with the given args.

    @method reject
  */
  reject: function(value) {
    get(this, '_deferred').reject(value);
  },

  _deferred: Ember.computed(function() {
    return RSVP.defer();
  })
});


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

        <title>CruiseControl.NET : CCNet 1.5 CTP Release Notes</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">

                            CruiseControl.NET : CCNet 1.5 CTP Release Notes

					    This page last changed on Dec 15, 2009 by csut017.

 Read this first

This is CTP release of CCNet 1.5. We're doing a CTP release to give you a testable preview of the new features in the upcoming release.

Since this is a CTP release, we do not advise to run it in a production environment, but the more tests the better  , and there are already people using this in a production environment

For example, one of the devs runs the 1.5 for several months, take a look at Dna's build server

This is a breaking release : read below for the items known to be broken, other items may also be affected.

<colgroup><col width='24'><col></colgroup>
	Breaking Changes

The email publisher config is NOT compatible if you used the group element, check the new configuration in the documentation.

Some internal interfaces are changed, so 3rd party plugins could be broken

Highlights of the CCNet 1.5 CTP release

Security

It is now possible to secure parts of CruiseControl.NET. Security is all based on the server-side, and is set in ccnet.config.

Currently it is possible to lock down the following items:

Viewing projects

Forcing/aborting builds

Starting/stopping projects

Viewing security settings

Modifying security settings

Viewing configuration

Changing configuration

Client-side tables for the dashboard

The projects list in the web dashboard is now interactive - you can now sort on any column, even multi column sorting is possible.

A few new source control systems

RoboCopy, VSTS, Ftp, Git and Mercurial. The last 2 are DVCS, so an entire new kind of source control!

New Tasks/Publishers

A number of new tasks have been added:

Parallel Task and Sequential Task - allow running tasks in parallel or in sequence, or any combination of the two. While this can speed things up, be careful of using too much parallelism as each parallel task uses its own thread and there is only a limited thread pool.

NCover tasks - perform NCover analysis and reporting within CC.NET itself (no need to run it in a build script).

PowerShell Task - run a PowerShell script.

Conditional Publisher - this provides a standard way of only running publishers for certain build states.

CruiseServer Control Task - send control commands to a local or remote instance of CruiseControl.NET.

Ftp task - Publisher- upload / download files from a server

Dynamic Parameters

This allows to ask the user for input on forcing a build, so reducing the amount of CCNet projects.

eg.: ask which branch to build

See Dynamic Parameters for details.

Task Breakdown

There is now a task breakdown of what is happening inside a project build. This provides information down to the level of the individual task.

The last project build is stored until the next trigger check, so this also provides a mechanism for seeing which task within a build has failed.

CCTray Improvements

There have been a number of improvements to CCTray including:

Enhanced X10

Can load/save CCTray configurations

CCTray will automatically notify the user of any added or removed projects

Download packages - this will list the packages generated by the package publisher and allow people to directly download them

This is a list of Jira Issues resolved by this release :

Bug

CCNET\-844 - SvnSource doesn't update and write to state the LastChangeNumber.

CCNET\-852 - environment of the calling process is passed to a new process created instead of the current environment

CCNET\-865 - XmlReader exception loses all nunit logging

CCNET\-1118 - svn's tagOnSuccess behavior is broken if <trunkUrl> is missing

CCNET\-1220 - Configuration problem : entering empty sourcecontrol tag in ccnet.config results into crash iso reporting an error that is meaningfull

CCNET\-1266 - Grouping by date failes on Summarised Data (statistics) tab on german system

CCNET\-1325 - Build server is not sensitive to changes in svn

CCNET\-1355 - Unit test exceptions when building 1.4.2 source code on Vista x64

CCNET\-1403 - Changing X10 settings for CM11 controller causes Access to COM port was denied exception

CCNET\-1404 - Communication with some CM11 controllers times out.

CCNET\-1446 - Pages not found when project names contain spaces

CCNET\-1464 - fix designer of mainform of cctraylib

CCNET\-1469 - ExternalSourceControlHistoryParser.Parse() is not locale aware

CCNET\-1481 - Hide sensitive data / plugins / messages

CCNET\-1509 - project with a space in the name gives an error in the dashboard (ViewProjectReport)  when viewed with IIS7 (Visa)

CCNET\-1513 - Dynamic Parameters: Prompt for input not displayed

CCNET\-1521 - Propertyinjection in MergeFilesTask does not work

CCNET\-1522 - RetrieveFile.aspx throws a Socket time out exception

CCNET\-1523 - Documentation problem with Email Publisher

CCNET\-1527 - Preprocessor include file change not reloading projects

CCNET\-1530 - NDepend 2.12.1 results transformation broken

CCNET\-1532 - Configuration File will not reload after auto update with Team Foundation Server

CCNET\-1547 - Build detailed statistics shows incorrent FxCop warnings/errors count

CCNET\-1550 - package publisher failes sometimes due to a lock

CCNET\-1553 - Exceptions not serialising

CCNET\-1562 - dashboard in ccnet 1.5 does not work anymore with firefox

CCNET\-1565 - Program files has greater security in newer versions of Windows and doesn't allow modifications

CCNET\-1566 - Gendarme Task dies because of a PathTooLongException in gendarme.exe

CCNET\-1579 - 1.5.0.4364: Unable to build email "XSL stylesheet file not found"

CCNET\-1591 - Git plugin repeats modifications in build log for each file

CCNET\-1592 - CCTray Balloon notification for broken build only shows Breakers, not which build is broken

CCNET\-1595 - Zips created by the package publisher can not be opened by Windows XP built in zip handling

CCNET\-1597 - After a fresh installation the Webdash does not work.

CCNET\-1600 - SECURITY: Logout functionality does not work.

CCNET\-1602 - SECURITY: Security blocks the Force Build Publisher

CCNET\-1621 - BUILD 1.5.0.4439: Server Error in '/ccnet' Application.

CCNET\-1623 - SECURITY  (1.5.0.4439):  Exception when trying to access project reports

CCNET\-1630 - NullReferenceException in CCValidator

CCNET\-1640 - EMAIL PUBLISHER: Attachement file remains locked after being sent.

CCNET\-1646 - Get the XmlFragmentWriter to work on Mono

CCNET\-1658 -  Email Publishing error in CCNET v 1.5.0.6067

CCNET\-1659 - Crash when log file is big

CCNET\-1666 - (1.5.0.6092) Dynamic Parameters/Integration Properties - CCNetBuildDate & CCNetBuildTime  incorrect.

CCNET\-1669 - Publishers don't clean target directory prior to copy

CCNET\-1688 - Build failure due to loss of network connection to VSS does not clear away when network is restored

CCNET\-1706 - Bug in XslReportBuildPlugin, Parameters collection is not loaded properly

Improvement

CCNET\-153 - better management when publishers are executed

CCNET\-398 - Subversion should check for modifications by revision number instead of by date.

CCNET\-452 - Improve Dashboard Project Grid Sorting

CCNET\-519 - CCTray should allow definition of a default project

CCNET\-727 - MsBuildTask: Read .NET Framework path from the registry by default

CCNET\-867 - Authorised actions

CCNET\-883 - API that will allow control remote File System from Dashboard.

CCNET\-1091 - RoboCopy source control system

CCNET\-1123 - Double clicking CCTray icon should toggle status window

CCNET\-1197 - <merge> task should support non-XML files cleanly

CCNET\-1230 - CCNET should support source control systems that have non-numeric change "numbers"

CCNET\-1232 - provide user name if forced build started by dashboard

CCNET\-1290 - CCTray should show Category in Detail view

CCNET\-1302 - Run CruiseControl.Net tests on mono (first Windows, then Linux)

CCNET\-1378 - "Source Control" code normalization

CCNET\-1423 - groups in the email publisher must be able to be set to multiple build types, like the modifiernotificationtype

CCNET\-1426 - move configuration of the xsl files used for the email publisher in the email publisher itself

CCNET\-1445 - update tests so that non english locals do not fail some tests

CCNET\-1455 - CCValidator must also support warnings, and not only exeptions to identify problems in the config

CCNET\-1491 - Make NAnt master build script platform independent

CCNET\-1504 - Implement messaging-type communications with the server

CCNET\-1510 - foresee overloaded method for processwarning and processerror in the validator, (string, args)

CCNET\-1517 - Dynamic Parameters: Suggest renaming range parameter.

CCNET\-1518 - Dynamic Parameters: Actual use of a retrieved value seems overly complex.

CCNET\-1519 - Package publisher should allow an output location

CCNET\-1537 - weird error when the / closing tag in the build publisher

CCNET\-1540 - urls should be case insensitive

CCNET\-1544 -  Dynamic Parameters: Select Parameter when using <sourceFile> should update on every 'Force' build.

CCNET\-1551 - Add  a new extension to allow throttling the total number of concurrent builds on a server

CCNET\-1552 - create an  NCover task

CCNET\-1567 - Replace custom commadline arguments parsing code with Mono's Options.cs

CCNET\-1569 - add support for 3 light X10 systems.

CCNET\-1570 - speech enhancements cctray

CCNET\-1571 - refactor tasks to a common task base

CCNET\-1572 - null task should have a parameter for letting the build fail if desired

CCNET\-1573 - null source control should have settings for simulating failures in the different stages

CCNET\-1575 - add a  LOT more debug logging :

CCNET\-1576 - add FTP publisher / task / source control

CCNET\-1608 - Implement support for getting process output line by line with an event from ProcessExecutor

CCNET\-1610 - Implement BuildProgressInformation support to Subversion Source Control Block

CCNET\-1612 - Implement BuildProgressInformation support to the Gendarme Task

CCNET\-1613 - Implement BuildProgressInformation support to the NAnt Task

CCNET\-1614 - Implement BuildProgressInformation support to the MSBuild Task

CCNET\-1615 - Implement BuildProgressInformation support to the BaseExecutableTask

CCNET\-1617 - Add support for "-listener" switch in NAnt task

CCNET\-1618 - Allow Dynamic Properties to be applied to Source Control Blocks

CCNET\-1650 - failed integration and exception during integration must be split in the email publisher

CCNET\-1651 - Implement BuildProgressInformation support to CVS Source Control Block

CCNET\-1652 - Implement BuildProgressInformation support to Mercurial Source Control Block

CCNET\-1654 - Exception thrown due to bad configuration is not indicative of such

CCNET\-1686 - Allow validation on triggers

New Feature

CCNET\-200 - Forced  builds - adding comment to build results

CCNET\-263 - Subversion should use LastChangeNumber of previous build when checking for modifications

CCNET\-339 - CCNET Security

CCNET\-403 - Add user input to dashboard

CCNET\-513 - CCTray should automatically recognise and add new projects on a connected server

CCNET\-514 - Report which task failed through CCTray

CCNET\-612 - Default Labeller should allow an initial build number, so you don't have to start at 1

CCNET\-752 - It would be nice to be able to have a drive letter mapped in Service environment

CCNET\-964 - Parallel Execution of Tasks

CCNET\-1014 - Add User Rights Management To CCTray

CCNET\-1188 - Mercurial support

CCNET\-1254 - Command line interface to CruiseControl.Net server

CCNET\-1316 - PowerShell Task

CCNET\-1411 - Build Status Breakdown

CCNET\-1484 - Implement a File Merge Task for binary files like images

CCNET\-1514 - Dynamic Parameters: Range Parameter to allow initialisation from a file.

CCNET\-1515 - Dynamic Parameters: addition of Boolean parameter (Check Box)

CCNET\-1516 - Dynamic Parameter: Range parameter should allow for return values that are not equal to the display name.

CCNET\-1554 - Implement support for Git source control system

CCNET\-1636 - Added Growl Notifications to CCTray

CCNET\-1660 - Updating from more than one source

Task

CCNET\-1385 - Inline uses of "StringUtil.IsBlank"

CCNET\-1459 - update docs on email publisher concerning groups element after 1.4.4 release

CCNET\-1463 - update docs on email publisher concerning xslfiles element after 1.4.4 release

			    Document generated by Confluence on Jan 30, 2010 19:06