From 80a61132d344f56fa1a39f6bbb0dc22e7bad5cf6 Mon Sep 17 00:00:00 2001 From: Grant Braught Date: Wed, 14 Jan 2026 11:57:22 -0500 Subject: [PATCH 1/5] Update devcontainer, pretext and deprecated elements (#65) **Pull Request Description** - Updates the devcontainer and pretext versions. This became necessary to do a full build with templates. - Updates matching problems to use `` instead of `` which has been deprecated. - Updated a Parson's problem that applied `order` to the `block` (deprecated) so that it was applied to the `premise`. Closes #115 --- **Licensing Certification** GitKit is a [Free Cultural Work](https://freedomdefined.org/Definition) and all accepted contributions are licensed as described in the LICENSE.md file. This requires that the contributor holds the rights to do so. By submitting this pull request **I certify that I satisfy the terms of the [Developer Certificate of Origin](https://developercertificate.org/)** for its contents. --------- Co-authored-by: Oscar Levin --- .../devcontainer.json | 55 +++-- .devcontainer/installPandoc.sh | 17 ++ .github/workflows/pretext-cli.yml | 40 +++- .github/workflows/pretext-deploy.yml | 68 ++++++ .gitignore | 9 +- requirements.txt | 4 +- .../sec-basic-foss-workflow.ptx | 195 +++++++++++------- .../sec-git-command-summary.ptx | 57 +++-- .../sec-the-issue-tracker.ptx | 18 +- .../sec-git-command-summary.ptx | 8 +- ...-the-main-branch-into-a-feature-branch.ptx | 13 +- .../sec-resolving-a-merge-conflict.ptx | 45 +++- .../sec-git-command-summary.ptx | 4 +- .../sec-lets-do-it-again.ptx | 4 +- .../sec-creating-a-pull-request.ptx | 30 ++- .../sec-git-command-summary.ptx | 146 ++++++++----- 16 files changed, 507 insertions(+), 206 deletions(-) rename .devcontainer.json => .devcontainer/devcontainer.json (54%) create mode 100644 .devcontainer/installPandoc.sh create mode 100644 .github/workflows/pretext-deploy.yml diff --git a/.devcontainer.json b/.devcontainer/devcontainer.json similarity index 54% rename from .devcontainer.json rename to .devcontainer/devcontainer.json index 732ab66..5d62838 100644 --- a/.devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,33 +1,29 @@ -// -// (delete the above line to manage this file manually) +// This file was automatically generated with PreTeXt 2.34.0. +// If you modify this file, PreTeXt will no longer automatically update it. +// ////////////////////////////////////////////////////////////// // -// This file provides configuration options so that a PreTeXt +// This file provides configuration options so that a PreTeXt // project can be edited and built using GitHub's Codespaces. // It is recommended to keep this in your repository even if you -// do not use this feature, as it will allow other to explore -// your project easily. -// This file will be automatically generated by PreTeXt with the +// do not use this feature, as it will allow other to explore +// your project easily. +// This file will be automatically generated by PreTeXt with the // latest updates unless you remove the first comment line above. // /////////////////////////////////////////////////////////////// { - "name": "PreTeXt-Codespaces", - - // This Docker image includes some LaTeX support, but is still not to large. Note that if you keep your codespace running, it will use up your GitHub free storage quota. Additional options are listed below. - "image": "oscarlevin/pretext:small", - // If you need to generate more complicated assets (such as sageplots) or use additional fonts when building to PDF, comment out the above line and uncomment the following line. - // "image": "oscarlevin/pretext:full", - // If you only intend to build for web and don't have any latex-image generated assets, you can use a smaller image: - // "image": "oscarlevin/pretext:lite", + // "image": "pretextbook/pretext-full:1.6", // uses latest image from https://hub.docker.com/r/PreTeXtBook/pretext-full/tags + // If you don't need sagemath, you can use a smaller base image. Comment out the line above and uncomment the line below to use a smaller image. + "image": "pretextbook/pretext:1.6", + "features": {"ghcr.io/devcontainers/features/github-cli": {}}, - // Add gh cli as a feature (to support codechat) - "features": { - "ghcr.io/devcontainers/features/github-cli:1": {} - }, + // The pretext-full image above includes pretext, prefigure, and enough parts of latex and sagemath for most cases. Here we install additional dependencies. + "postCreateCommand": { + "install pandoc": "bash ./.devcontainer/installPandoc.sh", + "mark repo as safe": "git config --global --add safe.directory $(pwd)" + }, - // Respect the project's designated dependencies - "postCreateCommand": "pip install -r requirements.txt", // Port forwarding // --------------- @@ -60,28 +56,31 @@ } }, + // Configure tool-specific properties. "customizations": { "codespaces": { - "openFiles": ["source/main.ptx"] + "openFiles": ["README.md"] }, "vscode": { "settings": { "editor.quickSuggestions": { "other": "off" }, - "editor.snippetSuggestions": "top", - "xml.validation.enabled": false, + "editor.suggest.showProperties": false, + "editor.snippetSuggestions": "bottom", + "files.autoSave": "afterDelay", + "xml.validation.enabled": true, + "redhat.telemetry.enabled": false, "CodeChat.CodeChatServer.Command": "CodeChat_Server" }, "extensions": [ - "ms-vscode.live-server", "oscarlevin.pretext-tools", - "CodeChat.codechat" + "CodeChat.codechat", + "streetsidesoftware.code-spell-checker", + "alpinebuster.vscode-latex-table-editor", + "mathematic.vscode-pdf" ] } } - - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" } diff --git a/.devcontainer/installPandoc.sh b/.devcontainer/installPandoc.sh new file mode 100644 index 0000000..e328b12 --- /dev/null +++ b/.devcontainer/installPandoc.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# This file was automatically generated with PreTeXt 2.34.0. +# If you modify this file, PreTeXt will no longer automatically update it. + +wget https://github.com/jgm/pandoc/releases/download/3.8.3/pandoc-3.8.3-1-amd64.deb -O pandoc.deb + +# wait for 60 second and then double check that no other script is using apt-get: +sleep 60 +while fuser /var/lib/dpkg/lock >/dev/null 2>&1; do + echo "Waiting for apt-get to be free..." + sleep 15 +done +# Install pandoc +apt-get install -y --no-install-recommends ./pandoc.deb + +rm pandoc.deb diff --git a/.github/workflows/pretext-cli.yml b/.github/workflows/pretext-cli.yml index 22b8a3c..733504d 100644 --- a/.github/workflows/pretext-cli.yml +++ b/.github/workflows/pretext-cli.yml @@ -1,21 +1,27 @@ -# -# (delete the above line to manage this file manually) - +# This file was automatically generated with PreTeXt 2.34.0. +# If you modify this file, PreTeXt will no longer automatically update it. +# +# This workflow file can be used to automatically build a project and create +# an artifact for deployment. It can also be used to deploy the project to +# GitHub Pages or Cloudflare Pages. +# +# The workflow is triggered on pull requests or can be run manually. You can uncomment +# the `push` event to have it run on pushes to the main branch as well. name: PreTeXt-CLI Actions on: # Runs on pull requests pull_request: branches: ["*"] - # Runs on pushes to main - push: - branches: ["main"] + ## Runs on pushes to main + #push: + # branches: ["main"] # Runs on demand workflow_dispatch: jobs: build: runs-on: ubuntu-latest - container: oscarlevin/pretext:full + container: oscarlevin/pretext-full steps: - name: Checkout source @@ -24,8 +30,26 @@ jobs: - name: install deps run: pip install -r requirements.txt + - name: set up node + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: install local ptx files + run: pretext --version + - name: build deploy targets - run: pretext build --deploys + run: | + version="$(pretext --version)" + major="$(echo $version | cut -d '.' -f 1)" + minor="$(echo $version | cut -d '.' -f 2)" + if [ "$major" -ge 2 -a "$minor" -ge 5 ]; then + echo "PreTeXt version is 2.5 or greater; using new build command" + pretext build --deploys + else + echo "PreTeXt version is less than 2.5, using old build command" + pretext build + fi - name: stage deployment run: pretext deploy --stage-only diff --git a/.github/workflows/pretext-deploy.yml b/.github/workflows/pretext-deploy.yml new file mode 100644 index 0000000..085d330 --- /dev/null +++ b/.github/workflows/pretext-deploy.yml @@ -0,0 +1,68 @@ +# This file was automatically generated with PreTeXt 2.34.0. +# If you modify this file, PreTeXt will no longer automatically update it. +# + +name: Build and Deploy +on: + # Currently, this workflow only runs when manually selected (the `workflow_dispatch` event). + # If you would like it to run on other events, uncomment some of the lines below. + + # # Runs on pull requests + # pull_request: + # branches: ["*"] + + # # Runs on pushes to main + # push: + # branches: ["main"] + + # # Runs every day at 00:00 UTC + # schedule: + # - cron: '0 0 * * *' + + # Runs on demand + workflow_dispatch: + +permissions: + contents: write + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + container: oscarlevin/pretext-full + + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: set up node + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: add gh-cli + run: | + apt-get update + apt-get install gh jq -y + + - name: setup git config + run: | + git config --global --add safe.directory $(pwd) + git config user.name "${{ github.actor }} via GitHub Actions" + git config user.email "${{ github.actor }}@github_actions.no_reply" + + - name: install deps + run: pip install -r requirements.txt --break-system-packages + + - name: install local ptx files + run: pretext --version + + - name: build deploy targets + run: pretext build --deploys + + - name: run deploy + run: pretext deploy --no-push + + - name: push gh-pages branch + run: git push origin gh-pages --force + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 0096a4e..c68d800 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ -# -# (delete the above line to manage this file manually) - +# This file was automatically generated with PreTeXt 2.34.0. +# If you modify this file, PreTeXt will no longer automatically update it. +# # Boilerplate list of files in a PreTeXt project for git to ignore # ensure this file is tracked !.gitignore @@ -11,6 +11,7 @@ published # don't track assets generated from source generated-assets +.cache # don't track the executables.ptx file executables.ptx @@ -90,6 +91,8 @@ bh_unicode_properties.cache # https://packagecontrol.io/packages/sublime-github GitHub.sublime-settings +# Don't track common virtual environment directories +venv/ # Don't include Dropbox settings and caches .dropbox diff --git a/requirements.txt b/requirements.txt index d53edfa..2289048 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -# -pretext == 2.5.2 +# This file was automatically generated with PreTeXt 2.34.0. +pretext == 2.34.0 diff --git a/source/ch-communities-and-collaboration/sec-basic-foss-workflow.ptx b/source/ch-communities-and-collaboration/sec-basic-foss-workflow.ptx index a010fad..b318210 100644 --- a/source/ch-communities-and-collaboration/sec-basic-foss-workflow.ptx +++ b/source/ch-communities-and-collaboration/sec-basic-foss-workflow.ptx @@ -1,27 +1,28 @@ -
+
Basic FOSS Workflow Concepts -

- Now that you have found an issue to work on, you will need to collaborate with the project community to fix that issue. - Collaboration in FOSS communities follows patterns of behavior known as workflows. - shows a basic version of one FOSS workflow that is used by contributors working on FOSS projects. -

+

Now that you have found an issue to work on, you will need to collaborate with the project + community to fix that issue. Collaboration in FOSS communities follows patterns of behavior + known as workflows. shows a basic version + of one FOSS workflow that is used by contributors working on FOSS projects.

-

+
A basic FOSS workflow. - Diagram showing the relationships between the main repo, your remote copy, and your local copy. + Diagram showing the relationships between the main repo, your remote copy, and your + local copy. Forking the main project repo creates your remote copy in your GitHub space. Cloning your remote copy creates your local copy in your local development environment. - Changes that you make to your local copy can be contributed to the main project by pushing them to your remote copy and creating a pull request. + Changes that you make to your local copy can be contributed to the main project by + pushing them to your remote copy and creating a pull request.
@@ -29,81 +30,127 @@ - - <introduction> - <p> - The exercises in this section will help to familiarize you with the terminology and the process of this basic FOSS workflow. - </p> - </introduction> - - <exercise xml:id="ex-github-repository-terminology" label="ex-github-repository-terminology" > - <statement> + <title /> + <introduction> <p> - GitHub uses specific terminology to refer to the copies of the repository. - Match the GitHub terminology on the left with the repository in <xref ref="fig-basic-foss-workflow" /> to which it refers on the right. + The exercises in this section will help to familiarize you with the terminology and the + process of this basic FOSS workflow. </p> - </statement> + </introduction> - <matches> <match> <premise>Upstream</premise> <response>Main project repository</response> </match> <match> <premise>Origin</premise> <response>Your Remote Copy</response> </match> <match> <premise>Local Clone</premise> <response>Local Copy of Your Remote Copy</response> </match> </matches> - <hint> - <p> - Review the diagrams of the basic FOSS workflow from the in the class materials. - </p> - </hint> - </exercise> + <exercise xml:id="ex-github-repository-terminology" label="ex-github-repository-terminology"> + <statement> + <p> GitHub uses specific terminology to refer to the copies of the repository. Match the + GitHub terminology on the left with the repository in <xref ref="fig-basic-foss-workflow" /> + to which it refers on the right. </p> + </statement> - <exercise xml:id="ex-workflow-step-definitions" label="ex-workflow-step-definitions" > - <statement> - <p> - <xref ref="fig-basic-foss-workflow" /> illustrates a basic FOSS workflow similar to what is used in many FOSS projects. This workflow has the following 5 steps: <term>Fork</term>, <term>Clone</term>, <term>Edit</term>, <term>Push</term>, and <term>Pull Request</term>. Match each term on the left with the appropriate description on the right. - </p> - </statement> + <cardsort> + <match> + <premise>Upstream</premise> + <response>Main project repository</response> + </match> + <match> + <premise>Origin</premise> + <response>Your Remote Copy</response> + </match> + <match> + <premise>Local Clone</premise> + <response>Local Copy of Your Remote Copy</response> + </match> + </cardsort> + <hint> + <p> + Review the diagrams of the basic FOSS workflow from the in the class materials. + </p> + </hint> + </exercise> - <matches> <match> <premise>Fork</premise> <response> Create a copy of the main project repository in your GitHub space. </response> </match> <match> <premise>Clone</premise> <response> Create a copy of your remote copy of the repository into your local development environment. </response> </match> <match> <premise>Edit</premise> <response> Make changes to your local copy of the repository (e.g. to fix a bug). </response> </match> <match> <premise>Push</premise> <response> Copy your changes into your remote copy of the repository. </response> </match> <match> <premise>Pull Request</premise> <response> Ask that the project maintainers incorporate your changes into the main project repository. </response> </match> </matches> - <hint> - <p> - Review the diagrams of the basic FOSS workflow from the in the class materials. - </p> - </hint> - </exercise> + <exercise xml:id="ex-workflow-step-definitions" label="ex-workflow-step-definitions"> + <statement> + <p> + <xref ref="fig-basic-foss-workflow" /> illustrates a basic FOSS workflow similar to what + is used in many FOSS projects. This workflow has the following 5 steps: <term>Fork</term>, <term> + Clone</term>, <term>Edit</term>, <term>Push</term>, and <term>Pull Request</term>. Match + each term on the left with the appropriate description on the right. </p> + </statement> - <exercise xml:id="ex-workflow-step-order" label="ex-workflow-step-order" > - <statement> - <p> - Drag the steps of the basic FOSS workflow into the order that they are likely to occur when working on a project. - </p> - </statement> - <blocks> <block order="3"> - <p> - Fork - </p> - </block> <block order="1"> + <cardsort> + <match> + <premise>Fork</premise> + <response> Create a copy of the main project repository in your GitHub space. </response> + </match> + <match> + <premise>Clone</premise> + <response> Create a copy of your remote copy of the repository into your local development + environment. </response> + </match> + <match> + <premise>Edit</premise> + <response> Make changes to your local copy of the repository (e.g. to fix a bug). </response> + </match> + <match> + <premise>Push</premise> + <response> Copy your changes into your remote copy of the repository. </response> + </match> + <match> + <premise>Pull Request</premise> + <response> Ask that the project maintainers incorporate your changes into the main project + repository. </response> + </match> + </cardsort> + <hint> + <p> + Review the diagrams of the basic FOSS workflow from the in the class materials. + </p> + </hint> + </exercise> - <p> - Clone - </p> - </block> <block order="5"> + <exercise xml:id="ex-workflow-step-order" label="ex-workflow-step-order"> + <statement> + <p> + Drag the steps of the basic FOSS workflow into the order that they are likely to occur + when working on a project. + </p> + </statement> + <blocks> + <block order="3"> + <p> + Fork + </p> + </block> + <block order="1"> - <p> - Edit - </p> - </block> <block order="2"> + <p> + Clone + </p> + </block> + <block order="5"> - <p> - Push - </p> - </block> <block order="4"> + <p> + Edit + </p> + </block> + <block order="2"> - <p> - Pull Request - </p> - </block> </blocks> + <p> + Push + </p> + </block> + <block order="4"> - <hint> - <p> - Imagine the process you would go through when starting to work on a project, fixing a bug, and contributing your changes back to the main project. - </p> - </hint> - </exercise> + <p> + Pull Request + </p> + </block> + </blocks> + + <hint> + <p> + Imagine the process you would go through when starting to work on a project, fixing a bug, + and contributing your changes back to the main project. + </p> + </hint> + </exercise> </exercises> </section> \ No newline at end of file diff --git a/source/ch-communities-and-collaboration/sec-git-command-summary.ptx b/source/ch-communities-and-collaboration/sec-git-command-summary.ptx index 846ece2..79140ef 100644 --- a/source/ch-communities-and-collaboration/sec-git-command-summary.ptx +++ b/source/ch-communities-and-collaboration/sec-git-command-summary.ptx @@ -1,30 +1,53 @@ <?xml version="1.0" encoding="UTF-8"?> -<section xml:id="topic-git-commands-summary-communities" xmlns:xi="http://www.w3.org/2001/XInclude" > +<section xml:id="topic-git-commands-summary-communities" xmlns:xi="http://www.w3.org/2001/XInclude"> <title>Git Command Summary

- It will take a while for this process and all of the commands to become a natural part of the way you work. - To help speed that process, this section provides a chance to collect and review the Git commands that were used in this chapter. + It will take a while for this process and all of the commands to become a natural part of the + way you work. + To help speed that process, this section provides a chance to collect and review the Git + commands that were used in this chapter.

- - <exercise xml:id="ex-git-commands-summary-communities" label="ex-git-commands-summary-communities"> - <statement> - <p> - Match the tasks on the right with the appropriate git command listed on the left. - </p> - </statement> + <title /> + <exercise xml:id="ex-git-commands-summary-communities" + label="ex-git-commands-summary-communities"> + <statement> + <p> + Match the tasks on the right with the appropriate git command listed on the left. + </p> + </statement> - <matches> <match> <premise> <c>git config</c> </premise> <response> Display Git settings. </response> </match> <match> <premise> <c>git remote -v</c> </premise> <response> List your remote repos. </response> </match> <match> <premise> <c>git clone <URL></c> </premise> <response> Create a copy of the origin repository in your development environment. </response> </match> </matches> - <hint> - <p> - Note that the tasks listed are in approximately the same order as they appear in the sections of this chapter. - </p> - </hint> - </exercise> + <cardsort> + <match> + <premise> + <c>git config</c> + </premise> + <response> Display Git settings. </response> + </match> + <match> + <premise> + <c>git remote -v</c> + </premise> + <response> List your remote repos. </response> + </match> + <match> + <premise> + <c>git clone <URL></c> + </premise> + <response> Create a copy of the origin repository in your development environment. </response> + </match> + </cardsort> + <hint> + <p> + Note that the tasks listed are in approximately the same order as they appear in the + sections of this chapter. + </p> + </hint> + </exercise> </exercises> </section> \ No newline at end of file diff --git a/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx b/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx index 4be8904..282d7b6 100644 --- a/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx +++ b/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx @@ -26,7 +26,6 @@ <subsection> <title>Exploring the Issue Tracker - <exercise xml:id="ex-find-the-issue-tracker" label="ex-find-the-issue-tracker" > @@ -55,7 +54,6 @@ </statement> </task> </exercise> - <exercise xml:id="ex-explore-the-issue-tracker" label="ex-explore-the-issue-tracker" > <introduction> <p> @@ -349,7 +347,6 @@ </hint> </task> - <task xml:id="ex-explore-the-issue-tracker-e" label="ex-explore-the-issue-tracker-e" > <statement> <p> @@ -363,7 +360,20 @@ </p> </feedback> - <matches> <match> <premise>Created on</premise> <response>Find issues you have not seen before</response> </match> <match> <premise>Last updated</premise> <response>Check if any issues you have been assigned to have had their requirements changed</response> </match> <match> <premise>Total comments</premise> <response>Find which issues are being most actively worked on</response> </match> </matches> + <cardsort> + <match> + <premise>Created on</premise> + <response>Find issues you have not seen before</response> + </match> + <match> + <premise>Last updated</premise> + <response>Check if any issues you have been assigned to have had their requirements changed</response> + </match> + <match> + <premise>Total comments</premise> + <response>Find which issues are being most actively worked on</response> + </match> + </cardsort> <hint> <p> Choose the best match. diff --git a/source/ch-merge-conflicts/sec-git-command-summary.ptx b/source/ch-merge-conflicts/sec-git-command-summary.ptx index 347c7ba..74d7edb 100644 --- a/source/ch-merge-conflicts/sec-git-command-summary.ptx +++ b/source/ch-merge-conflicts/sec-git-command-summary.ptx @@ -22,7 +22,7 @@ </introduction> <task xml:id="ex-git-commands-summary-merging-pt1" label="ex-git-commands-summary-merging-pt1"> <statement></statement> - <matches> + <cardsort> <match> <premise><c>git switch <branch> </c></premise> <response>Change the active branch.</response> @@ -35,7 +35,7 @@ <premise><c>git push origin main </c></premise> <response>Synchronize the origin <c>main</c> branch with the local <c>main</c> branch.</response> </match> - </matches> + </cardsort> <hint> <p> Note that the tasks listed are in approximately the same order as they appear in the sections of this chapter. @@ -45,7 +45,7 @@ <task xml:id="ex-git-commands-summary-merging-pt2" label="ex-git-commands-summary-merging-pt2"> <statement></statement> - <matches> + <cardsort> <match> <premise><c>git merge <source> </c></premise> <response>Add changes from source branch into the active branch</response> @@ -62,7 +62,7 @@ <premise><c>git push origin <branch></c></premise> <response>Copy the named branch to your origin repository.</response> </match> - </matches> + </cardsort> <hint> <p> Note that the tasks listed are in approximately the same order as they appear in the sections of this chapter. diff --git a/source/ch-merge-conflicts/sec-merging-the-main-branch-into-a-feature-branch.ptx b/source/ch-merge-conflicts/sec-merging-the-main-branch-into-a-feature-branch.ptx index 07b6a74..239ebb6 100644 --- a/source/ch-merge-conflicts/sec-merging-the-main-branch-into-a-feature-branch.ptx +++ b/source/ch-merge-conflicts/sec-merging-the-main-branch-into-a-feature-branch.ptx @@ -53,7 +53,18 @@ </p> </statement> - <matches> <match order="1"> <premise><c>main</c></premise> <response>Source Branch</response> </match> <match order="2"> <premise>feature branch (<c>hadPig</c>)</premise> <response>Target Branch</response> </match> </matches> + <cardsort> + <match> + <premise order="1"> + <c>main</c> + </premise> + <response>Source Branch</response> + </match> + <match> + <premise order="2">feature branch (<c>hadPig</c>)</premise> + <response>Target Branch</response> + </match> + </cardsort> <hint> <p> Read the introduction to this section. diff --git a/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx b/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx index 97c6d85..948da1f 100644 --- a/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx +++ b/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx @@ -68,7 +68,20 @@ </p> </statement> - <matches> <match> <premise>Feature branch contents</premise> <response> Appears with a green highlight at the top of the conflict information. </response> </match> <match> <premise>Best common ancestor</premise> <response> Appears with a gray highlight in the middle of the conflict information. </response> </match> <match> <premise><c>main</c> branch contents</premise> <response> Appears with a blue highlight at the bottom of the conflict information. </response> </match> </matches> + <cardsort> + <match> + <premise>Feature branch contents</premise> + <response> Appears with a green highlight at the top of the conflict information. </response> + </match> + <match> + <premise>Best common ancestor</premise> + <response> Appears with a gray highlight in the middle of the conflict information. </response> + </match> + <match> + <premise><c>main</c> branch contents</premise> + <response> Appears with a blue highlight at the bottom of the conflict information. </response> + </match> + </cardsort> </task> @@ -79,7 +92,24 @@ </p> </statement> - <matches> <match> <premise> Left Chevrons <c><<<<<<<</c> </premise> <response> Indicate the start of the merge conflict information. </response> </match> <match> <premise> Vertical Bars <c>|||||||</c> </premise> <response> Separate the feature branch content from the best common ancestor. </response> </match> <match> <premise>Equal Signs <c>=======</c></premise> <response> Separate the best common ancestor from the <c>main</c> branch content. </response> </match> <match> <premise> Right Chevrons <c>>>>>>>></c> </premise> <response> Indicate the end of the merge conflict information. </response> </match> </matches> + <cardsort> + <match> + <premise> Left Chevrons <c><<<<<<<</c> </premise> + <response> Indicate the start of the merge conflict information. </response> + </match> + <match> + <premise> Vertical Bars <c>|||||||</c> </premise> + <response> Separate the feature branch content from the best common ancestor. </response> + </match> + <match> + <premise>Equal Signs <c>=======</c></premise> + <response> Separate the best common ancestor from the <c>main</c> branch content. </response> + </match> + <match> + <premise> Right Chevrons <c>>>>>>>></c> </premise> + <response> Indicate the end of the merge conflict information. </response> + </match> + </cardsort> </task> </exercise> </exercises> @@ -134,7 +164,16 @@ </p> </statement> - <matches> <match> <premise> Accept Current Change </premise> <response> Accept the changes in your feature branch. </response> </match> <match> <premise> Accept Incoming Change </premise> <response> Accept the changes in the <c>main</c> branch. </response> </match> </matches> + <cardsort> + <match> + <premise> Accept Current Change </premise> + <response> Accept the changes in your feature branch. </response> + </match> + <match> + <premise> Accept Incoming Change </premise> + <response> Accept the changes in the <c>main</c> branch. </response> + </match> + </cardsort> <hint> <p> Compare the terms used in the merge tool options to the information displayed in the first and last lines of the merge conflict information. diff --git a/source/ch-staying-synchronized/sec-git-command-summary.ptx b/source/ch-staying-synchronized/sec-git-command-summary.ptx index 07ddf2f..b5c0f39 100644 --- a/source/ch-staying-synchronized/sec-git-command-summary.ptx +++ b/source/ch-staying-synchronized/sec-git-command-summary.ptx @@ -23,7 +23,7 @@ Refer back to the sections in this chapter to see what each command does. </p> </feedback> - <matches> + <cardsort> <match> <premise> <c>git remote -v</c> @@ -72,7 +72,7 @@ Delete a feature branch from your origin </response> </match> - </matches> + </cardsort> <hint> <p> Note that the tasks listed are in approximately the same order as they appear in the sections of this chapter. diff --git a/source/ch-staying-synchronized/sec-lets-do-it-again.ptx b/source/ch-staying-synchronized/sec-lets-do-it-again.ptx index 29cb730..3fa57aa 100644 --- a/source/ch-staying-synchronized/sec-lets-do-it-again.ptx +++ b/source/ch-staying-synchronized/sec-lets-do-it-again.ptx @@ -221,7 +221,7 @@ Match the Git commands will you use for each of the tasks indicated below. </p> </statement> - <matches> + <cardsort> <match> <premise> <c>git branch <branch></c> @@ -262,7 +262,7 @@ Push your feature branch to your origin. </response> </match> - </matches> + </cardsort> <hint> <p> The command reference that you created in <xref ref="topic-git-command-summary-upstreaming" text="type-global-title" /> may come in handy here. diff --git a/source/ch-upstreaming-changes/sec-creating-a-pull-request.ptx b/source/ch-upstreaming-changes/sec-creating-a-pull-request.ptx index 5876498..e30cd77 100644 --- a/source/ch-upstreaming-changes/sec-creating-a-pull-request.ptx +++ b/source/ch-upstreaming-changes/sec-creating-a-pull-request.ptx @@ -107,11 +107,16 @@ Match the right hand column with either head repository or base repository to indicate which term refers to your origin and which refers to the upstream. </p> </statement> - <matches> <match> - <premise> - <c>head repository</c></premise> <response>your origin repository</response> </match> <match> - <premise> - <c>base repository</c></premise> <response>the upstream</response> </match> </matches> + <cardsort> + <match> + <premise><c>head repository</c></premise> + <response>your origin repository</response> + </match> + <match> + <premise><c>base repository</c></premise> + <response>the upstream</response> + </match> + </cardsort> <hint> <p> The base is where you want your changes merged into/the repository you created your fork from. @@ -129,11 +134,16 @@ Match the right hand column with either base branch or compare branch to indicate which is “pulled from” or “merged into”. </p> </statement> - <matches> <match> - <premise> - <c>base branch</c></premise> <response>merged into</response> </match> <match> - <premise> - <c>compare branch</c></premise> <response>pulled from</response> </match> </matches> + <cardsort> + <match> + <premise><c>base branch</c></premise> + <response>merged into</response> + </match> + <match> + <premise><c>compare branch</c></premise> + <response>pulled from</response> + </match> + </cardsort> <hint> <p> The base is where you want your changes merged into. diff --git a/source/ch-upstreaming-changes/sec-git-command-summary.ptx b/source/ch-upstreaming-changes/sec-git-command-summary.ptx index f374308..1735995 100644 --- a/source/ch-upstreaming-changes/sec-git-command-summary.ptx +++ b/source/ch-upstreaming-changes/sec-git-command-summary.ptx @@ -12,54 +12,104 @@ <exercises> <title /> - <exercise xml:id="ex-git-commands-summary-upstreaming" label="ex-git-commands-summary-upstreaming"> - <statement> - <p> - Match the tasks on the right with the appropriate git command listed on the left. - </p> - </statement> - <matches> <match> - <premise> - <c>git log</c></premise> <response>Display recent commits made to the active branch.</response> </match> <match> - <premise> - <c>git branch <branch></c></premise> <response>Create a new feature branch.</response> </match> <match> - <premise> - <c>git branch</c></premise> <response>Lists all branches.</response> </match> <match> - <premise> - <c>git switch <branch></c></premise> <response>Change the active branch</response> </match> <match> - <premise> - <c>git status</c></premise> <response>Check the current state of your local repo.</response> </match> <match> - <premise> - <c>git diff</c></premise> <response>Displays unstaged changes.</response> </match> <match> - <premise> - <c>git diff --staged</c></premise> <response>Displays staged changes.</response> </match></matches> - <hint> - <p> - Note that the tasks listed are in approximately the same order as they appear in the sections of this chapter. - </p> - </hint> - </exercise> + <exercise xml:id="ex-git-commands-summary-upstreaming" + label="ex-git-commands-summary-upstreaming"> + <statement> + <p> + Match the tasks on the right with the appropriate git command listed on the left. + </p> + </statement> + <cardsort> + <match> + <premise> + <c>git log</c> + </premise> + <response>Display recent commits made to the active branch.</response> + </match> + <match> + <premise> + <c>git branch <branch></c> + </premise> + <response>Create a new feature branch.</response> + </match> + <match> + <premise> + <c>git branch</c> + </premise> + <response>Lists all branches.</response> + </match> + <match> + <premise> + <c>git switch <branch></c> + </premise> + <response>Change the active branch</response> + </match> + <match> + <premise> + <c>git status</c> + </premise> + <response>Check the current state of your local repo.</response> + </match> + <match> + <premise> + <c>git diff</c> + </premise> + <response>Displays unstaged changes.</response> + </match> + <match> + <premise> + <c>git diff --staged</c> + </premise> + <response>Displays staged changes.</response> + </match> + </cardsort> + <hint> + <p> + Note that the tasks listed are in approximately the same order as they appear in the + sections of this chapter. + </p> + </hint> + </exercise> - <exercise xml:id="ex-git-commands-summary-upstreaming-2" label="ex-git-commands-summary-upstreaming-2"> - <statement> - <p> - Match the tasks on the right with the appropriate git command listed on the left. - </p> - </statement> - <matches> <match> - <premise> - <c>git stage <file name></c></premise> <response>Stage changed files to be committed to the repo.</response> </match> <match> - <premise> - <c>git add <file name></c></premise> <response>Another way to stage changed files for a commit.</response> </match> <match> - <premise> - <c>git commit -m "message"</c></premise> <response>Commit staged files with a message.</response> </match> <match> - <premise> - <c>git push <remote> <branch></c></premise> <response>Push a feature branch to your origin.</response> </match> </matches> - <hint> - <p> - Note that the tasks listed are in approximately the same order as they appear in the sections of this chapter. - </p> - </hint> - </exercise> + <exercise xml:id="ex-git-commands-summary-upstreaming-2" + label="ex-git-commands-summary-upstreaming-2"> + <statement> + <p> + Match the tasks on the right with the appropriate git command listed on the left. + </p> + </statement> + <cardsort> + <match> + <premise> + <c>git stage <file name></c> + </premise> + <response>Stage changed files to be committed to the repo.</response> + </match> + <match> + <premise> + <c>git add <file name></c> + </premise> + <response>Another way to stage changed files for a commit.</response> + </match> + <match> + <premise> + <c>git commit -m "message"</c> + </premise> + <response>Commit staged files with a message.</response> + </match> + <match> + <premise> + <c>git push <remote> <branch></c> + </premise> + <response>Push a feature branch to your origin.</response> + </match> + </cardsort> + <hint> + <p> + Note that the tasks listed are in approximately the same order as they appear in the + sections of this chapter. + </p> + </hint> + </exercise> </exercises> </section> From 8ccfdff2d4b9db676c3d11b95bb0f8845fc0834e Mon Sep 17 00:00:00 2001 From: Grant Braught <braught@dickinson.edu> Date: Wed, 14 Jan 2026 15:39:40 -0500 Subject: [PATCH 2/5] Adds principles and roles notes to ch2 slides and slide links in 2.2.1 and 2.2.2. (#105) **Pull Request Description** Adds descriptions of the FOSS Community Principles and FOSS Community Roles to the speaker notes in chapter 2 and links to those slides in sections 2.2.1 and 2.2.2 that contain the questions about the principles and roles. Closes #66 --- **Licensing Certification** GitKit is a [Free Cultural Work](https://freedomdefined.org/Definition) and all accepted contributions are licensed as described in the LICENSE.md file. This requires that the contributor holds the rights to do so. By submitting this pull request **I certify that I satisfy the terms of the [Developer Certificate of Origin](https://developercertificate.org/)** for its contents. --- .../Ch2-CommunitiesAndCollaboration.pptx | Bin 4630656 -> 4632238 bytes .../sec-foss-communities.ptx | 11 +++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/materials/slides/Ch2-CommunitiesAndCollaboration.pptx b/materials/slides/Ch2-CommunitiesAndCollaboration.pptx index 30f068b4101721e8f271b1aa7ce955858e67d3e3..d6a684f042b7cf7e4df9a440c4b7d01ec68616ee 100644 GIT binary patch delta 9740 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 J@Ik|x{}0!+D|G+> delta 8047 zcmZ8`2{=_<`@S=nWyq8%vrL(X44Lf+36Vq+G8CCAk&dAZW$a+dJY=4SIz`4pC8Q`R zd1Wkwyk_dZw)6eIuj}7+-Dj=mUiW(Tv!1p0vY%bmXgW4@ARSwyO;g`nV@+Le#$X;& zuTvd|sb{Z}!qm@INMh>S%3&|1Od3;vsT7)WCF&T!aSvf81`|2!rHUyr^+HdeVz>}h z5WV)-XU6o?)@#!+;z=uXm@-_wd*d}MNtA@=#ek_ygc;mz#0!FlGMIUi&0!25hNLEq z{_;s-cro>^9ar%rj3nCqx4RWbcjxqM$5%WB#d{9ol@0-dl1!l2<$2p)?+F#=7S34> zhT8`xUTTkAzEHtB{Pil2QWNbr>7XLf<3f5#cw>zZ9F)Hpn;*-9L*Encf7tZpUNld9 zu8uLiJLz+=g{wDqx_6-NpPJkeISDFVHxeHOd#!2OORDznd&ZZvDV$@BXh1k)`2F;M zW|wAizLvBkrV_Yyf}FNom?uA!-8ztdq?l5^$<iV$xO9-RcB7<TZeWsb@o?a<7iqmC zT#jY%-yqhY2Sw6FS6nq^OKOHh)BP@3Tq7#Frhgt3BT1O;J2z3f7#$GZ*lCshWT1rJ ztTZF0v)ayV=)u}&ehxQo+wf>g0i&=syi>CU|4PDz@k8T;qrWO1-2bgGbce@6)s_)^ zyEULS?`(kyz3-y~)ix750llA&5J=Mj!*VoN<geOUcN{%c{JBJNN;=QSJ~6g~>yUh} zsCh|bpW9KMeX;6E%Y_(0i|2IAH)Ony^2`{x1h})s?ONXHa{EOmq*}&%xiqnU{FQIg z5OukO_8Ho-^LB*N<tGZw$OERYR#(agLhRy-MYCQ#WJrAPcXh}2hV_`tF{6J1)%048 zw!RFP9#&grdc7Oyp;Xou6HHy|9+F9wDCgB|9p>q<A{-JNcsJf_(!M)DHT90-lhups zq?1XREM|TD%@uwu{nuE(Dw~ILe6j!IpYSQjZiV(v+=%%48-hvy&LYn18Kub9m)pKS z`2$pV{P)p!ENA{HFKqUYEs{|G5L3&ZwxK|OC6mqUC{1KK%eht)m))StAF4Cz0&6gL zX*`x{N4*k8f){AIr?opAE>7IkqwBJGbWrAn+Cbz8``bppM~5obtaW~$r@$)eQ0ND? zmwXMoEwHa-Gq!%1KpkKtZ*m}=;)KI|6rER_0o5VXH{kq?je6c2#%a||i_9kuZ|HuP zd}@CBdp+J&CD7{Jh>@&I>>?-AEjiVemjem=>IXL!Kb#h@s!_WmWy!6>UggIz;}d^t zho?5Nma<4*nBLRBqToF8&7|g?)t7623=*C8a%a6A0{uC!oropqXk=cg`qSdYAT`7n zSQ{u39#Z!Dgq!FU`O+J8O_ag@HHRz<is|lI|748xj+=34%TDpp3`$r&`&_o!y}>Ym zCoG5csWT?to%-?6{NwbHSDrRj-y$426T_SK+gOwyNv)_&?b;9_`l=N$-QPNWbLQy# zsPVHGYksV$4Y1wze@SS_lv?TZ@ExU|q5R=^()5|_#;KT38x<Mn4U>D+jxCi`$5r{6 zj+Z{qV%b-kO8J&@$W`xnn|b)6&>NqvU_yPg{7OjT_Vt}{7gLdBKgO!mrhu*FbFD?W zB~}IRQ`#m2)E!c;9viFDyCY5)mOX<p5lKybV<YrrGB~GHO3A;Dpc6X~CvQHHain;f z=ENghc1&9Tz7NHJgg+}@6ONqz#j{|6^|TJQ7IXd9dq3}%<K3(5{VF<{BJ@Jiub9_g zd|WE5zj6H0N~p&01nIlF?Q?6BQt!ykJP+IamGc4>ZgL+FT=>Hq$GFxwv1@T@Fh;C$ zcA<UlgHPRhnevUHd-=;3-3dp2HgESR>u6YLcSTPg|1$CLd)c*o>X4!Er?Vnfb3%mC z+<hs}^6iYLgB!B0jn1y-HE}j;MXN8A%<%Z+fl99ChN>x>^>fZuW2{#jmyQT4nye1X zN;H^`W}W5pJ*xU~T4RTaD0q{NuKJW{Stu0+#hSq0$)~(`@^O1y`K<EqcIYm(Ue1h^ z@BOY4t6^^|yxEAriJE@4RTtkPqxgq61BMA>!lL}X{@tHKhiJJigf?Ybh}DbQZ~Sz{ z&P$)J<9YO>H#*csa@=n)&b!L|(xT7>z7$&a<9e#;5pi0XJ6k=$qe-vBM4vd0FfJeu z{2Sl96Kqp;Pk1?aBpv~hM60Oki-SfCSwdgzmDbXGpCc!p#+L0)OKe-G`%&?;OZg>M z;V<Z%jB5BCd#Ne3C<klCQ$r&*-(vWV_E%S=(6V`X^}bO4SFhX(qPE`M{$5Qq(GLvY ze=qu>8l9NuDb}I7CCNihZ-<Aq>=-=UQq#X^C#ez?<`D7UPyc*g8aqEtBc)w8bUHPp z$@y@P)@W^Gt<GCp{U1*yW44pBnkhB(+gSzN)c7z@*^+gO46u<6sW)Yg)NI+;){0sR zMiuG|ruYrHCt9e5XAiY?6kBrlEEGoXSh>CERle|8NUi7CP=}uigUt(B7rQ!NZN+W+ zi!D@U1P3?gMPHSJ#Y#4>H1$mDhkk8;AL3J;o1jYQxx&Ejam-dVz#lVixUC(=9U)Eg z!;9Hv;o^a$+dL$7uj_tUm<Ru`NW4g}dt=2&>$@=^9`>xPVS;Ill6{HIx-BOxERmZ_ z{5wMeeKCVBzmCjXE#BX_6}#D)!Pq6<wAU+oe%*wm>C8T3<dBXy7gsK0G3!BlVurB3 zsN3o`ON6ORY2In3yjz$;{->^Y9^E#%;4g{aUrgu4pSZ}w@{Q@C>dreslH3?cgOTb9 z?ZkSl`u!D)>1e7#%D~5=b#Leo40X$}iCf%?-0wBW@7~Ct-M^54-#MmPQ2O%hvqEIb zJe)*J@Ss<jBDiPSi_b+{8BlcUin=JIdP)j#wO?C$kr62O&4VFDa~kXAsbMrMw%?6z zPT&*czYkADex1$j_@|kQF@pB@9MzGNPm8F+Gpwne(}*dyAGXvGv$}G|_`B3it?<b* z`2nrz!B<|ZA($ULr_Ol}9OUY<qB_SB-6M#hByka9+RZSNHaE4-u57a2Q(til6FObJ zwsBC!GdiJ#b#b0QLF7t6Y_q^I-36PFBghSx*O}J~*4kObh)IMdy6<Ue(Myx>qJDUv z`h10tZ-f0*tlW1F8uoXWxS3k77fjeREfmK}ty3HYA&QI>Z01Frk6#R8J37BuR~3a6 z-J$b6LomwmR4zz7_cHIIYtVC<f#;^;;a<wS=AG?ZceNg7T;lBU?p?E7Z)@~ak)g_e zQ}IT;%juCf-@2c%JwvNwf5+yFPKi1$g$g#WVxCooVsRm}!n%!-FPGLbqIy-dI9t6k zr{Z0Um1eL^Zv5K0SqJEK8QF)cZCjJMbte4hI+zJlx2!J`$0>61^q<SVDB~@wi8&^G z`&Xw~jb$98gYYNDgKulHI(AIyCYt%x=x@*j*(y)#`1zc2dwp57yd)`cWD`$4!}{yf z`SY(OF3vOG|3SU~2@w9yF1|s3_m>RodTD=yw4V_X-@}qBQFL-9(b+NU3K7p;-jT%f zD)B!3PXe(qG&shN!@GQ=sEnC*JWT_aqP5l4Vk#k>M(VDMZId<XxIXSV6Y|<;NSA%W zb|yviWT{7Zg6=6pRqtidmxDeHr}v4?^k}LaIV^pH&t__qRkGvIk6jt1pUM7aY6Btt z*1DG7HEkJ|=A>U=GmX+NyfoDtsDG9yK3B;cbKHTj7X0zwP0Z>SkB@)!o4%H4GJsAV z&J*So&K9C}x`IDj?g-&81=iDU__}BK>{m|F8xXPAJdfR<S#MpMVToJKvf4Gy`Z4k2 zx^+>~=eN2zJFb}&?9p0>b76(A@orhzt9RO^C-%j<R|+rR)cTeinV}OBdnR#*rz?jm z<{nG@IRbTNsJyk~%Lq*OV?F7ZnVwS&Uf)xwH+58}3aJ}BS(?xFrzzAhY^Y7jV@0ig zDtz0H(VUuJOL@E~bi?(TYRoDrUZm??n(OD89Zh@hmh8FA_^?=~__fYJ;}*BOH&k{P zN>BQo($_dw^v&gA$&-4;54KnN%5QlDN(YU|`Omr&%2*^A77@bgc6U^8#Pwaf)*-FR zN7@JZhk}Zus2{zL*u56~mhh2hp0M?K{pHyO#uYDhktOLfN?*?|@Y^k_xgnbr)^3v3 zK^yxji_SNE%ZnTHwE4rC8}R$UjkN^EjLM0!;=2upv%~DhQYuGQOw;JgTFt_vS-6h7 zGHZD>#L<_9HQ9apT&MLUX9vjNK-dB8eT2Dwb~KM3jHJVt`omHfLGV!&Ge;Vx#qeP2 z&7SgL0DS>06C9oj0QOG&9I#7<GuVH6Q`die1{IBKQuzAKX4vE1v7!Q36UbVkLF*i; z2#49m*UPr?U><kj!|}vQJG%Pg?NB<>#f>37Wx|+J6ElAtB0l>*NczKxiO1I`{-DNy z$p<i!$2bfR=_en?2Uic~R52tMA&efbzHc6OJH#;BIIs%iAQsOF)jwK=#mm$d9JqqT zz~4L?_)ARu!2mo3F=9Z96EjGP<He|8NLh@qBKg0OEmHk6yaElWRUhk!A)R}QSHl9^ zy#Fg~{GQ<FNuUW<J0!7V_&-;o5@j)@L|LpXThu{AECh~p&=6091?MFV4v`er474z$ zFnNQ!FGxY_26a?qdQisT3Wnr**uV%wlKySrOiiZOq#yxe3ei=TtFDlsi&P9rUk<WS zt1Ea2N(d?lY6uz#S_nD_dI$!HeGrTgOc2ZvED-x4SRvRT*daI|I3W%|a6xcG@IdfF z@If4e;D-=^5QGqd5QY$e5QPwfI0PXMAps!?Aq61~aTr1dLKZ>}LLNc^LJ>j<LYcI> zqEbtWDy>k3I0B&tp-w8T(D-ycDuL3Flt78_dV{x824bWG66nIiMKmFfLTEu~L+C*0 zlEOvw4AV%lukjudQQgn<NZrr$B`=d=uOp2ZT9&#;Rxua~3I*`<D#As$Z)W~njv;c< zXeUbix_eW5sON$Vjf{~%r4Li-N6JEDHaF*qj}y1zPE6FCJ*RQ&*GS*Z+H&R3;m2If zx`=aWigNE#U!US4$YxjlRC_L9D$$^vxO`N=aT0L)18?@5tv3*gh|-rE>Ue;#yjC8> zR#)QmpQfxnq7eyUPdRs!!20CFfJnTX#o^@fkY?@TuT?h3I|@=VxJ_pT4mQxZ9Q^ot zT*rUrZ6>vd>DiFW#`FyQgAQF5pfkvdz?~PsI<BVd&21z#cC#RcwIb>lrA^qlc~|lK z$??cz6ZTFH8R?y`dMk_#i+KmjZfi?`#(6e<VSA^XW=X{pJU=GqW(b@wLmM7_NSR;s zzT<d2&nenj_}5b--){HLby_zA<8M!Vbq97ml+;f>9SpLTcz!MUnVDGT!gn9lfVZum zzLcxD{HD~;ITE<&-krt8LqR|MNdIRBU)=bx&*J6zYiwI%o?o_jgVbt1KgiK^7_bE= zjJ6(_S}u>qwqV`-w0Sj-<JU)59ErY`?4&Y(L<37%V*Lj(CYjtoL@|V3@6U1!Elk52 zG+JIbyF<IQBRb0`AI_=go(UIo=)c=LtmiU7On&&uW3fi{3o*8isB~tuYIK^Fpk>J> zaesPo(XVs*e1*X%ZTfaxXjr^_lKKK(wcuVeG4#x#03kNdS-eS2`}XXrl$M-rsPBGh zVa}0j;cuSi^F^xk32<H`<P4@Ou_`_Fd6BO4;*~*{PyDhp^+HDkQo!Dkh0D^ZJAIj# zDy4hv%Wma+yfc5!u7VxMr0h50m-M2%21o5<<7^d3`<HwQz6l5D#knvJj4yjcDDh;E z<r`lP2pl{z?PR!8pMO$;BYr>Us>|iK-(J*aM;BgmS5#@EOvCK&eopX`c4d?{wDaSf zGR$xJT3?HKdpT`9yxHUNNb!{$wh@y!Cj(D|q))T6OSk3LHTfkUgvK#420jtmbPG85 zZqmtc+2nyp?rG1)Nyh%*=BoR5;%HjMHsv_z8k76ng^~+nN9i|2Y5ts|(&N_aa|mXv z)qh^GgCrEP*VNYhbMGxJVY<U8&*5adWYI%wr>q#6lNvqV(juB)XiWTgn#_6%W}o1h zmqluRDd%(IWtT>8hAk?DTo%c~Zifrs%=^(N{y-tgV6o_ldVzLcT~m52f9B=lXR-Om z1KHnl@#Q|oeK|SfK6PTYiF<9lkIPr|{hOii$V8!<FbT)txa^M9<F5#3`n;Xq99&<i zIeJMaPHcN~m%3?|DXQY$4XyWenfgkF(Wj5c4kRD7x)d@7E;qIQ<}(2auDU}`M{Y3N zSH4mXY8dR-CzKW`jW;Nk4EuOUn5_<<YE<CkFKo(;yCfI_!kl(H9810$yV`FF68b|M zKC!>MeBQsOO0fIb>-DC61ZA<NWp3updIop46Q#mw!KF^%TAHf;w^(m)7s)x3&DQy< z(yQMO3!gptf{<~+PW63EhhfIG9yVK5R&~nlpG?E;u{O+EI|dCJ@w=<|GZKatgsiY# zXSws1=Wl&H>VR_`HUH4(uF1_}-aeS$_pP++PPoXb$(P6c3<Il5J6_0di+(meS>xKg zs)yMl85eHP+$ycM`B0U}r067&M~Lh_{+VV&H10%!X3O!bbzPdLHVC2Cr;*+dw<22n zK32Qlil`=d=I=dRw8oCAiU1yZgQVUNL<mFZ@g9_8i(EH)7BNLBwcnABugk@LAm1|2 zM(;vybk<bngIaD!mnJi}ZjGf#P1+L|#k>qV71YN5Ol@3GCkB7c(};c*NNTGnIuQ20 zMcKQ#Z7g+WNF&zLrph|&dQIC|qYZ<Wn**}~4GBx4TNLs<MkQ(X`_-kF#AXC&jDv7C zgu+JVDu&Zqb}2p1_Qc$O<Lq$b$p=~K&peWpQlKf9<61uV>4!0wx3empomno9Ugl7T zCvtF@VW7wjH!;cLVfK|OkmD%Bp)IWkwDa37KNFCK`Tmy)<vrCC7E%+DRZ8bSHQ2cj zH4+0NfA4I?wJfS5ZeOQnHU2&RY3X2yPBEbtuTtn8urSeEwi2RWG=F}8<<y!5$I`Xt zSJeZ>_g@MJ9M}g2N|UQ!H&-$=6ra6e(O1UXSTQhTdG%M7;2%AGnT{+j4q|3MaxrLN zzUfN{mE9?I=B6%2;#@&}LXW?++EhdS%H4ht8$<GMpY3;gerS_AZ?t-eFp+V$?(VPs zq8apBtUDV?%L0iLUFLuEH#vcCD3S=`;}CAFJPjy|Lk<D`Fla<F0mm>z7wgXf^3m3j z7fhk8iXadVhpmGcxP-P-lAsE0KPiG`v^CTON)afp3$8~Xde{d>L~p|bpfeo4KuknH z$D-!o4?56l4fJorcF6%mp>4=T(1W&gR{+x;*wzOCE3`EZCLRnt0IKgGl2~s7_>6KO z0`Nz|wlxYkM<U`t8x4ObmMEBU0QkotJYXpn5*Ol8f~ZkN4`k!u``26rGXuqc|HUQj z$%kU0+!B?O5<%EKgbPGLgP2mr3__w1I_$TkJ(l>aj1Fu?K`)-A{~6gwB<sK5L%4w} z{J|bcMj1u)Q#Ci%FNHj8f({R$0cNL?8LD`Af#JfxgLwt^hKPR(>A+3&gLQu-oUock zo`8=+l&}KnWJz-}9dL+3BrztSJsO6a7lkNeuVwBnW(gHmW$pE~qG8`PXRjZN_Oo(f zUkL0&UwXwe|Gs)%9;zaq$RsZj=*7T`zs%p8dMyS{{aUam2+F1deKBw!^a}UvuQ_zU zD-lL3eHY=zbOU*GsR~3GR1hSvgc6W?7m)||(6wAB2gT@CVZsm|%p<@ThKPY20QKte z2pbUS!qbCc0N?QgVREqFp8*U#h7a7XfMb7hA>-Hz!elVQKr0VUfuHobvB7O9a~Q~E z!2n`WCas;U>464-U-+3pW+vRhM;&C^QyTN1<c?%O^}FX}`h*mu8R5=?kVHuTd_ipQ z;Uy+?P=ZEuX<?|=`4w5)1`XoB-GAqf@EX+vyCj62_kaI$KtaL(-y03>X!SvrAgD+} zn0f#AmF@pmoq12R7!(AXNifA6BYS>z?<4R%{_9>p9__PyBaTlAf`4EsgjPY^*zPHE zY+Nul01F{l7bU<|PfVk<5V(WpSO87x?-??44jO2g#Es?pPG*duftE_#SfwB6m58!G zDFH}^QEV@eH{zdUxHX-qm%3#z9*<}O^Au?G{vr=Yr@&#p1juZxkzJmJ23SWmtQ%yF zTq@MSii;b2@i$0HfG%=Up%M0nJUomJ_oBl$@c@&B2oW9I_U<-j;Ecu!C_zmc!Ur-7 z5PHxPj?fX0xBq9U!gS;bLGAy!9bcmxsYQ>n!bJLRTA)FM*@7k9-y3JkKz2w-Lu4_U zz$pzm2zt{HL9lZlVZ^4f0;g0&1jrHL@u2wt`paP>>#sh5fiB&L%waCF<{qknbs$V1 zcWOGKKm>ElpfUw+LO&l_F-?Toh=sd_qvFSa0Wl0OND#tMg4eK&O-1u=Bt#bKKm#bk zox~A@_k@BVI1<JV>ql;Eix^p?4ATm-(A=&bA~T~XV~D0xS^{OXzyfMGOOl5VqxS#| znF0JvgKJBdBGa(gqyy4u{dyM-K3AGdxAH<7J?g*$oQM5zcrUx4mk~ogNB{ElONKlp zQ4mhKiPq%L@?q>7vKa6wA5j1|v!Nw<1Oxi?v4_dKPzxVmY>e98-hib%c(@d*la2C5 z{C}<sD_d@ChX$Dj=o1f%TV}8eU`od{$>Hps+coIXuzeH_f)ym@!aL(fF5DfhEJ$xv z{zV67A#&JvJAW}RQAS7;=;pwEKadTdtkhd%!z~-S_y8lvN_3DJ<{U&8w~q=3SYoh3 z06`zU>wQ?}egAvJ!%c7?DF-pdEhp}&_`ohYN9MzSEb}usO7h>pm;v116O&KiQLlU; z0}b4~4CYJz1wK{6-~dJ*td}D)xZF-W5U+rzC9Ku|o+)sb5<IFvM9GuhB~qf3Kt(yc ztnPiXaiJXg9I1dlYlxIU<F|nj*v^N+?_Gv9gEF-oIgFO}+_>;eN>EgY93>Ck$s*71 zD}&Dd%_bXbs54mc{~d#KE+t@o2>%dIya%Vy7BdghV2hifQUs$95gptMK1Co<i0EJ+ z&Vmbt@Z|zl*?)Urvptep1a;eEY9L2RjRTx1LL_l>P8uNLu{sCHEP~-mRKf@s`ZYl| zr6C8fuS8hD$ufisN28?$*USfE%AlyC2#T(2Yk?#YO%5=IdWm?h4H$}{^GUoeFh@IQ zDfGa7w6pqL4=|PLaDcgDD5Q9$2M&}#+R0fToGn4LaSjp&APeo3J~RMhB{2K7@DRd1 z`)C0A3SiD*asT%!L@|ays1(ZOyA6R0+L8Te2+wGJcF<G`FR*+P0kbH5+6@7cWzfMq zTocyZ3(!;{!jyZT2EcM9!j7fA0$x=j!r(GG-tGgUD-lt0aSG(B;P{RoI97!S@&5P4 Z8cRXJ^1u5K_JXg2JJ2bWaS#Hn{|7;D7pMRL diff --git a/source/ch-communities-and-collaboration/sec-foss-communities.ptx b/source/ch-communities-and-collaboration/sec-foss-communities.ptx index 8697094..da37e96 100644 --- a/source/ch-communities-and-collaboration/sec-foss-communities.ptx +++ b/source/ch-communities-and-collaboration/sec-foss-communities.ptx @@ -17,7 +17,9 @@ <introduction> <p> Some of the key principles that guide FOSS communities are <term>shared values</term>, <term>collaboration</term>, <term>transparency</term>, <term>inclusivity</term>, <term>meritocracy</term> and <term>release early and often</term>. - If you would like you can review a discussion of some of these principles at <url href="https://opensource.com/open-source-way" visual="opensource.com/open-source-way">The Open Source Way</url> + </p> + <p> + If you would like you can review a discussion of these principles in the speaker notes in <url href="https://github.com/HFOSSedu/GitKit-Codespace/raw/refs/heads/main/materials/slides/Ch2-CommunitiesAndCollaboration.pptx">the slides for this chapter</url> or in <url href="https://opensource.com/open-source-way" visual="opensource.com/open-source-way">The Open Source Way.</url> </p> </introduction> @@ -255,9 +257,10 @@ <introduction> <p> - There are a number of roles that tend to exist in FOSS communities. - Some of these include <term>Users</term>, <term>Requestors</term>, <term>Contributors</term>, <term>Maintainers</term> and <term>Leaders</term>. - Not all communities will have all of these roles and often community members will take on multiple roles simultaneously or move between roles over time. + One way of understanding FOSS communites is to consider the different roles that people take on in these communities. Some of these roles include <term>Users</term>, <term>Requestors</term>, <term>Contributors</term>, <term>Maintainers</term> and <term>Leaders</term>. These roles are prototypical and not every one of them roles will exist exactly in every FOSS community. Some communities will have slightly different roles, or multiple roles may be combined, etc. In addition, a given individual might simultaneously, or at different times take on multiple roles. So even though they are not exact or universal, understanding these prototypical roles can be helpful in understanding how work happens in FOSS communities. + </p> + <p> + If you would like you can review a discussion of these roles in the speaker notes in <url href="https://github.com/HFOSSedu/GitKit-Codespace/raw/refs/heads/main/materials/slides/Ch2-CommunitiesAndCollaboration.pptx">the slides for this chapter.</url> </p> </introduction> From 2fa7c4f6883bbd901915f7e70daf014f10856f98 Mon Sep 17 00:00:00 2001 From: Grant Braught <braught@dickinson.edu> Date: Wed, 14 Jan 2026 15:46:11 -0500 Subject: [PATCH 3/5] Refine regular expressions for short answer questions. (#106) **Pull Request Description** In creating this PR the regex used for all of the short answer questions in the text were reviewed. They were (mostly) revised to accept correct (or likely to be correct) answers and provide a single feedback for all unaccepted answers that provide suggestions on what to check. This provides more uniform behavior and a more consistent feel to these questions across the text. Closes #12 --- **Licensing Certification** GitKit is a [Free Cultural Work](https://freedomdefined.org/Definition) and all accepted contributions are licensed as described in the LICENSE.md file. This requires that the contributor holds the rights to do so. By submitting this pull request **I certify that I satisfy the terms of the [Developer Certificate of Origin](https://developercertificate.org/)** for its contents. --- .../sec-cloning-your-origin.ptx | 12 ++++++------ .../sec-extra-practice.ptx | 4 ++-- .../sec-the-issue-tracker.ptx | 2 +- source/ch-merge-conflicts/sec-extra-practice.ptx | 4 ++-- .../sec-deleting-a-feature-branch.ptx | 6 +++--- .../sec-pulling-the-upstream-main-branch.ptx | 4 ++-- .../sec-pushing-main-to-your-origin.ptx | 4 ++-- .../ch-upstreaming-changes/sec-staging-changes.ptx | 10 +--------- 8 files changed, 19 insertions(+), 27 deletions(-) diff --git a/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx b/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx index 013c902..cb12f5e 100644 --- a/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx +++ b/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx @@ -112,7 +112,7 @@ <feedback> <p> - The clone URL should have the format <c>https://github.com/yourGitHubUsername/theRepoName.git</c>. + The clone URL should have the format <c>https://github.com/yourGitHubUsername/theRepoName.git</c> where <c>yourGithubUsername</c> and <c>theRepoName</c> are adapted for your origin. </p> </feedback> </condition> </var> </setup> @@ -120,7 +120,7 @@ <hint> <p> Be sure you are using your GitHub origin repository (see <xref ref="ex-fork-url" />). - This clone URL should contain your GitHub username and end in <c>.git</c>. + This URL should contain your GitHub username and end in <c>.git</c>. </p> </hint> </exercise> @@ -132,7 +132,7 @@ <title><c>git clone</c>

- The git clone command will make a copy of your fork on GitHub and make the Local Copy on your computer (in your development environment). + The git clone command will make a local copy of your fork on GitHub in your development environment. Refer to Figure.

@@ -167,15 +167,15 @@

- It looks like you might be trying to clone the upstream repository instead of your origin. + It looks like you might be trying to clone the upstream repository instead of your fork/orign. Be sure you are using the URL of your origin repository.

- Be sure to replace the URL with the clone URL you found in . - The clone URL should have the format https://github.com/yourGitHubUsername/theRepoName.git. + Be sure to replace the URL with the URL of your fork/origin that you found in . + This URL should contain your GitHub username and end in .git.

diff --git a/source/ch-communities-and-collaboration/sec-extra-practice.ptx b/source/ch-communities-and-collaboration/sec-extra-practice.ptx index 4c6544a..6a843bd 100644 --- a/source/ch-communities-and-collaboration/sec-extra-practice.ptx +++ b/source/ch-communities-and-collaboration/sec-extra-practice.ptx @@ -87,14 +87,14 @@

- Please give the full URL of your fork on GitHub. + Make sure you are giving the URL for your fork, not the project's upstream URL. + This URL should contain your GitHub username.

- Make sure you are giving the URL for your fork, not the project's upstream URL. Review for information on how to fork a repository on GitHub.

diff --git a/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx b/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx index 282d7b6..f10bc3b 100644 --- a/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx +++ b/source/ch-communities-and-collaboration/sec-the-issue-tracker.ptx @@ -567,7 +567,7 @@

- +

Thank you. diff --git a/source/ch-merge-conflicts/sec-extra-practice.ptx b/source/ch-merge-conflicts/sec-extra-practice.ptx index 8427547..e1c64f7 100644 --- a/source/ch-merge-conflicts/sec-extra-practice.ptx +++ b/source/ch-merge-conflicts/sec-extra-practice.ptx @@ -398,7 +398,7 @@

- +

Thank you. @@ -409,7 +409,7 @@

Be sure that your URL is from your pull request to the upstream repository for your course. - It should have the format https://github.com/yourCourse/repoName/pulls/xx, where xx is a number. + It should have the format https://github.com/yourCourse/repoName/pull/xx, where yourCourse, repoName and xx are replaced with appropriate values for your course and pull request.

diff --git a/source/ch-staying-synchronized/sec-deleting-a-feature-branch.ptx b/source/ch-staying-synchronized/sec-deleting-a-feature-branch.ptx index 0be563b..5f5ca9f 100644 --- a/source/ch-staying-synchronized/sec-deleting-a-feature-branch.ptx +++ b/source/ch-staying-synchronized/sec-deleting-a-feature-branch.ptx @@ -178,9 +178,9 @@

- Please give the full git branch command using the format indicated in the question. - Be sure not to leave in the < and > symbols. - Replace the word branch with your feature branch name. + Please be sure that you are giving the full git branch command using the format indicated in the question. + Also, be sure that you have replaced < branch > with your feature branch name + and that you have removed the < and > symbols.

diff --git a/source/ch-staying-synchronized/sec-pulling-the-upstream-main-branch.ptx b/source/ch-staying-synchronized/sec-pulling-the-upstream-main-branch.ptx index 54f6f32..6cab222 100644 --- a/source/ch-staying-synchronized/sec-pulling-the-upstream-main-branch.ptx +++ b/source/ch-staying-synchronized/sec-pulling-the-upstream-main-branch.ptx @@ -227,8 +227,8 @@

Please give the full git pull command using the format indicated in the question. - Be sure not to leave in the < and > symbols. - Replace the words remote and branch with the appropriate names. + Also, be sure that you have replaced < remote > and < branch > with the appropriate names + and that you have removed the < and > symbols.

diff --git a/source/ch-staying-synchronized/sec-pushing-main-to-your-origin.ptx b/source/ch-staying-synchronized/sec-pushing-main-to-your-origin.ptx index 861c6db..0ebf4e2 100644 --- a/source/ch-staying-synchronized/sec-pushing-main-to-your-origin.ptx +++ b/source/ch-staying-synchronized/sec-pushing-main-to-your-origin.ptx @@ -36,8 +36,8 @@

Please give the full git push command using the format indicated in the question. - Be sure not to leave in the < and > symbols. - Replace the words remote and branch with the appropriate names. + Also, be sure that you have replaced < remote > and < branch > with the appropriate names + and that you have removed the < and > symbols.

diff --git a/source/ch-upstreaming-changes/sec-staging-changes.ptx b/source/ch-upstreaming-changes/sec-staging-changes.ptx index 60a998f..3880637 100644 --- a/source/ch-upstreaming-changes/sec-staging-changes.ptx +++ b/source/ch-upstreaming-changes/sec-staging-changes.ptx @@ -62,18 +62,10 @@ Thank you.

-
- - -

- Are you sure that is the file that the issue asked you to edit? -

-
-

- Check the format of your git stage command. + Check the format and spelling of your git stage command and that you are staging the correct file.

From dd28a240ba6363ec46871677dfeefb3d1e1d4d61 Mon Sep 17 00:00:00 2001 From: Cam Macdonell Date: Wed, 14 Jan 2026 13:50:21 -0700 Subject: [PATCH 4/5] Revise clickable area questions in 2.2.1.1 and 2.2.2.1 (#63) (#107) **Pull Request Description** Fixes #63 replacing clickable areas with multiple choice/selection questions. Feedback for correct and incorrect answers has also been added. Closes #63 --- **Licensing Certification** GitKit is a [Free Cultural Work](https://freedomdefined.org/Definition) and all accepted contributions are licensed as described in the LICENSE.md file. This requires that the contributor holds the rights to do so. By submitting this pull request **I certify that I satisfy the terms of the [Developer Certificate of Origin](https://developercertificate.org/)** for its contents. --- .../sec-foss-communities.ptx | 1710 ++++++++++++++--- 1 file changed, 1426 insertions(+), 284 deletions(-) diff --git a/source/ch-communities-and-collaboration/sec-foss-communities.ptx b/source/ch-communities-and-collaboration/sec-foss-communities.ptx index da37e96..7fc01b4 100644 --- a/source/ch-communities-and-collaboration/sec-foss-communities.ptx +++ b/source/ch-communities-and-collaboration/sec-foss-communities.ptx @@ -41,22 +41,94 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + + +

+ Shared values +

+ + +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ Working together to solve problems is at the heart of collaboration. +

+
+
+ + +

+ Transparency +

+
+ + +

+ It's not transparency. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ It's not inclusivity. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ It's not release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + @@ -68,25 +140,94 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + +

+ Shared values +

+ + +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ It's not collaboration. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Transparency +

+
+ + +

+ Sharing decisions and rationale with the community allows everyone to know how and why decisions are reached. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ Sharing decisions and rationale allows everyone in the community to feel included. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ It's not release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + -

@@ -95,24 +236,94 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

- + + + +

+ Shared values +

+
+ +

+ The goals are shared if they take precedence over individual agendas. +

+
+ + + +

+ Collaboration +

+
+ + +

+ Shared goals of the community invite collaboration. +

+
+
+ + +

+ Transparency +

+
+ + +

+ It's not transparency. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ It's not inclusivity. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ It's not release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + +
@@ -122,22 +333,94 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + +

+ Shared values +

+
+ +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ It's not collaboration. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Transparency +

+
+ + +

+ It's not transparency. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ Individuals feel included if their contributions are assessed on merit, not their own identity. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ Ideas and contributions should be assessed solely on merit. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ It's not release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + + +
@@ -149,22 +432,94 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + +

+ Shared values +

+ + +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ It's not collaboration. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Transparency +

+
+ + +

+ It's not transparency. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ It's not inclusivity. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ Releasing early and often allows the project to respond to needs quickly by gathering feedback. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + + @@ -176,22 +531,95 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + +

+ Shared values +

+ + +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ When we can modify what others have shared, we unlock new possibilities. +

+
+
+ + +

+ Transparency +

+
+ + +

+ It's not transparency. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ It's not inclusivity. + Another principle is more closely related. Review the principles in The Open Source Way. + +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ It's not release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + + @@ -203,22 +631,95 @@

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + +

+ Shared values +

+ + +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ It's not collaboration. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Transparency +

+
+ + +

+ It's not transparency. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ Good ideas can come from anywhere. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. +

+
+ + +

+ It's not release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + + + @@ -228,24 +729,96 @@ All community members have access to the information necessary to do their best work.

-

- - - - shared values - collaboration - transparency - - - - inclusivity - meritocracy - release early and often - - - -

+ + + +

+ Shared values +

+ + +

+ It's not shared values. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + + +

+ Collaboration +

+
+ + +

+ It's not collaboration. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Transparency +

+
+ + +

+ When we have access to the information and materials to do our best work, we can build on each other's work. +

+
+
+ + +

+ Inclusivity +

+
+ + +

+ It's not inclusivity + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Meritocracy +

+
+ + +

+ It's not meritocracy. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+
+ + +

+ Release early and often. + Another principle is more closely related. Review the principles in The Open Source Way. +

+
+ + +

+ It's not release early and often. +

+
+
+ + + Principles are related, but select the principle(s) that most closely align with the given statement. + + +
@@ -280,26 +853,80 @@

Choosing the license under which the project will be released.

+ + + + +

+ Users +

+
+ +

+ Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Requestors +

+
-

- - - - - Users - Requestors - Contributors - + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+ +
+ + +

+ Contributors +

+
- - Maintainers - Leaders - - + +

+ It's not contributors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
-

- + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+ +
+ + +

+ Leaders +

+
+ +

+ Leaders determine how a project will be licensed. +

+
+
+
+ + Roles are prototypical and can overlap, but choose the role that typically performs this task. + + @@ -307,23 +934,80 @@ Using the software in a new, unanticipated or creative way.

-

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

+ + + +

+ Users +

+
+ +

+ Users have the freedom to choose how to use software. +

+
+ + + +

+ Requestors +

+
+ + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Contributors +

+
+ + +

+ It's not contributors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ + +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. +
@@ -335,23 +1019,79 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

- + + + +

+ Users +

+ + +

+ Users only use the software as is. +

+
+ + + +

+ Requestors +

+
+ +

+ Requestors request new features. +

+
+
+ + +

+ Contributors +

+
+ + +

+ It's not contributors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ + +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. + + @@ -361,21 +1101,79 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

+ + + +

+ Users +

+
+ +

+ Users detect bugs and report them. +

+
+ + + +

+ Requestors +

+
+ + +

+ Requestors detect bugs and report them. +

+
+
+ + +

+ Contributors +

+
+ + +

+ It's not contributors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ + +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. + +
@@ -387,24 +1185,80 @@

- - - - Users - Requestors - Contributors - + + + +

+ Users +

+ + +

+ It's not users. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+ + + +

+ Requestors +

+
- - Maintainers - Leaders - - + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Contributors +

+
-

- + +

+ Contributors patch the code. +

+ +
+ + +

+ Maintainers +

+
+ +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. + +

@@ -413,21 +1267,79 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

+ + + +

+ Users +

+
+ +

+ It's not users. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+ + + +

+ Requestors +

+
+ + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Contributors +

+
+ + +

+ Contributors contribute more than just code, such as installation instructions. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ + +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. +
@@ -439,21 +1351,78 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

+ + + +

+ Users +

+ + +

+ It's not users. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+ + + +

+ Requestors +

+
+ + +

+ Requestors can do bug documenting. +

+
+
+ + +

+ Contributors +

+
+ + +

+ Contributors contribute more than just code, such as bug documenting. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ + +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. + @@ -465,21 +1434,79 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

+ + + +

+ Users +

+ + +

+ It's not users. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+ + + +

+ Requestors +

+
+ + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Contributors +

+
+ + +

+ It's not contributors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ It's not maintainers. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Leaders +

+
+ + +

+ Leaders determine the goals for a project. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. + @@ -491,23 +1518,80 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

- + + + +

+ Users +

+ + +

+ It's not users. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+ + + +

+ Requestors +

+
+ + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Contributors +

+
+ + +

+ It's not contributors + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ Maintainers are responsible for the code, including accepting bug fixes. +

+
+
+ + +

+ Leaders +

+
+ +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. + + @@ -517,21 +1601,79 @@

- - - - Users - Requestors - Contributors - - - - Maintainers - Leaders - - - -

+ + + +

+ Users +

+
+ +

+ It's not users. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+ + + +

+ Requestors +

+
+ + +

+ It's not requestors. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Contributors +

+
+ + +

+ Contributors contribute to design. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + +

+ Maintainers +

+
+ + +

+ Maintainers are responsible for the code, including designing. +

+
+
+ + +

+ Leaders +

+
+ + +

+ It's not leaders. + Another role (or roles) is most likely to be responsible for this activity. Review the roles in the chapter slides. +

+
+
+ + + Roles are prototypical and can overlap, but choose the role that typically performs this task. +
From 354faa24b94123032e5305a56b8f84823a2fc9c0 Mon Sep 17 00:00:00 2001 From: Grant Braught Date: Wed, 14 Jan 2026 15:55:50 -0500 Subject: [PATCH 5/5] Make capitalization of git/Git consistent (#109) **Pull Request Description** Capitalizes Git anytime it is not used in a command (e.g. `git status`). Closes #55 --- **Licensing Certification** GitKit is a [Free Cultural Work](https://freedomdefined.org/Definition) and all accepted contributions are licensed as described in the LICENSE.md file. This requires that the contributor holds the rights to do so. By submitting this pull request **I certify that I satisfy the terms of the [Developer Certificate of Origin](https://developercertificate.org/)** for its contents. --- README.md | 3 +++ .../ch-communities-and-collaboration.ptx | 4 ++-- .../sec-cloning-your-origin.ptx | 8 ++++---- .../sec-development-environment.ptx | 6 +++--- .../sec-extra-practice.ptx | 2 +- .../sec-farmdata2.ptx | 2 +- .../sec-git-command-summary.ptx | 15 +++++++-------- .../sec-instructor-communities.ptx | 8 ++++---- .../sec-instructor-merge-conflicts.ptx | 6 +++--- .../sec-instructor-upstreaming.ptx | 6 +++--- .../sec-git-command-summary.ptx | 2 +- .../sec-resolving-a-merge-conflict.ptx | 2 +- .../sec-gitkit-feedback.ptx | 2 +- .../sec-verifying-the-upstream-remote.ptx | 2 +- .../sec-editing-local-files.ptx | 2 +- .../sec-exploring-your-local-repository.ptx | 2 +- .../sec-gitkit-feedback.ptx | 2 +- .../sec-staging-changes.ptx | 2 +- source/docinfo.ptx | 2 +- source/frontmatter.ptx | 6 +++--- source/main.ptx | 2 +- 21 files changed, 44 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 0c7f124..3a45317 100644 --- a/README.md +++ b/README.md @@ -224,6 +224,9 @@ Use text styling consistently throughout the document as follows: - The first use of a new term. - `"..."` (quotations) - GitHub / VSCode / Linux UI elements (buttons / menus / text in output / etc) +- Git vs `git` + - Use `git` only when writing a command (e.g. `git status`). + - Use Git in all other instances. #### Escaping Characters diff --git a/source/ch-communities-and-collaboration/ch-communities-and-collaboration.ptx b/source/ch-communities-and-collaboration/ch-communities-and-collaboration.ptx index 8b1f59e..4030121 100644 --- a/source/ch-communities-and-collaboration/ch-communities-and-collaboration.ptx +++ b/source/ch-communities-and-collaboration/ch-communities-and-collaboration.ptx @@ -8,11 +8,11 @@

- The exercises in this chapter focus on FOSS communities. They explore what they are, how they are organized, the principles on which they operate and the roles that the community members take on. They also begin to look at some of the tools and processes that these communities use to support those principles and coordinate their work. You will see how git and GitHub work together to allow FOSS communities to share their work and to collaborate. In particular, you will create a fork and clone, and see how they make it possible for a diverse and distributed group of contributors to work asynchronously and to contribute useful changes back to the upstream. + The exercises in this chapter focus on FOSS communities. They explore what they are, how they are organized, the principles on which they operate and the roles that the community members take on. They also begin to look at some of the tools and processes that these communities use to support those principles and coordinate their work. You will see how Git and GitHub work together to allow FOSS communities to share their work and to collaborate. In particular, you will create a fork and clone, and see how they make it possible for a diverse and distributed group of contributors to work asynchronously and to contribute useful changes back to the upstream.

- In this and the next several chapters you will use a copy of the FarmData2 project repository to gain hands-on experience using use git and GitHub. This experience will strengthen your understanding of git, GitHub and FOSS communities. + In this and the next several chapters you will use a copy of the FarmData2 project repository to gain hands-on experience using use Git and GitHub. This experience will strengthen your understanding of Git, GitHub and FOSS communities.

diff --git a/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx b/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx index cb12f5e..3aafa73 100644 --- a/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx +++ b/source/ch-communities-and-collaboration/sec-cloning-your-origin.ptx @@ -421,11 +421,11 @@

- The command git remote on its own will show you the names of the remotes that git knows about, but not their URLS. + The command git remote on its own will show you the names of the remotes that Git knows about, but not their URLS.

- If you want to have git display the URLs of the remotes as well, you will need to add the -v or --verbose flag: git remote -v + If you want to have Git display the URLs of the remotes as well, you will need to add the -v or --verbose flag: git remote -v

@@ -433,7 +433,7 @@

- Which command will show you the URL(s) of the remote(s) that git knows about? + Which command will show you the URL(s) of the remote(s) that Git knows about?

@@ -490,7 +490,7 @@

- git url is not a git command. + git url is not a Git command.

diff --git a/source/ch-communities-and-collaboration/sec-development-environment.ptx b/source/ch-communities-and-collaboration/sec-development-environment.ptx index 9b8a377..5a483b1 100644 --- a/source/ch-communities-and-collaboration/sec-development-environment.ptx +++ b/source/ch-communities-and-collaboration/sec-development-environment.ptx @@ -422,7 +422,7 @@

The git config --global user.name "<name>" command sets the name that Git will associate with your changes. - Throughout this book, < > will be used to indicate a part of a git command that you must enter. + Throughout this book, < > will be used to indicate a part of a Git command that you must enter. For example, if you want your name to appear as Jane D. the command would be git config --global user.name "Jane D.".

@@ -438,7 +438,7 @@

- This command will set the name associated with your changes in git. + This command will set the name associated with your changes in Git.

@@ -483,7 +483,7 @@

- This command will set the email associated with your changes in git. + This command will set the email associated with your changes in Git.

diff --git a/source/ch-communities-and-collaboration/sec-extra-practice.ptx b/source/ch-communities-and-collaboration/sec-extra-practice.ptx index 6a843bd..1a77c89 100644 --- a/source/ch-communities-and-collaboration/sec-extra-practice.ptx +++ b/source/ch-communities-and-collaboration/sec-extra-practice.ptx @@ -166,7 +166,7 @@

- The origin URL should be the one from your git clone command. + The origin URL should be the one from your Git clone command.

diff --git a/source/ch-communities-and-collaboration/sec-farmdata2.ptx b/source/ch-communities-and-collaboration/sec-farmdata2.ptx index 48bbc16..d958896 100644 --- a/source/ch-communities-and-collaboration/sec-farmdata2.ptx +++ b/source/ch-communities-and-collaboration/sec-farmdata2.ptx @@ -6,7 +6,7 @@

Git and GitHub were designed to support the collaborative work of the FOSS communities that you learned about in class and in . - In this section you'll learn a little about the FarmData2 project that GitKit as the basis for the activities you'll be completing as you learn the basics of git and GitHub. + In this section you'll learn a little about the FarmData2 project that GitKit as the basis for the activities you'll be completing as you learn the basics of Git and GitHub.

diff --git a/source/ch-communities-and-collaboration/sec-git-command-summary.ptx b/source/ch-communities-and-collaboration/sec-git-command-summary.ptx index 79140ef..b7f4955 100644 --- a/source/ch-communities-and-collaboration/sec-git-command-summary.ptx +++ b/source/ch-communities-and-collaboration/sec-git-command-summary.ptx @@ -13,14 +13,13 @@
- - <exercise xml:id="ex-git-commands-summary-communities" - label="ex-git-commands-summary-communities"> - <statement> - <p> - Match the tasks on the right with the appropriate git command listed on the left. - </p> - </statement> + <title /> + <exercise xml:id="ex-git-commands-summary-communities" label="ex-git-commands-summary-communities"> + <statement> + <p> + Match the tasks on the right with the appropriate Git command listed on the left. + </p> + </statement> <cardsort> <match> diff --git a/source/ch-instructor-guide/sec-instructor-communities.ptx b/source/ch-instructor-guide/sec-instructor-communities.ptx index 8827b16..bffb1b6 100644 --- a/source/ch-instructor-guide/sec-instructor-communities.ptx +++ b/source/ch-instructor-guide/sec-instructor-communities.ptx @@ -125,16 +125,16 @@ <li> <title>Slides 6-8

- Version control and repository hosting are defined as collaboration tools and a distinction is drawn between them. A number of different examples of each, e.g. svn/mercurial for version control and GitLab/SourceForge for repository hosting, are mentioned for breadth. This can also help to emphasize that while the GitKit focuses on git and GitHub, that the concepts being covered apply to a broad range of similar tools. While the distinction between version control and repository hosting is a useful one, it is far less clear in practice and this can cause confusion for some students - particularly those with prior git/GitHub experience. For example, most repository hosting services provide access to some aspects of the underlying version control tools for the repositories that they host (e.g. it is possible to create branches and commit changes via the GitHub user interface). + Version control and repository hosting are defined as collaboration tools and a distinction is drawn between them. A number of different examples of each, e.g. svn/mercurial for version control and GitLab/SourceForge for repository hosting, are mentioned for breadth. This can also help to emphasize that while the GitKit focuses on Git and GitHub, that the concepts being covered apply to a broad range of similar tools. While the distinction between version control and repository hosting is a useful one, it is far less clear in practice and this can cause confusion for some students - particularly those with prior Git/GitHub experience. For example, most repository hosting services provide access to some aspects of the underlying version control tools for the repositories that they host (e.g. it is possible to create branches and commit changes via the GitHub user interface).

  • Slides 10-15

    - The GitKit uses sequences of diagrams to visualize key concepts and processes related to the use of git and GitHub and the forking workflow. Diagrams in the same style are used throughout all of the GitKit topics. A key to success with the GitKit, for both faculty and students, is understanding these diagrams and being able to connect what they depict to the git/GitHub commands used in the forking workflow. + The GitKit uses sequences of diagrams to visualize key concepts and processes related to the use of Git and GitHub and the forking workflow. Diagrams in the same style are used throughout all of the GitKit topics. A key to success with the GitKit, for both faculty and students, is understanding these diagrams and being able to connect what they depict to the Git/GitHub commands used in the forking workflow.

    - The first series of diagrams show the relationship between the three copies of a FOSS project's repository that a developer interacts with (upstream, origin and local). They also illustrate the connection between these three copies and the git and GitHub commands that create them (fork and clone). A distinction is also made between remote copies of the repository, those residing in the cloud (the upstream and origin), and the local copy that resides in the student's development environment. Note, that when using a KitClient the development environment is running via GitHub Codespaces and not on the student's physical machine. This can be a source of confusion and it is worth spending some time clarifying this relationship. + The first series of diagrams show the relationship between the three copies of a FOSS project's repository that a developer interacts with (upstream, origin and local). They also illustrate the connection between these three copies and the Git and GitHub commands that create them (fork and clone). A distinction is also made between remote copies of the repository, those residing in the cloud (the upstream and origin), and the local copy that resides in the student's development environment. Note, that when using a KitClient the development environment is running via GitHub Codespaces and not on the student's physical machine. This can be a source of confusion and it is worth spending some time clarifying this relationship.

    The hands-on activities provide detailed instructions for creating a fork in GitHub, starting the KitClient and creating a local clone. However, if time allows it may be also be helpful to demonstrate these actions in class. @@ -143,7 +143,7 @@

  • Slides 17-20

    - A second series of diagrams introduce a basic FOSS workflow that illustrates how upstreaming works. Note that this is not the full forking workflow, as it does not include the use of feature branches and ignores the details of staging and committing changes. The primary purpose of this sequence of diagrams is to illustrate how the concept of upstreaming from the Cookie video is implemented using git/GitHub. Additional details of the forking workflow (branch, edit, stage, commit) are added in the second topic and revisited in the third topic. + A second series of diagrams introduce a basic FOSS workflow that illustrates how upstreaming works. Note that this is not the full forking workflow, as it does not include the use of feature branches and ignores the details of staging and committing changes. The primary purpose of this sequence of diagrams is to illustrate how the concept of upstreaming from the Cookie video is implemented using Git/GitHub. Additional details of the forking workflow (branch, edit, stage, commit) are added in the second topic and revisited in the third topic.

  • diff --git a/source/ch-instructor-guide/sec-instructor-merge-conflicts.ptx b/source/ch-instructor-guide/sec-instructor-merge-conflicts.ptx index a038811..39d8cc7 100644 --- a/source/ch-instructor-guide/sec-instructor-merge-conflicts.ptx +++ b/source/ch-instructor-guide/sec-instructor-merge-conflicts.ptx @@ -10,7 +10,7 @@ At the start of this chapter students will have made pull requests for the "Round 2" issues. Initially GitHub will report that these PRs can be merged automatically. However, the instructor will begin this topic by introducing changes to the upstream main that create merge conflicts with the fixes to each of the "Round 2" issues. Students will then observe that their PRs go from being able to be merged automatically to containing conflicts.

    - This chapter then focuses on the resolution of merge conflicts. The concepts of merge commits, common ancestors, best common ancestor, and non-conflicting and conflicting changes are introduced. The topic then covers the process of merging main into a feature branch, git's raw conflict information and the use of a basic merge tool. The hands-on activity concludes with the students having resolved the merge conflict in their "Round 2" pull request. Note that these PRs are never merged into the upstream as part of the GitKit activities. + This chapter then focuses on the resolution of merge conflicts. The concepts of merge commits, common ancestors, best common ancestor, and non-conflicting and conflicting changes are introduced. The topic then covers the process of merging main into a feature branch, Git's raw conflict information and the use of a basic merge tool. The hands-on activity concludes with the students having resolved the merge conflict in their "Round 2" pull request. Note that these PRs are never merged into the upstream as part of the GitKit activities.

    The exercises in this chapter have the students perform the following major tasks: @@ -89,7 +89,7 @@ Uses a text based example to introduce the concepts of common ancestors and best common ancestor, and then uses those to identify conflicting changes and non-conflicting changes. One way to identify these changes is first to compare the feature branch to the best common ancestor and highlight all changes in the feature branch. Then repeat, but compare the main branch to the best common ancestor and highlight all differences in the main branch. Then any lines that are highlighted in both the feature branch and the main branch are conflicting changes. All other highlighted lines are non-conflicting changes.

    - Note that in these examples the identification of conflicting changes is simplified to be line based. That is, if a change is found, the entire line is marked as containing a change. Similarly, if a line is changed in both the feature branch and the main branch, the entire line is marked as a conflict. The algorithm used by git is more complex than this simplified approach, but the concept is sufficiently the same for the purposes of these activities. + Note that in these examples the identification of conflicting changes is simplified to be line based. That is, if a change is found, the entire line is marked as containing a change. Similarly, if a line is changed in both the feature branch and the main branch, the entire line is marked as a conflict. The algorithm used by Git is more complex than this simplified approach, but the concept is sufficiently the same for the purposes of these activities.

  • @@ -132,7 +132,7 @@ Slide 20

    - Shows the raw merge conflict information that is produced by git when a merge creates a conflict. This information can be edited manually in any text editor. However, it is often difficult to identify exactly what changes exist. This is good motivation for the use of a graphical merge tool that makes it easier to see what changes have been made and where the conflicts exist. + Shows the raw merge conflict information that is produced by Git when a merge creates a conflict. This information can be edited manually in any text editor. However, it is often difficult to identify exactly what changes exist. This is good motivation for the use of a graphical merge tool that makes it easier to see what changes have been made and where the conflicts exist.

  • diff --git a/source/ch-instructor-guide/sec-instructor-upstreaming.ptx b/source/ch-instructor-guide/sec-instructor-upstreaming.ptx index 1a0ad47..059d96c 100644 --- a/source/ch-instructor-guide/sec-instructor-upstreaming.ptx +++ b/source/ch-instructor-guide/sec-instructor-upstreaming.ptx @@ -59,7 +59,7 @@
  • Slide 2

    - Reviews the main git/GitHub concepts and vocabulary from Chapter 2. The terms upstream repository, origin repository, local repository, local, remote, fork, and clone should be reviewed so that they begin to be part of the student's working vocabulary. + Reviews the main Git/GitHub concepts and vocabulary from Chapter 2. The terms upstream repository, origin repository, local repository, local, remote, fork, and clone should be reviewed so that they begin to be part of the student's working vocabulary.

  • @@ -73,7 +73,7 @@

    Introduces branches and commits. In the diagrams on these slides, and throughout the remainder of the GitKit, different colors are used as the unique identifier for each commit (e.g. we can talk about the "red" or the "yellow" commit). - This slide introduces a conceptual simplification to think of a commit as a complete "snapshot" of all files in the project repository at that point in time, along with some meta data. Depending on the level of the course being taught, it may be worth a moment here to to explore the idea that storing a complete copy of the files for each commit would be very inefficient and discuss that it does not work that way in practice. Git commits do not actually contain full copies of every file in the repo. Instead, for each file that is changed by the commit, the "snapshot" contains a full (compressed) copy of the file. For each file that is not changed by the commit, the "snapshot" contains only a link (like a shortcut) to that file. This link points to the file in the most recent commit in which it was changed. Depending on the level of the course being taught, this can also provide an opportunity to distinguish git from other delta-based version control systems (cvs, svn) where commits record changes to files rather than complete copies of the changed files. + This slide introduces a conceptual simplification to think of a commit as a complete "snapshot" of all files in the project repository at that point in time, along with some meta data. Depending on the level of the course being taught, it may be worth a moment here to to explore the idea that storing a complete copy of the files for each commit would be very inefficient and discuss that it does not work that way in practice. Git commits do not actually contain full copies of every file in the repo. Instead, for each file that is changed by the commit, the "snapshot" contains a full (compressed) copy of the file. For each file that is not changed by the commit, the "snapshot" contains only a link (like a shortcut) to that file. This link points to the file in the most recent commit in which it was changed. Depending on the level of the course being taught, this can also provide an opportunity to distinguish Git from other delta-based version control systems (cvs, svn) where commits record changes to files rather than complete copies of the changed files.

  • @@ -85,7 +85,7 @@
  • Slides 6-7

    - The diagrams used by the GitKit to illustrate git and GitHub concepts are extended to include branches and commits. The convention of using colors as the unique identifier for each commit is also used in these diagrams. In doing so, it is important to emphasize the distinction between the final commit in the active branch and the local files. Before any changes are made, the local files can be thought of as a copy of the final commit in the active branch. This is illustrated by initially having the "dot" in the local files be green, the same color as the final commit in the main branch. + The diagrams used by the GitKit to illustrate Git and GitHub concepts are extended to include branches and commits. The convention of using colors as the unique identifier for each commit is also used in these diagrams. In doing so, it is important to emphasize the distinction between the final commit in the active branch and the local files. Before any changes are made, the local files can be thought of as a copy of the final commit in the active branch. This is illustrated by initially having the "dot" in the local files be green, the same color as the final commit in the main branch.

  • diff --git a/source/ch-merge-conflicts/sec-git-command-summary.ptx b/source/ch-merge-conflicts/sec-git-command-summary.ptx index 74d7edb..4d1b319 100644 --- a/source/ch-merge-conflicts/sec-git-command-summary.ptx +++ b/source/ch-merge-conflicts/sec-git-command-summary.ptx @@ -17,7 +17,7 @@

    - Match the tasks on the right with the appropriate git command listed on the left. The <...> notation indicates parameters that are needed to customize each use. + Match the tasks on the right with the appropriate Git command listed on the left. The <...> notation indicates parameters that are needed to customize each use.

    diff --git a/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx b/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx index 948da1f..a7e64d9 100644 --- a/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx +++ b/source/ch-merge-conflicts/sec-resolving-a-merge-conflict.ptx @@ -436,7 +436,7 @@

    - git undo is not a git command + git undo is not a Git command

    diff --git a/source/ch-staying-synchronized/sec-gitkit-feedback.ptx b/source/ch-staying-synchronized/sec-gitkit-feedback.ptx index b828154..aeeee14 100644 --- a/source/ch-staying-synchronized/sec-gitkit-feedback.ptx +++ b/source/ch-staying-synchronized/sec-gitkit-feedback.ptx @@ -195,7 +195,7 @@

    - Examples of the git commands in addition to the syntax would help me understand what I should be typing. + Examples of the Git commands in addition to the syntax would help me understand what I should be typing.

    diff --git a/source/ch-staying-synchronized/sec-verifying-the-upstream-remote.ptx b/source/ch-staying-synchronized/sec-verifying-the-upstream-remote.ptx index be86e4b..3c7761b 100644 --- a/source/ch-staying-synchronized/sec-verifying-the-upstream-remote.ptx +++ b/source/ch-staying-synchronized/sec-verifying-the-upstream-remote.ptx @@ -292,7 +292,7 @@

    - The arrow on the left represents a git remote associated with your local repository, but it is not the upstream. + The arrow on the left represents a Git remote associated with your local repository, but it is not the upstream.

    diff --git a/source/ch-upstreaming-changes/sec-editing-local-files.ptx b/source/ch-upstreaming-changes/sec-editing-local-files.ptx index 63e6cce..b3c0c49 100644 --- a/source/ch-upstreaming-changes/sec-editing-local-files.ptx +++ b/source/ch-upstreaming-changes/sec-editing-local-files.ptx @@ -363,7 +363,7 @@

    - Strike-through is not part of the feedback git commands can provide. + Strike-through is not part of the feedback Git commands can provide.

    diff --git a/source/ch-upstreaming-changes/sec-exploring-your-local-repository.ptx b/source/ch-upstreaming-changes/sec-exploring-your-local-repository.ptx index e1e7311..1393f9c 100644 --- a/source/ch-upstreaming-changes/sec-exploring-your-local-repository.ptx +++ b/source/ch-upstreaming-changes/sec-exploring-your-local-repository.ptx @@ -572,7 +572,7 @@

    - The branch name is not displayed in the output from this git command. + The branch name is not displayed in the output from this Git command.

    diff --git a/source/ch-upstreaming-changes/sec-gitkit-feedback.ptx b/source/ch-upstreaming-changes/sec-gitkit-feedback.ptx index 12c4252..e646f01 100644 --- a/source/ch-upstreaming-changes/sec-gitkit-feedback.ptx +++ b/source/ch-upstreaming-changes/sec-gitkit-feedback.ptx @@ -249,7 +249,7 @@

    - Examples of the git commands in addition to the syntax would help me understand what I should be typing. + Examples of the Git commands in addition to the syntax would help me understand what I should be typing.

    diff --git a/source/ch-upstreaming-changes/sec-staging-changes.ptx b/source/ch-upstreaming-changes/sec-staging-changes.ptx index 3880637..f7246f2 100644 --- a/source/ch-upstreaming-changes/sec-staging-changes.ptx +++ b/source/ch-upstreaming-changes/sec-staging-changes.ptx @@ -319,7 +319,7 @@

    - Note that git also has a git add command that is equivalent to git stage. + Note that Git also has a git add command that is equivalent to git stage. So, you can add files to the stage using either git stage or git add. These activities will use git stage because it seems more descriptive of what is happening. However, you are likely to see git add used in other resources, so it is worth knowing that they are equivalent. diff --git a/source/docinfo.ptx b/source/docinfo.ptx index 77522ed..510931d 100644 --- a/source/docinfo.ptx +++ b/source/docinfo.ptx @@ -7,7 +7,7 @@ gitkit2ed - A hands-on introduction to Open Source collaboration using a git/gitHub forking workflow. + A hands-on introduction to Open Source collaboration using Git/GitHub forking workflow. diff --git a/source/frontmatter.ptx b/source/frontmatter.ptx index 2f4da7e..486d259 100644 --- a/source/frontmatter.ptx +++ b/source/frontmatter.ptx @@ -53,11 +53,11 @@ Overview

    - The GitKit introduces students to fundamental git and GitHub skills and concepts and the forking workflow within the context of an authentic Free and Open Source Software (FOSS) project. + The GitKit introduces students to fundamental Git and GitHub skills and concepts and the forking workflow within the context of an authentic Free and Open Source Software (FOSS) project.

    - The GitKit is designed to be used as a module within a course where students are first introduced to git and GitHub, but has been adapted for use in other settings. A nominal use of the GitKit requires four 75-minute class periods where the instructor introduces each chapter and four 2-3 hour homework assignments where concepts are reinforced and students gain hands-on experience. + The GitKit is designed to be used as a module within a course where students are first introduced to Git and GitHub, but has been adapted for use in other settings. A nominal use of the GitKit requires four 75-minute class periods where the instructor introduces each chapter and four 2-3 hour homework assignments where concepts are reinforced and students gain hands-on experience.

    @@ -75,7 +75,7 @@

  • - Chapters that guide students through exercises that reinforce concepts from class and give them hands-on experience with git and GitHub. + Chapters that guide students through exercises that reinforce concepts from class and give them hands-on experience with Git and GitHub.

  • diff --git a/source/main.ptx b/source/main.ptx index f51eebd..c9975c2 100644 --- a/source/main.ptx +++ b/source/main.ptx @@ -6,7 +6,7 @@ GitKit (2nd ed.) - Learn git and GitHub in Context + Learn Git and GitHub in Context