Enlisting and repository structure
Development environment and prerequisites
Laharsub project uses Mercurial source control management system. Current set of technologies the project is based on includes .NET Framework 4.0 and jQuery. The minimal set of development environment tools includes:
Optionally, Visual Studio 2010
provides excellent IDE to work with source code and run the tests. Visual Studio 2010 Ultimate is what I am using, but you can try the free
The rest of the documentation assumes you are using TortoiseHg as a Mercurial client and that Visual Studio 2010 is installed.
Open a command line window, go to the directory where you want to create the repository, and issue the following command (assumes you have installed TortoiseHg):
hg clone https://hg01.codeplex.com/laharsub laharsub
This should create a directory called laharsub containing the current clone of the repository.
These are the components of the source tree:
- Laharsub.sln - the main Visual Studio/MSBuild solution for the entire project
- src - all product and unit test sources and Visual Studio/MSBuild projects
- src\client - client components
- src\client\jquery - jQuery extension implementing the publish\subscribe REST protocol
- src\server - all server components
- src\server\net - a .NET implementation of the server and associated tests
- src\server\net\Laharsub.Server.Wcf - the server implementation; this builds Laharsub.exe
- src\server\net\Laharsub.Server.Wcf.Test - unit tests for Laharsub.Server.Wcf
- build - this directory contains built artifacts; it is not part of source control, but will be created on every build
- build\bin - server executable and associated test binaries
- build\vroot - web application components; this includes code and markup that will execute in the browser client (e.g. the jQuery extension and any *.html files)
Repository has two branches: default and dev. The default branch (which, as the name implies, is the default branch after a new repository clone has been created) contains stable versions of the product. The dev branch is used for ongoing development and is
not guaranteed to be stable. Periodic merges from dev to default are performed once a consistent set of changes has been checked into dev.
The quality level of the default branch guarantees that the product builds, all unit tests pass, and the product is FxCop clean. No such guarantees are made for the dev branch.
Public releases available in the Downloads section are created from the default branch.