version control : Java Glossary
- version control
Version control software, sometimes called SCM (Source Code Management),
helps you manage a software project.
The granddaddy of these schemes was called PVCS (Polytron Version Control System),
It was extraordinarily difficult to use. CVS (Concurrent Versions System)
with the WincVS GUI (Graphic User Interface) was much simpler. Subversion came along to solve the
- It provides a common repository (storage website) that stores the code to be shared.
- It deals with merging changes two people made to the same piece of
- It records changes made to the software so you can track who changed what.
- It lets you back out changes to any point in time in case you have trouble with
newly written code.
BitKeeper is yet another advance.
- tracking file and directory renames.
- ensuring stores to the respository are treated atomically.
Features I would like to see:
- If for any reason a commit fails part way through, when you correct the problem
and try again, it should not start totally afresh. It should use as much of the
information as possible from the aborted run.
- Focus placed on the most recent version checked version so it needs no
processing to recreate. The most recently checked version should also be mirrored
at the client end for fast diffs, with checks to make sure it is not corrupt before
composing deltas to send to the server. The client should only send deltas to the
host, not the whole file.
- You should not need to do anything to cause newly created files fitting some
pattern to be automatically added and committed.
- If you swap paragraphs, the diff process should notice and not treat this like
two paragraphs disappearing and two new ones being inserted.
- When you rename or delete a file, the version control should sort this out
without having to be specially and separately told from the way you tell the
OS (Operating System).
- Javadoc creates false a delta every time you regenerate it because it
timestamps the html generated. The version control system should understand this
problem and record the degree/severity of the difference with each commit, e. g.
just a timestamp, whitespace changes, comment changes, ordering. You could then
view the structure of change filtering out the changes that did not really make a
difference. The commits of timestamp changes would be done, but hidden from normal
view, so that the programmer could focus on what really
- More background operation. You tell it what you want to do and go away. You
should not need to sit there and babysit it every step of the way.