Using Subversion Externals for Reusing Bibliographic Information

Since you will reuse your bibliographic data, that is your BibTeX file, for all publications it makes sense to store your bibliography information in one central place. You may have guessed that I will argue that you should store your bibliography also in a subversion repository. The advantage of this method is that you can integrate the bibliography to the repository by reference instead of copying it into each paper's repository.Integrating external repositories by reference is enabled by so-called subversion externals. Let's assume that my bibliographic information is stored in a repository with the URL svn://svn.paperrepo.net/plessl/bibliography. To checkout a normal working copy of the repository you would use the command:

svn co svn://svn.paperrepo.net/plessl/bibliography
For integrating the latest version of the bibliography to the "trunk" directory by reference, you have to add an svn:externals property to the trunk directory:
svn propset 'svn:externals'     'bib svn://svn.paperrepo.net/plessl/bibliography' trunk
When you update your working copy the next time, a directory called "bib" will be created in "trunk" and the contents of the repository svn://svn.paperrepo.net/plessl/bibliography will checked out to this directory. Whenever you updated your subversion repository using svn update, the contents of the "bib" directory will be updated to the latest version.Subversion externals provides a flexible way of referencing and integrating other repositories. For example, if you would like to include bibliographic data from multiple authors, you can specify multiple repositories, each on a separate line of the svn:external property. Setting multi-line properties on the command line can be cumbersome. Thus, I suggest to use the svn propedit command that allows you to edit the property with your text editor.
svn propedit 'svn:externals' trunk
Now use your editor for editing the property value, e.g.:
bib_plessl svn://svn.paperrepo.net/plessl/bibliographybib_mayer  svn://svn.paperrepo.net/mayer/bibliography
You customize the editor that is used by setting the SVN_EDITOR environment variable. Otherwise, your default editor as specified by the environment variables VISUAL or EDITOR are used.By default, subversion checks out always the latest revision of the referenced repository. But you can also specify a specific version of the referenced repository instead by including the desired revision number. Using the following svn:external property locks the revision that is checked out into the "bib" directory to revision 1234:
svn propset 'svn:externals'  'bib -r 1234 svn://svn.paperrepo.net/plessl/bibliography' trunk
This method can be used to freeze the version of the bibliography after the editing process has finished. Written January 12th, 2007