Every time I apply for a job I write a new cover letter, research statement, and teaching statement. While each statement is personalized for the specific job, I tend to do a lot of cutting and pasting and little new writing (yes I have a whole collection of past statements). This seems like something that might be useful to keep under version control. how do people manage the different versions of the cover letter, research statement, and teaching statement?
My research and teaching statement have a lot of commented text (I write in LaTeX). This is because I amend each document specifically for each job application - as you do.
The detail in which I describe each topic changes depending on what job I am applying for. I comment out text which is too detailed for the job to which I am applying. However, for other job applications, I might like to have that text put back into my statement, or write new text, to be perhaps commented out in a future application for a different job.
I now have documents with a lot of phrases from which I can "pick and choose", depending on the specific job to which I am applying, and amend appropriately. It isn't really version control, I know, but I find it useful to have a selection of wordings to choose from in one place so that I can compare and contrast things like the level of detail and the tone. This isn't particularly onerous as these documents do not total more than 2 - 3 pages in my case.
I am in the middle of my job search and I do the following to keep myself organised:
Directory structure: ('#' for comments and '/' for directories)
#job ad and README.txt in here
/Not Interested or Expired
/Application Materials #pdfs, copied over from git repos
/RS-git #git repo
#possibly a generic Research Statement in here
#Latest Research Statement in one of these
#similarly for TS, CV, CL
/TS-git #git repo for Teaching Statements
/CV-git #git repo for CV
/CL-git #git repo for Cover Letters
For each job ad I have a directory for the ad, a readme with notes to myself, and a directory for the application I am building/submitting. I then create related directories in each of the RS, TS, CV, CL directories, so that I can quickly start the application without affecting other concurrent ones. Importantly I never have to pull an earlier commit or mess around with branches to switch between job applications. This last bit is important because I often work on two applications at the same time, either to copy-paste between them, or simply to meet simultaneous deadlines.
One last note, my are in ISO format, so they appear in order of submission deadline.
While I keep my correspondence in version control, I don't have the same document for cover letters that go to different schools. I simply prepend the name of the school to all of my correspondence for that school, and/or file everything into folders with the school's name.
As you point out, you end up personalizing almost everything (even CVs), so we aren't talking about one document for which you need version control. You want version control for all the documents, but each document has its own identity.
Now, if you do have a unique document that will be sent to different schools, you would want to create one document, and then create a symbolic link (or an alias) from one original to each school folder where it will be sent. Then, when you update the original, all the symbolic links point to the same file.
Finally, you may want to consider using a word processor that has the ability to use templates, but I find that is sometimes just as much work as simply duplicating a file and changing the duplicate.