Your SlideShare is downloading. ×
0
Git & version control
What is version control?●   A way to:    –   Keep a log of all the changes made to your scripts        & data    –   Synch...
Version control - example●   A project on which I    am working on at the    moment (Genotype    Space)●   Started working...
Version control – how does it work?●   Every time I make significant changes to a    script, or get new results, I save a ...
Example log
Advantages of version control●   What was the version of my scripts when I    generated the results included in the paper,...
Advantages of version control●   What was the version of my scripts when I    generated the results included in the paper,...
Advantages of version control●   What was the version of my scripts when I    generated the results included in the paper,...
Git and Version control●   A popular software for version control is “git”●   Used for the Linux kernel●   Adopted by http...
How to get git?●   http://git-scm.com/●   Linux: apt-get install git
How to get git?●   http://git-scm.com/●   Linux: apt-get install git●   Windows, Mac, Linux: you can install    “tortoise-...
Definition: the repository●   The repository is the folder where all the    scripts (and eventually results) of a project ...
Example of repository: bedtools
Examples of repository: github
Example of repository: database            lecture
How to create a repository           (on your computer)●   Connect to evopcompute●   Create a folder●   “cd” to it●   Type...
git init●   The command git init creates a new repository    in the current folder●   All the files and subfolder will be ...
git clone●   Alternatively, you can “clone” an existing    repository●   git clone <url-to-repository>
git add●   Lets add a new file to the repository●   First, lets create a file:    –   gedit README.txt●   Now, lets tell g...
Effects of git add●   The command git add tells git that you want to    keep track of all the changes of that file
git commit●   Lets save our first revision:    –   git commit README.txt -m “DOCS: added a        readme”
git commit●   Lets save our first revision:    –   git commit README.txt -m “DOCS: added a        readme”●   Explanation: ...
git log●   Lets see our new commit:    –   git log
Lets modify our file: git diff●   The command git diff tells you all the changes    made since the last commit●   Lets mod...
Lets make more commits–   echo “new line after first commit” > README.txt–   git diff–   git commit -m “DOCS: added a new ...
git revert●   If we dont like some new changes, we can    revert them:    –   git log    –   git revert <id of the revision>
Syncronyzing a repository with           github / bitbucket●   A common practice is to have multiple copies    of your cod...
How to synchronize your repo with             github●   Create an account at http://github.com●   Follow the instructions ...
git pull & push●   gt clone → download a repository from    github/bitbucket, for the first time●   git pull → download th...
Git pull & push – best practices●   Always download the latest changes (git pull)    before uploading new ones (git push)●...
How to collaborate on             github/bitbucket●   Lets imagine we want to contribute to    biopython:
How to collaborate on               github/bitbucket●   To contribute to a open source repository on    github/bitbucket, ...
Fork repository
Forked Repository
Contributing to biopython  map of repositories   Official BioPython repo        Fork of BioPython on your   on github.com ...
Contributing to biopython●   Make your changes on your local computer,    and upload them to your forked repository on    ...
Contributing to biopython
Pull Request
Pull Request
Version control - resume●   Version control is a good practice to keep a    log of all the changes in your code●   Many bi...
Having fun with stats(my Genotype Space project)
Having fun with stats(my Genotype Space project)              ᄎ
Upcoming SlideShare
Loading in...5
×

Version control

5,034

Published on

Introduction to version control, lecture at the "Programming for Evolutionary Biology" workshop in Leipzig 2013

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,034
On Slideshare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
22
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Version control"

  1. 1. Git & version control
  2. 2. What is version control?● A way to: – Keep a log of all the changes made to your scripts & data – Synchronize all the copies of your scripts in all your computers – Be able to go back to previous working versions
  3. 3. Version control - example● A project on which I am working on at the moment (Genotype Space)● Started working on April 2012● ~2,000 revisions
  4. 4. Version control – how does it work?● Every time I make significant changes to a script, or get new results, I save a new “revision”● Each revision is associated to a description, and a date
  5. 5. Example log
  6. 6. Advantages of version control● What was the version of my scripts when I generated the results included in the paper, 2 years ago?
  7. 7. Advantages of version control● What was the version of my scripts when I generated the results included in the paper, 2 years ago?● Ive accidentally removed a portion of my code. Can I go back?
  8. 8. Advantages of version control● What was the version of my scripts when I generated the results included in the paper, 2 years ago?● Ive accidentally removed a portion of my code. Can I go back?● Ive found a folder containing scripts and results. Are the scripts updated to the latest version?
  9. 9. Git and Version control● A popular software for version control is “git”● Used for the Linux kernel● Adopted by http://github.com, popular hosting website for open source projects
  10. 10. How to get git?● http://git-scm.com/● Linux: apt-get install git
  11. 11. How to get git?● http://git-scm.com/● Linux: apt-get install git● Windows, Mac, Linux: you can install “tortoise-hg”, an – http://tortoisehg.bitbucket.org/
  12. 12. Definition: the repository● The repository is the folder where all the scripts (and eventually results) of a project are stored
  13. 13. Example of repository: bedtools
  14. 14. Examples of repository: github
  15. 15. Example of repository: database lecture
  16. 16. How to create a repository (on your computer)● Connect to evopcompute● Create a folder● “cd” to it● Type git init
  17. 17. git init● The command git init creates a new repository in the current folder● All the files and subfolder will be included in the repo (although you will have to add them manually)
  18. 18. git clone● Alternatively, you can “clone” an existing repository● git clone <url-to-repository>
  19. 19. git add● Lets add a new file to the repository● First, lets create a file: – gedit README.txt● Now, lets tell git to track it: – git add README.txt
  20. 20. Effects of git add● The command git add tells git that you want to keep track of all the changes of that file
  21. 21. git commit● Lets save our first revision: – git commit README.txt -m “DOCS: added a readme”
  22. 22. git commit● Lets save our first revision: – git commit README.txt -m “DOCS: added a readme”● Explanation: – git commit → create a new commit – README.txt → the new commit refers only to the file README.txt – -m “....” → description of the commit
  23. 23. git log● Lets see our new commit: – git log
  24. 24. Lets modify our file: git diff● The command git diff tells you all the changes made since the last commit● Lets modify our README.txt file, and see how the changes are tracked – echo “new line after first commit” > README.txt – git diff
  25. 25. Lets make more commits– echo “new line after first commit” > README.txt– git diff– git commit -m “DOCS: added a new line”– echo “another new line after first commit” > README.txt– git commit -m “DOCS: added another new line”– git log
  26. 26. git revert● If we dont like some new changes, we can revert them: – git log – git revert <id of the revision>
  27. 27. Syncronyzing a repository with github / bitbucket● A common practice is to have multiple copies of your code, stored in different places● Github and bitbucket are two free hosting services for code● Bitbucket offers unlimited space hosting, so you can keep a backup of your code there
  28. 28. How to synchronize your repo with github● Create an account at http://github.com● Follow the instructions on setting up a ssh key – https://help.github.com/articles/set-up-git – https://help.github.com/articles/generating-ssh-key s● Create a new repository from the web interface
  29. 29. git pull & push● gt clone → download a repository from github/bitbucket, for the first time● git pull → download the latest changes from your repository (e.g. github/bitbucket), and update the code on your computer● git push → upload all the latest changes to the remote repo
  30. 30. Git pull & push – best practices● Always download the latest changes (git pull) before uploading new ones (git push)● Otherwise, you will have some version conflicts● Never force a git push
  31. 31. How to collaborate on github/bitbucket● Lets imagine we want to contribute to biopython:
  32. 32. How to collaborate on github/bitbucket● To contribute to a open source repository on github/bitbucket, we will have to: – “fork” the repository using the web interface – Make changes to our forked repository – Send a “pull request” to the original repository once ready
  33. 33. Fork repository
  34. 34. Forked Repository
  35. 35. Contributing to biopython map of repositories Official BioPython repo Fork of BioPython on your on github.com FORK account on github.com PULL REQUEST CLONE Local copy of your BioPython fork, on your computer
  36. 36. Contributing to biopython● Make your changes on your local computer, and upload them to your forked repository on github● When your changes are ready for biopython, do a “Pull request”
  37. 37. Contributing to biopython
  38. 38. Pull Request
  39. 39. Pull Request
  40. 40. Version control - resume● Version control is a good practice to keep a log of all the changes in your code● Many bioinformatics tools are developed under version control
  41. 41. Having fun with stats(my Genotype Space project)
  42. 42. Having fun with stats(my Genotype Space project) ᄎ
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×