It's a Continuous Integration suite. It automates the fetching and building of your code as commits happen and throws up all over the dev team if the unit tests fail or it doesn't compile. It keeps good devs good and bad devs unemployed.
Here's the right page.
The reason for the fork and name change is that Oracle applied for a trademark for Hudson so the community opted for a name change to remove itself from Oracle.
Oracle was the worst possible end for Sun.
According to this article, the issue of the name only came up when it was mentioned that a fork would have to have a different name (which makes sense to me)
Either Jenkins or Hudson. Jenkins vs Hudson is basically LibreOffice vs OpenOffice; you should probably use Jenkins.
Since you are moving to git please check this out. It's a walkthrough for a git branching model allowing develop, features, and hotfix branches. http://nvie.com/posts/a-successful-git-branching-model/
Now for my setup. I do all my work on a vm on my local pc. It is a webserver so I can look at it locally as well as PHPUnit installed to run Unit and Selenium tests. (PHPUnit is a must have!!!)
I then set up a continuous integration, CI, server that runs Hudson (http://hudson-ci.org/). I have built a development project that will pull in the development branch on the CI server, run unit tests and code analysis, and if and only if all the unit tests pass and the code analysis has a minimal amount of defects, it will move a build script to our dev server which will build the web server. It will install PHP, all required modules, and nginx, move PHP.ini and nginx.conf and other required config files and start all the services. At this point it moves the source code over to the development server. Now it will automatically kick off the build of another project on the CI server. This build will then run selenium tests against the live development server and if those pass it will check in the code to the master branch.
I then have a production build, that must be manually kicked off. That will move the production code over to the live production server so then the code will be live. Please PM me if you have questions and I would be glad to give you more details about this.
We use the continuous integration software, Hudson. http://hudson-ci.org/ Then we use fabric. We have different deploy methods in fabric that will build the server, set up nginx, uwsgi, and the pyramids app.
We have hudson pull down the repo. Run the unit test. If those pass, it pushes it to a dev-stable branch and then fires another build on the dev server. It will then run integration tests and if and only if those pass then it pushs the code to the production branch. From there, we look things over on dev, then if all is well, which it should be if unit tests and integration passed, we will do the same thing for the production server. Fabric is the way to go though
The nice thing with hudson is there are a lot of extensions for it. For example, we have a work irc channel that we all chat in since we are in remote locations and we have a hudson irc bot that will tell in the channel if the build is successful or failed.
We also have hudson email users when builds fail. It also has an extension that checks for pylints and will report that back to you.
Why don't you use Hudson or Jenkins for this kind of stuff?
http://hudson-ci.org/ http://jenkins-ci.org/
They're both the same thing now, Hudson being the fork made by Oracle. So you can deploy this stuff in 10 minutes and have it authenticate trough LDAP, Active Directory or Local User Database. You cand have a project based matrix authentication in order to give permissions based on projects.
You create a project inside jenkins that when started it executes your scripts and give permissions to that project only to certain users.
Also if you want to control slave machine or do things trough ssh you can. Practically this software is for exactly this kind of stuff: automating tasks (building tasks mostly but those are so complex that cover anything you could thing about).