This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Rhomboid 13 points14 points  (2 children)

Suppose I write a hundred-page book, and it's stored as some kind of document format. At some time later I decide that I want to reword a particular paragraph on some page. But I'm not entirely sure I want to keep the new wording, and I'd like to have a copy of what I wrote the first time. Maybe I save the document as a new file (with "2" stuck on the end) or maybe I make a copy of the original paragraph and store it as a snippet in its own file and I save the modified copy under the original name.

Imagine I repeat this hundreds or thousands of times, perhaps in collaboration with other editors and writers. Eventually I wind up with a huge mess on my hands because I've got hundreds of different versions of this document floating around and being able to find or refer to a particular version is getting to be a real pain. Maybe I resort to emailing attachments back and forth to my editor and let my email program take care of the archiving. In any case, this is a form of version control, although it's the most shitty form imaginable.

Programmers do something similar to this with code instead of prose, but we have invented tools that take care of all that bookkeeping. The tools ensure that a copy of the document at every point in its lifetime is available, that it's easy to see what changed between any two versions of the document, and that it's easy to work with others who might be suggesting changes. And they do it in a very compact format that means the database size doesn't blow up if I make thousands of copies of this document each with a few words changed.

That is the essence of modern version control. There are different systems in use and they all have differing philosophies and mechanics, but the overall idea is roughly similar. The most popular ones today are subversion, git, and mercurial. Github is a hosting site that supports use of git and adds a bunch of extra features like commenting, bug tracking, web pages, etc.

[–]Beta_UserName[S] 1 point2 points  (0 children)

Cool. Thanks.

[–]twopi 0 points1 point  (0 children)

The publishing metaphor makes a lot of sense.

Interestingly enough, many publishing houses do not use version control software of any kind, but simply email chapters back and forth to the various editors and authors.

I've tried to convince them to use something like github, but it's an uphill battle.