Collaborative development with Subversion

Original author: Ryan Irelan
  • Transfer
Managing hired workers and distributed projects is easy and fun. Stop, what nonsense? Good version control comes to the rescue - exactly what you need in order to properly manage your projects.

Next is a translation of Collaborate and Connect with Subversion . This is my first translation, so I would be very happy for your comments.



Imagine you have your own web studio. Perhaps it is only you and a couple of people. Due to such a small composition, you often resort to the help of wage workers (subcontractors). Thanks to this, you can take on more projects, earn more money and accurately scale your business. However, managing even a small number of wage laborers requires a lot of stress and effort. At a certain stage, you will face the fact that the subcontractor does not fulfill its obligations on time, does not comply with your quality standards, or, even worse, disappears without completing the work. Careful data checks, solid agreements, and proactive management can help you. And technology, in turn, can improve collaboration so that your projects are always in control. Meet - Subversion.

Subversion creates an enabling environment for collaboration



Subversion (SVN) is a version control system that allows you to store and monitor changes to your code, share project files and provide access to them. It is very simple. You write the code and send (commit) it to your SVN repository (the place where the project files are stored). Your team members can download these files, see what you have done, make your changes and then send the changes to the SVN repository again. Each such “commit” is considered a revision. SVN tracks these revisions and assigns them numbers, so you can always “roll back” to the previous version of your code.

Visibility is good



Thanks to Subversion, all participants are involved in the project: as soon as someone makes changes, the rest can immediately see them (see the Necessary tools below ). If you have reliable subcontractors, you won’t worry again. However, when working with untrusted people, such visibility allows you to avoid all disagreements, problems in the project and errors in the code before the time comes to accept the work.

Let SVN be required



If the subcontractors really want to work with your studio, get them to follow your workflow and use the same tools. Differences can seriously hamper the activities of small companies, especially customer service companies.

Some wage laborers may want to send you the results of the work. zip-file by mail or put them on a remote server for you to download and watch. This is, of course, a good way, but the code you own is outside your organization. In fact, you are losing control of the project. What is the solution? Make SVN a part of your workflow. In addition to the usual advantages, such as versioning and the simultaneous work of many people on a project, SVN makes your subcontractors more responsible, and also allows you to keep the code and files for your clients under control and in your property.

Since you are a tenant, you have every right to stipulate the rules of change, the means used, and also when and how the work should be done. Your subcontractors will appreciate the serious workflow and will be more clearly aware that they are working with you.

Are there any exceptions to this rule?



A process should not be applied just because it is a process. Depending on the level of responsibility of the wage worker, you may decide not to include it in your SVN. And when you do this, you will see for yourself.

Set expectations



Everyone uses Subversion in different ways. Someone likes to send project changes several times a day. Others prefer to work on projects and post changes at the end of the day. Much depends on the type of project you are working on, as well as the number of people working on the same code. I found that the closer the project is completed, the more changes occur over a short period of time. At this point, I post changes to SVN more often.

Determine how often you expect updates from your employees. I recommend at least once a day while they are working on a project.

Pros and cons



We do not just get more control in our hands? Of course. Now you can evaluate the quality and quantity of work performed by subcontractors in a certain time. You are able to quickly evaluate the productivity of your hired workers, and this is also useful for them - you do not need to pester them with requests to finish work while you work together.

Subcontractors may be worried that in this order they will not be paid for the work. Indeed, if you have the latest version of their source codes, which prevents you from taking over a job without paying. Subversion, by itself, does not resolve this situation, although fraud can occur in any other workflow organization. Make sure that your contract clearly describes the delivery rules and the procedure for paying for work. The Internet is full of resources where you can learn how to draw up a contract in order to fully protect yourself. If you are still working with subcontractors without a contract, you just need to think about whether you are doing everything right.

Necessary tools



To start using SVN and understand its basics, read the article “ I Wonder What This Button Does ” by Mike West. Another good and free resource is O'Reilly's Version Control with Subversion . Remember to read a good overview of working with SVN in the Fundamental Concepts chapter .

SVN, in and of itself, can be complicated when trying to manage users with different access rights. For example, you probably want your subcontractor to have access only to the project he is working on, and not to the entire repository. To simplify repository management and user management, I recommend Warehouse , Active Reload's Subversion web interface . Warehouse makes it easy for you to manage your repository, keep track of changes, and, most importantly, add users and set permissions for them. Managing users in SVN can be quite tedious, but thanks to this interface, you can easily add and remove them. It also provides an RSS feed with changes to the repository that will allow you and your team to keep track of the files that are currently being worked on, as well as all changes occurring in the system. There are also solutions that use their own hosting, for example, Beanstalk . They will host your SVN repository and provide a user interface to it.

Although I urge people to learn how to use SVN from the command line first, you can also try the new Mac OS X application - Versions (currently in beta). It provides a graphical interface to most SVN commands.

Embedding in current work



Adding Subversion to your current workflow should not happen with a rattle. With certain skills, you can connect SVN to your project management tools. There are so-called "repository events", upon occurrence of which, SVN allows you to run any of your scripts. For example, a script that will write a new message to the Campfire chat application from  37Signals every time you post changes to the SVN repository. Thus, you notify your employees about the changes you have made. With Google, you will find many other scripts written for various tools, including integration of Basecamp project management tool with SVN.

There are several different types of embedding SVN, but, nevertheless, the most common one is that it runs the script after successfully sending changes to the repository. Thanks to such scripts, the possibilities for sharing SVN and your usual working tools are almost unlimited.

Stop reading, time to act



Subversion is not only an excellent tool for versioning and controlling the code of your projects, it also allows you to control and improve the interaction between you, your employees, and hired workers. It's time to improve your life a little bit for yourself, your company and your subcontractors - start using SVN in your work right now.

Original article - Collaborate and Connect with Subversion .
Translated with the permission of  A List Apart Magazine and the author [s].

Also popular now: