

So their build artifacts go into the appropriate locations ( /bin, /lib, /include). It also helps Bob keep track of intentional and unintentional copies of files, and logs information he can use to decide when its time to duplicate the content of old drives.
#Git annex github install
In each of these modules you would install their libraries and binaries with -prefix=$PROJ_DIR (where $PROJ_DIR is the top root of your Git repo). Run in a cron job, git-annex adds new files to archival drives at night. Git modules can be frozen to a specific version, or updated (e.g., git submodule foreach git pull followed by git submodule sync). My project directory would look something like: /externalįor example, BWA can be sourced as: git submodule add external/bwa There are other ways to do this, and possibly a better way than this to manage updates conveniently.įor the second question, I would include the other dependencies as Git submodules (if a Git repo is available).

To make the template repo read-only (to avoid accidental push of non-template code), delete the push URL: git remote set-url -delete -push template You can do this from a new repository or retrofit existing repos with the template: git remote add template If you treat it as a Github fork you don't have to communicate with yourself through pull requests (although that can be very helpful for logging), just pull from the upstream repo. You can then use a Github fork to instantiate it duplicate it as another repository, or you can just set the template repository as an additional upstream remote.
#Git annex github software
What is the best way to achieve this?įor the first question, you can maintain a basic template repository with a certain directory structure and all the associated software dependencies. It feels a bit odd to be sending myself 'pull requests', but I also do not want a single shared repository.Ī secondary question, I'd quite like to be able to specify that the repository sources things like BWA from their canonical repositories, ideally specifying the version used to help with reproducibility. What is the correct workflow using Git? I am specifically confused as to the best way to employ Git features such as branches, tags, fork/pull models or a shared repository model.
#Git annex github update
Ideally I would also like the other projects to be easily update their basic template. I may from time to time add new scripts or software that I would like to make it back to the original bioinformatics_template repository.

I then would like this repository to be a new repository (sometimes on Github, sometimes just stored locally). When I start a new analysis, I want to make a clone/fork/whatever of my repository. Some of the software is commonly used stuff like BWA and samtools. Let's say I have a Github repository 'bioinformatics_template' where I put extremely commonly used software, data and scripts.
