From 191cc2b82f9e651080ae6a79ea668ceccfda1c25 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Mon, 9 May 2016 05:46:39 -0400 Subject: [PATCH] Drawing pictures --- _episodes/01-tooling.md | 34 ++++--- fig/forking.odg | Bin 0 -> 14469 bytes fig/forking.svg | 211 +++++++++++++++++++++++++++++++++++++++ fig/repository-links.odg | Bin 0 -> 12552 bytes fig/repository-links.svg | 169 +++++++++++++++++++++++++++++++ 5 files changed, 402 insertions(+), 12 deletions(-) create mode 100644 fig/forking.odg create mode 100644 fig/forking.svg create mode 100644 fig/repository-links.odg create mode 100644 fig/repository-links.svg diff --git a/_episodes/01-tooling.md b/_episodes/01-tooling.md index 0f63add..58b8eb7 100644 --- a/_episodes/01-tooling.md +++ b/_episodes/01-tooling.md @@ -15,35 +15,45 @@ keypoints: - "Each page's configuration is stored at the top of that page." - "Groups of files are stored in collection directories whose names begin with an underscore." --- -This episode describes tools we use to manage lessons, -which simplify many tasks but make other things more complicated. +This episode describes the tools we use to build and manage lessons. +These simplify many tasks, but make other things more complicated. ## Repositories on GitHub -All of our lessons are stored in Git repositories on GitHub. -Git uses the term *clone* to mean "a copy of a repository", -while GitHub uses the term *fork* to mean "a copy of a GitHub-hosted repo that is also hosted on GitHub" +Our lessons are stored in Git repositories (or "repos") on GitHub. +We use the term *fork* to mean "a copy of a GitHub-hosted repo that is also hosted on GitHub" and the term *clone* to mean "a copy of a GitHub-hosted repo that's located on someone else's machine". In both cases, the duplicate has a reference that points to the original repo. -A user on GitHub can only have one fork of a particular repo. -This is a problem for us because an author may be involved in writing several lessons, -each of which has its own website repo. -Those website repositories ought to be forks of the [template repository]({{ site.template_repo }}), -but since GitHub doesn't allow that, -we use [GitHub Importer][github-importer] when creating new lessons. +In an ideal world, +we would put all of the common files used by our lessons +(such as the CSS style files and the image files with project logos) +in a template repo. +The master copy of each lesson would be a fork of that repo, +and each author's working copy would be a fork of that master: + +![Forking Repositories]({{ site.root }}/fig/forking.svg) + +However, GitHub only allows a user to have one fork of any particular repo. +This creates a problem for us because an author may be involved in writing several lessons, +each with its own repo. +We therefore use [GitHub Importer][github-importer] to create new lessons. After the lesson has been created, we manually add the [template repository]({{ site.template_repo }}) as a remote called `template` to update the lesson when the template changes. +![Repository Links]({{ site.root }}/fig/repository-links.svg) + ## GitHub Pages If a repository has a branch called `gh-pages` (short for "GitHub Pages"), GitHub publishes its content to create a website for the repository. Websites can be static HTML pages, which are published as-is, -or can use [Jekyll][jekyll] as described below. +or can use [Jekyll][jekyll] as described below +to compile HTML and/or Markdown pages with embedded directives +to create the pages for display. If the repository's URL is `https://github.com/USERNAME/REPOSITORY`, the website is `https://USERNAME.github.io/REPOSITORY`. diff --git a/fig/forking.odg b/fig/forking.odg new file mode 100644 index 0000000000000000000000000000000000000000..d5d0067b1b62a56ff0df0fcc1f47ebff12e32070 GIT binary patch literal 14469 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + template + + + + + + master copyof lesson A + + + + + + master copyof lesson B + + + + + + user X copyof lesson A + + + + + + user Y copyof lesson B + + + + + + user X copyof lesson A + + + + + + user Y copyof lesson B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + swcarpentry + + + + + user X + + + + + user Y + + + + + + + + + + + + + + + + + Ideal Organization of Repositories(which we can't actually do) + + + + + + + \ No newline at end of file diff --git a/fig/repository-links.odg b/fig/repository-links.odg new file mode 100644 index 0000000000000000000000000000000000000000..5cff639221ed38328436eae3a1a05a415c407aae GIT binary patch literal 12552 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 UprC) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + template + + + + + + master copyof lesson A + + + + + + user X copyof lesson A + + + + + + user X desktop copyof lesson A + + + + + swcarpentry + + + + + user X + + + + + + + + + + + + + + + + + upstream + + + + + template + + + + + origin + + + + + + + + + + + + + \ No newline at end of file -- GitLab