Why of version control

Post on 10-May-2015

1741 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

A short introduction to version control

Transcript

Version control

What?Why?How?

Lex Nederbragt, lex.nederbragt@ibv.uio.no

What is version controlAnnotated log of changes

Backup system

Collaboration tool

For any file type, but text files work best

Code!

A definitionVersion control

A tool for managing changes to a set of files

Each set of changes creates a new revision of the files

Allows users to recover old revisions reliably

Helps manage conflicting changes made by different users

From the Software Carpentry website

Use case I: reviewer #3Paper submitted

After a couple of months Reviewer 3 writes:

“Please generate figure 3 with a higher resolution”

Use case I: reviewer #3Your reply to the reviewer

We have continued to work on the code that had generated the figures for the original paper,

and couldn’t recreate the exact code used

Our new code generates a graph which slightly alters the interpretation

Use case I: reviewer #3How would version control have helped?

‘Turn back the clock’ to the code used

Rerun analysis

Recreate exact figure

Use case II

Use case IIFrom my own work:

$ cd scripts$ lsblat_parse4.pl old_versions snps_flanks_2_fastq.pl

$ ls old_versions/blat_parse2.pl blat_parse_attemp1.pl blat_parse.pl.bak blat_parse.plblat_parse3_backup.plblat_parse3.pl

Use case IIHow would version control have helped?

Older versions ‘hidden’ but still accessible

Annotated history of all changes available

Bonus:Allows for safely trying out changes

Use case III: collaborationExample: Wikipedia

http://en.wikipedia.org/wiki/Version_control

Fully traceable history of all contributions

Use case III: collaborationExample: Google docs

Fully traceable history of all contributions

Use case IV: how you workUsing version control:

makes me change code in small stepsmakes me log (annotate) my changes

makes me feel safe to change codemakes it easier to try out things

“But, this is way too complex!”

merge

tag

checkout

rebase

branch

pull request

conflict

https://www.atlassian.com/git/workflows

fetch

pull

pushdiff log

status

“But, this is way too complex!”Can keep it very simple

Just one piece of code, only you work on it

A few scripts in one folder, made available online

A large code base with multiple contributors

Private versus public

Local, private git repo

Shared, central, private git repo

Shared, public git repo

My advice

Try git

See

http://software-carpentry.org/v5/novice/git/

top related