4

I've written a piece of fiction with GitHub, which means I have access to many version of my writing. I'm curious to see how my writing adapted over time. Did I keep eliminating then re-adding a word? Did some lines remain unchanged? Which paragraphs changed the most/least?

I know of the program wdiff and it's ability to track word changes in two documents, but is there some way to examine multiple chronologically organized files at once? Alternatively, do I need to program this myself?

Note that this is not specific to GitHub and could be applied to any series of text documents.

I'm basically picturing something along the lines of the Google Doc version viewing, but with multiple versions instead of just two.

7
  • Personally, I'd ask this on StackOverflow, as the technical side is not Writers-specific. A visual history of changes in a file should be usable in technical context too.
    – SF.
    Oct 15, 2013 at 13:14
  • 1
    I did post a similar question on SuperUser, but didn't get any response. I thought I would try here, just in case I was pursuing the wrong audience.
    – Seanny123
    Oct 15, 2013 at 13:41
  • 1
    What an interesting problem. I once saw a "geography history" visualization that was a map of Europe over a thousand years, animated with a year counter, to show changing borders. It was fascinating to see what areas had big changes, rapid changes, bobbleheads, etc. Something like that where you saw parts of your story come and go and morph and revert would be cool. I don't know of anything that already does that, alas. Oct 15, 2013 at 15:22
  • That's basically what I was visualizing.
    – Seanny123
    Oct 16, 2013 at 0:46
  • 1

2 Answers 2

2

I have written a tool for my own use that will almost do what you want, but I hadn't thought that anyone else would use it, so it is a bit rough around the edges, it would only take me a couple minutes to add wdiff to it, but it assumes POSIX (unix/linux/OSX) is written in perl, has no documentation, and the command syntax is arcane. Would you like to try it out?

Edit: now available at https://github.com/hildred/diff.cgi.git

3
  • Would you mind uploading it to GitHub? I know perl and I'm quite used to reading code with no documentation, although a few comments would be appreciated.
    – Seanny123
    Nov 22, 2013 at 1:21
  • Alternatively, if you want, you can send the code to me and I'll upload it. My e-mail is listed in my profile.
    – Seanny123
    Nov 22, 2013 at 1:34
  • You made a GitHub profile just for me? You sir, are one fine gentleman.
    – Seanny123
    Nov 22, 2013 at 3:29
0

You should use Mercurial.

I would advise you to start off with using Subversion. GIT is too complex, and unnecessarily rich in features for you.

Then you should progress towards using Mercurial (aka Hg). Perhaps, you could start with Mercurial and skip using SVN as the learning phase.

Subversion (aka SVN), and Hg repositories can be a local folder or file. SVN is simpler to learn - but Hg is what you ultimately need.

Let me tell you what programmers say is the difference between SVN, Hg and Git.

SVN is like Tom Cruise. Neat, same style of acting every time. Easy to be familiar with.
Git is like Woody Allen. Too complex, too flexible to be understood. So flexible in life-style that it allows you to do things that you normally shouldn't or needn't do.
Hg is like Morgan Freeman.

In Windows/Mac you would use TortoiseSVN, which installs as an appendage to Windows File Explorer. You activate SVN features thro the right-click context menu.

In Linux, there are various SVN interfaces like Rabbit SVN.

The equiv for using Hg would be TortoiseHg for Windows, Mac ad Linux.

TortoiseSVN or TortoisHg are user interface that are installed together with their command line base.

These tools are called Version Control Repositories or Version Control Systems (VCS).

Hg intrinsically allows you to do multi-rev diff.

Hg, like Git, also makes it more convenient for multiple writers to work on the same story, each with their own local repository - therefore not requiring a shared server.

As long as they are not modifying the same file, merging the repos is a simple process. If additions, deletions but not modifications are done to the same files, merging repos is also a quick and simple affair.

Both SVN and Hg allow you to pick a file or a folder and conjure a revision tree. A tree visualizing the revision and their individual changes.

Further & off-scope advice

In VCS, you should have a project that contain a whole directory structure of your novel and auxiliary images, video, development ideas, scripts, screen-play, etc. You track a whole project not a singular file. Every time you commit a change, only the change is stored.

eg. the following folders.

+The Wind and the Hollow
 + Chapters (Your novel)
 + StoryTrees (Draw your rough story development)
 + Genealogy (keep track of your characters)
 + Notes (Take notes especially when you wake up from a dream or witness interesting events)
 + Pictures & Illustrations
 + Storyboard (Development of your story without worrying about language)
 + AudioVisual (Your audiovisual notes - excerpts of plays, movies for you to develop your descriptive style)
 + Phrases and style (Storage of useful phrases under various situations)

To exploit your VCS, normally your project would be like this

+The Wind and the Hollow
  = trunk
  = branches
  = tags

Under your trunk, you will place your normal story development:

=trunk
 + Chapters
 + StoryTrees
 + Genealogy
 + Notes
 + Pictures
 + Storyboard
 + AudioVisual
 + Phrases and style

Every time you commit a set of changes, the revision number would increment.

Then, every time a significant development occurs in your story you wish to bookmark, you could tag it. In Hg, bookmark and tags are different. A tag helps you to get to a version of the story and inspect it in all its glory.

However, branches allow you to store different versions of your project.

3
  • But revision tree doesn't really show me how the text in the document changed, right?
    – Seanny123
    Oct 17, 2013 at 10:31
  • Hg intrinsically allows you to do multi-rev diff. Oct 17, 2013 at 14:09
  • Can you show me an example how? I did some Googling, but all I could find was the revision tree.
    – Seanny123
    Oct 17, 2013 at 22:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.