====== OpenLab 2014/05 | Git, GitHub, TravisCI intro ====== * Date: 17. 10. 2014 * Workshop by: Martin Ukrop * Cake: almost a lie, {{:public:crocs:cake_20141017_800px.jpg?linkonly|evidence here}} * Cake by: Karel Kubíček Introduction to [[https://en.wikipedia.org/wiki/Git_(software)|Git versioning system]]. Various public repositories, most notably [[https://github.com|GitHub]]. Features of GitHub. Connecting GitHub repository to [[https://travis-ci.org/|Travis Continuous Integration system]]. ===== Repository ===== The repository created during this OpenLab is publicly available from https://github.com/mathius/openlab-git-intro. ===== Further notes ===== Below are some notes used for the workshop. * SCM in general, SVN vs. GIT. (ungit demo) * git installation * CLI unix: add module git * CLI win: [[https://msysgit.github.io/|Git for Windows]], [[http://git-scm.com/downloads|Git SCM]] * GUI win: [[https://windows.github.com/|GitHub for Windows]] * GUI win/mac: [[http://www.sourcetreeapp.com/|SourceTree]] * GUI win/mac/linux: [[https://github.com/FredrikNoren/ungit|ungit]] ([[http://putshello.wordpress.com/2014/08/14/installing-git-for-windows-git-ungit/|installation on windows]]) * git resources: man pages, [[http://git-scm.com/book|ProGit]], [[http://think-like-a-git.net/|Think like a git]] * [[http://github.com|GitHub]] account creation * GIT intro (distributed, modified-staged-commited, hash ID) * basic usage (clone, add commit, push, pull) * Task: create new repository, add sourcecode (factorial), commit, push, * branching introduction, branching local, network view * git branch, git checkout, git merge * git log --oneline --abbrev-commit --all --graph --decorate --color * split factorial functionality into separate file in test branch, update Readme in the meantime * Task: make new branch, make changes in both master and new, merge, push * GitHub support tools * wiki, issues, tags, releases, stats * GitHub Education: [[https://education.github.com/pack|Student developer pack]] * very brief intro to GNU Make * Makefile (targets, dependencies, rules) * Task: create makefile for your project * CI intro, TravisCI * config creation, GitHub hook activation, build notification * Task: get email about passed build * unit testing * CATCH unit tests, add header, create testing source * modify Makefile to include testing build and test target * Task: automatic tests on TravisCI