For a brief user-level introduction to CMake, watch C++ Weekly, Episode 78, Intro to CMake by Jason Turner. LLVM’s CMake Primer provides a good high-level introduction to the CMake syntax. Go read it now.
After that, watch Mathieu Ropert’s CppCon 2017 talk Using Modern CMake Patterns to Enforce a Good Modular Design (slides). It provides a thorough explanation of what modern CMake is and why it is so much better than “old school” CMake. The modular design ideas in this talk are based on the book [Large-Scale C++ Software Design](https://www.amazon.de/Large-Scale-Soft
#!/usr/bin/env python2.7 | |
from __future__ import print_function | |
import commands | |
import os | |
import stat | |
from gitlab import Gitlab | |
def get_clone_commands(token, repo_root): | |
con = Gitlab("http://gitlab.your.domain", token) |
A triangle workflow involves an upstream project and a personal fork containing a development branch of the project.
This configuration makes git pull
merge changes from the upstream but git push
send local commits to the personal fork.
However those config settings only work on relatively recent versions of git; 1.7.9 doesn't support the required remote.pushdefault
config setting so you will have to explicitly tell git push
which remote to push to.
This gist does not attempt to explain exactly what these commands do, it's intended as a cheat-sheet/reminder.