I can imagine system of how can multiple programmers work intensive on same codebase in same time.
-
I think the Version Control System on server should be able to lock one file for editing when one of programmers connected to codebase starts editing it -
Live notification about changes in codebase and pushing updated files to others (via notification or automatic updating)
-
Chatting about changesets on fly, showing commits and diffs (some integrated source history browser like Trac has or similar would be fine too)
-
Solution integrated with some featured IDE (like Netbeans or Eclipse)
But what is some cheap (perfect would be open source) solution for this?
What systems have you tested and can recommend me to use?
Edit no.1:
Suggested solution doesn’t have to provide all functions I wrote in question.
That list is my imaginary list of what could this system have, not a requirements list.
Question is more about how do you solve “multi-user work on svn/cvs/etc..” and what solution you like most.
Edit no.2
Little bit around @thiton comment
It is very important to point out that there exists something called RCS (Revision Control System). From what I know RSC is an ancestor of CVS. CVS as a concept is implemented in svn, git, mercurial, bazaar, etc…
The reason why we moved from RSC to its successors, is that old way of doing things was slowing down and overcomplicating team work. Locking files and releasing them only after end of editing them, is not the way we want to go.
Now as we can reverse changes on a single file (reverting it to given revision number) and so repair our or others faults, there is need for that.
So I striked out the first point on my list (note it’s not written down in descending priority order), and thank @thiton to remind me that.
What you ask about is covered by Application Lifecycle Management (ALM) and the plenty of ALM toolkits. Examples of such toolkits:
And that’s why you might not like it. There are alternatives, though.
In addition to all the mentioned tools, I would recommend using following repository structure for subversion repository:
This repo structure is focused on following important aspects of version control:
I mentioned this repository structure because it help a lot when such convention exists: