

a very large data file that is named data.txt, which with the above config would normally be considered a small file. There is one caveat to that: git annex add (but not git add) takes a -force-large or -force-small argument to override the configs and force adding files as either large or small (traditional) files. Both git add and git annex add will look up if files should be “large” (see previous section), and then either commit their changes traditionally, or commit them as large files. Staging, committing, merging, and diffing files or change sets operates identically to “normal git”. rawdata to be considered a large file and therefore tracked by git annex). adding *.Rmd to the list of small files, or forcing everything under.

One can customise things further if there are certain files or directories that should always be considered either small or large (e.g. We then tell git annex to track any file larger than 10kb, excluding any shell, R, or python scripts. data (but not other directories called data) to be ignored by git altogether. One needs to initialise git annex separately. Initialisation and configurationįirst, let’s make the git repo. The following steps/tips aren’t necessarily ordered, and are to some extent specific to this analysis, but hopefully the example I give here is illustrative enough to be useful more broadly. We work on our laptops, and use a centralised large server and cluster (with shared file system) to perform the larger analyses. The below commands give a brief outline of a hypothetical workflow.įor context, we are working on a large collaborative population genomics project in Arabidopsis, using the Acanthophis variant calling pipeline. One makes changes, then stages, commits, and pushes them to a remote. OK, so how do we actually use it? The git annex workflow is very similar to that of git.
#Git annex documentation software#
If you’re not, or would like a refresher, I suggest either the git tutorial, or the software carpentry git course. I’ll be assuming you’re already familiar with git itself. Aside from this, git-annex behaves nearly identically to git itself, largely because it is just a wrapper around git for most other operations, as we will see below.

One can then separately coordinate syncing of these large data files, either individually or in aggregate.

Git-annex works on top of git, detecting large files and tracking them as symlink pointers to a hidden data store. How does git-annex differ from git? To a first approximation, it doesn’t. git-annex is to my eyes the most applicable one to the typical biological data scientist 1. Git itself cannot handle this volume of data, and so various additions and extensions to git have been developed.
#Git annex documentation free#
Despite being one of the largest and most active free software projects in the world, even the Linux kernel is dwarfed by nearly any modern genomics dataset: a single sample from the example Arabidopsis project below is over 1GB of sequence data, and the total project consists some 12TB of raw data.
#Git annex documentation code#
The Linux kernel (for which git was originally developed) is about 30 million lines of code, totalling hundreds of megabytes of source code and accessory files. Similarly, git (and other version control software before it) made collaborative software development far easier and more accessible than mailing patches to some development mailing list.īut why git-annex specifically? Git itself was designed to work with code, but we wish to track not just our code, but also our raw data and some intermediate output data. To analogize somewhat loosely, tools like Google Docs are dramatic improvements over the traditional method of emailing around a million Word docs named like Document_final_v3_revisions_supervisorcomments-v2_final.docx. We have been doing computation analyses for as long as there have been computers, so why bother with all this fanciness? In a nutshell: collaboration. I’m not going to re-hash the excellent git-annex documentation, instead I’ll show how I have used it in my recent work. This post is a brief case study on using git-annex to version an analysis workspace between multiple collaborators.
