Advanced Subversion Commands

Rationale

There are some Subversion and Terminal commands that those working in the LEMDO repository may occassionally use. They are more advanced commands, meaning that they should only be done by those who are very comfortable working in the command line and who have consulted with the LEMDO Team, as there is some risk associated with them. This documentation will explain the practice for adding, deleting, and moving files in the Subversion repository as well as for showing the commit log for the Subversion repository and comparing versions of a file in Terminal.

Practice: Add Files to the Repository

To add a file to the centralized LEMDO repository, you must first create and save it in the correct folder. For example, if you wanted to create an annotations file for the Merchant of Venice edition, you would need to first create the file in Oxygen, validate it, and save it in the data/texts/MV/app folder. For best practices around naming files, read Name Files: Naming Conventions.
In Terminal, run an svn status to ensure that you have created the file in the correct place. You should see a question mark (?) on the left side of the window followed by the pathway to your new file and the file name. This indicates that you have created a file, but you have not yet saved it to the centralized repository.
Navigate down the pathway to the lowest possible folder using the command cd. If you were adding the annotations file as described above, the command would be cd data/texts/MV/app. Once you are there, run svn add followed by a space and the full name of the file that you wish to add (including the file extension). Using the same example as above, your command would be svn add emdMV_M_annotation.xml. The question mark on the left side of the Terminal window should now be an upper-case “A”. This queues the file to be added when you commit, but it does not send it to the centralized repository.
You can now svn commit as normal.

Step-by-Step: Add Files to the Repository

Validate your file in Oxygen and save it in the correct folder.
In Terminal, run svn status.
cd to the lowest level before your file.
svn add [filename].xml
svn commit as usual.

Practice: Move a File

If you have a file that is saved in the wrong folder (for example, if you saved your edition bibliography in the app folder when you should have saved it in the crit folder) you will use the command svn mv in the Terminal to move it.
The first step to moving your file is to determine where it is currently located and where you want it to be located. You will need to have the full pathway for both folders (the one that it is currently in and the one that you wish for it to be in).
In Terminal, navigate to the lowest shared ancestor directory of both folders (i.e., the level before the pathways diverge). For example, if you wanted to move the file emdFV_bibliography.xml from lemdo/data/texts/FV/app to lemdo/data/texts/FV/crit, the lowest shared ancestor is the FV directory.
You will then need to use the SVN command svn mv to move your file. There are three parts to this command:
The preface svn mv.
The fileʼs current URL (the pathway to where the file is currently located and the full file name, including the extension).
The fileʼs desired URL (the pathway to where you want the file to be located and the full file name, including the extension).
Using the same example as before, to move the emdFV_bibliography.xml file from app to crit, you would type the command svn mv app/emdFV_bibliography.xml crit/emdFV_bibliography.xml. Once you have typed in the full command, press the Enter/Return key.
When we move a file, we are deleting it from one location and adding it to another, so you will get the messages for both of those actions. The first message will have a “D” on the left side followed by the old pathway (including the full file name). The second message will have an “A” on the left followed by the new pathway. This means that you have queued the file to be moved, but have not yet sent the change to the centralized repository.
You can now svn commit as normal, noting in your message that you moved a file.

Step-by-Step: Move a File

cd into the lemdo directory.
Type svn mv followed by the current url of the file and the new desired file url (e.g., svn mv app/emdMV_Bibliography.xml crit/emdMV_Bibliography.xml) and press Enter/Return.
Commit your files to the LEMDO repository (e.g., svn commit -m "Moved FV bibliography from the app folder to the crit folder.").

Practice: Delete Files from the Repository

Use caution when you delete files from Subversion; deleted files can be recovered, but recovering files is a time-consuming process. You should consult with the LEMDO team before deleting a file from the LEMDO repository. If you do delete a file, you will first open Terminal and navigate to the lowest level using the command cd.
Once you are in the lowest possible folder, type the command svn del followed by a space and then the full name of the file that you wish to delete (including the extension). For example, to delete the file testFile.xml, you would run svn del testFile.xml. You will get a message in Terminal with a “D” on the left followed by the name of the file that you are deleting. This indicates that you have queued the file to be deleted when you commit, but that you have not yet deleted it from the centralized repository.
Commit your change as usual.

Step-by-Step: Delete Files from the Repository

cd into the lowest possible level.
svn del [filename].xml
svn commit with a message that you have deleted a file.

Practice: Open Commit Logs

The svn log command makes it possible to read SVN logs from recent commits, thereby enabling users to track each other’s work. To see recent commits, follow these steps:
Enter svn log -l followed by a space and the number of logs you wish to see. For example, if you wanted to see 20 logs, you would type svn log -l 20. Note that the character after the dash is a lower-case “L”.
To see the very latest log entry, enter svn log -r HEAD.
To see the log entry for a specific revision, enter the number of the revision after -r. For example, svn log -r 1259 will return revision number 1259.
To see the log entries for a specific date range, type svn log -v -r {yyyy-mm-dd}:{yyyy-mm-dd} (where the first yyyy-mm-dd is replaced by the start of the date range that you are interested and the second is replaced by the end of the date range). For example, svn log -v -r {2024-01-01}:{2024-01-14} will return all commits made between January 1 and January 14, 2024.
The command line will respond to these commands with a log entry or a series of log entries that look(s) like this:
r10098 | mrothwell | 2022-08-04 15:44:25 -0700 (Thu, 04 Aug 2022) | 1 line
adding MoMS sources from MoEML to LEMDO BIBL.
Each individual log entry corresponds with a commit submitted to SVN. A log entry provides the revision number, the person who did the commit, the exact date and time of the commit, and the comment they provided. The information provided by log entries can be very helpful when attempting to solve mistakes and errors.

Practice: Compare Versions of a File

The svn diff command allows you to compare two versions of the same file. It will show you the exact changes that were made between one revision and another in a particular file. This command is useful if you accidentally overwrite some work in a file and need to consult an earlier version of the file to recover what you deleted.
To use this command, type svn diff -r followed by the a space, the revision number of the first revision that you want to compare, a colon, the revision number of the other revision that you want to compare, and finally a space and the full file name of the file that you want to compare versions of. For example, svn diff -r 1276:1279 PERS1.xml will return log entries for revisions to PERS1.xml numbered 1276 through to 1279.

Prosopography

Janelle Jenstad

Janelle Jenstad is a Professor of English at the University of Victoria, Director of The Map of Early Modern London, and Director of Linked Early Modern Drama Online. With Jennifer Roberts-Smith and Mark Kaethler, she co-edited Shakespeare’s Language in Digital Media: Old Words, New Tools (Routledge). She has edited John Stow’s A Survey of London (1598 text) for MoEML and is currently editing The Merchant of Venice (with Stephen Wittek) and Heywood’s 2 If You Know Not Me You Know Nobody for DRE. Her articles have appeared in Digital Humanities Quarterly, Elizabethan Theatre, Early Modern Literary Studies, Shakespeare Bulletin, Renaissance and Reformation, and The Journal of Medieval and Early Modern Studies. She contributed chapters to Approaches to Teaching Othello (MLA); Teaching Early Modern Literature from the Archives (MLA); Institutional Culture in Early Modern England (Brill); Shakespeare, Language, and the Stage (Arden); Performing Maternity in Early Modern England (Ashgate); New Directions in the Geohumanities (Routledge); Early Modern Studies and the Digital Turn (Iter); Placing Names: Enriching and Integrating Gazetteers (Indiana); Making Things and Drawing Boundaries (Minnesota); Rethinking Shakespeare Source Study: Audiences, Authors, and Digital Technologies (Routledge); and Civic Performance: Pageantry and Entertainments in Early Modern London (Routledge). For more details, see janellejenstad.com.

Joey Takeda

Joey Takeda is LEMDO’s Consulting Programmer and Designer, a role he assumed in 2020 after three years as the Lead Developer on LEMDO.

Mahayla Galliford

Research assistant, remediator, encoder, 2021–present. Mahayla Galliford is a fourth-year student in the English Honours and Humanities Scholars programs at the University of Victoria. She researches early modern drama and her Jamie Cassels Undergraduate Research Award project focused on approaches to encoding early modern stage directions.

Martin Holmes

Martin Holmes has worked as a developer in the UVicʼs Humanities Computing and Media Centre for over two decades, and has been involved with dozens of Digital Humanities projects. He has served on the TEI Technical Council and as Managing Editor of the Journal of the TEI. He took over from Joey Takeda as lead developer on LEMDO in 2020. He is a collaborator on the SSHRC Partnership Grant led by Janelle Jenstad.

Navarra Houldin

Project manager 2022–present. Textual remediator 2021–present. Navarra Houldin (they/them) completed their BA in History and Spanish at the University of Victoria in 2022. During their degree, they worked as a teaching assistant with the University of Victoriaʼs Department of Hispanic and Italian Studies. Their primary research was on gender and sexuality in early modern Europe and Latin America.

Tracey El Hajj

Junior Programmer 2019–2020. Research Associate 2020–2021. Tracey received her PhD from the Department of English at the University of Victoria in the field of Science and Technology Studies. Her research focuses on the algorhythmics of networked communications. She was a 2019–2020 President’s Fellow in Research-Enriched Teaching at UVic, where she taught an advanced course on Artificial Intelligence and Everyday Life. Tracey was also a member of the Map of Early Modern London team, between 2018 and 2021. Between 2020 and 2021, she was a fellow in residence at the Praxis Studio for Comparative Media Studies, where she investigated the relationships between artificial intelligence, creativity, health, and justice. As of July 2021, Tracey has moved into the alt-ac world for a term position, while also teaching in the English Department at the University of Victoria.

Orgography

LEMDO Team (LEMD1)

The LEMDO Team is based at the University of Victoria and normally comprises the project director, the lead developer, project manager, junior developers(s), remediators, encoders, and remediating editors.

Metadata