├── .github └── ISSUE_TEMPLATE │ ├── prepare-materials-for-next-session.md │ ├── schedule-emails-for-next-session.md │ ├── setup-eventbrite.md │ ├── setup-mydevelopment.yaml │ └── setup-new-lead-instructor.md ├── .gitignore ├── README.md ├── archetypes ├── chapter.md └── default.md ├── config.toml ├── content ├── 00-intro-to-version-control │ ├── 01-what-is-version-control.en.md │ ├── 02-what-is-git.en.md │ ├── 03-what-is-github.en.md │ ├── 04-what-is-gitkraken.en.md │ ├── 04a-anatomy-repo.en.md │ ├── 05-recap.en.md │ └── _index.en.md ├── 01-getting-started-with-git-and-github │ ├── 00-typical-workflow.en.md │ ├── 01-configure-git-profile.md │ ├── 02-create-first-repo.md │ ├── 03-add-file-to-repo.md │ ├── 04-check-out-git-history.md │ ├── 05-make-some-changes.md │ ├── 06-pulling-from-remote.md │ ├── 07-git-tips.md │ └── _index.en.md ├── 02-websites-with-github-pages │ ├── 01-markdown-intro.md │ ├── 02-create-markdown-website.md │ └── _index.en.md ├── 03-collaborative_github_basics │ ├── 01-collaborating-intro.en.md │ ├── 02-evolottery-intro.en.md │ ├── 03-fork.en.md │ ├── 04-clone.en.md │ ├── 05-make-changes.en.md │ ├── 06-commit-changes.en.md │ ├── 07-push-changes.en.md │ ├── 08-make-pull-request.en.md │ ├── 09-merge-pull-request.en.md │ ├── 10-inspect-merged-changes.en.Rmarkdown │ ├── 10-inspect-merged-changes.en.markdown │ ├── 11-another-way-to-collaborate.en.md │ ├── 12-pull-upstream-changes.en.md │ └── _index.en.md ├── 04-collaborative_github_advanced │ ├── 00-intro.md │ ├── 01-team-repo-template.md │ ├── 02-team-repo-configure.md │ ├── 03-resolve-issues-in-branches.md │ ├── 04-review-1st-pull-requests.md │ ├── 05-review-2nd-pull-request.md │ ├── 06-appendix.md │ ├── 06-sync-local-repo.md │ ├── _index.en.md │ └── optional-recap.md ├── _index.en.md ├── credits.en.md ├── faq-glossary-links │ ├── 01-faq.en.md │ ├── 02-glossary.en.md │ ├── 03-links.en.md │ └── _index.en.md ├── platforms.en.md ├── setup │ ├── _index.md │ ├── github │ │ └── _index.en.md │ ├── gitkraken │ │ ├── _index.en.Rmd │ │ └── _index.en.html │ └── optional │ │ └── _index.en.md └── snippets.en.md ├── emails ├── attendance_reminder_email.Rmd ├── feedback_survey_email.Rmd ├── joining_reminder_email.Rmd ├── joining_reminder_email_two_day.Rmd ├── setup_email.Rmd └── setup_email_two_day.Rmd ├── go.mod ├── go.sum ├── layouts ├── partials │ ├── logo.html │ └── menu.html └── shortcodes │ └── include.html ├── netlify.toml ├── rse-workshop-materials-template.Rproj └── static ├── css ├── pygments.css └── theme-rse-learn.css ├── images ├── TUOS-RSE-logos-small.png ├── ag-br-protect-rule-add.png ├── ag-br-protect-rule.png ├── ag-cfg-pr-inspect.png ├── ag-cfg-pr-merge-clean.png ├── ag-cfg-pr-merge-cmpl.png ├── ag-cfg-pr-merge-init.png ├── ag-cfg-pr-rev-code-init.png ├── ag-cfg-pr-rev-gen-init.png ├── ag-cfg-pr-review-cmpl.png ├── ag-collaborator-new-add.png ├── ag-collaborator-new-pending.png ├── ag-collaborator-new-search.png ├── ag-collaborator-new.png ├── ag-collaborators-all.png ├── ag-create-tmpl.png ├── ag-github-flow.png ├── ag-gk-branch-metadata.png ├── ag-gk-branch-new.png ├── ag-gk-cfg-commit-cmpl.png ├── ag-gk-cfg-commit.png ├── ag-gk-cfg-edit-details.png ├── ag-gk-cfg-edit-init.png ├── ag-gk-cfg-pr-cmpl-details.png ├── ag-gk-cfg-pr-details-br.png ├── ag-gk-cfg-pr-details-rev.png ├── ag-gk-cfg-pr-gh-view-init.png ├── ag-gk-cfg-pr-gh-view.png ├── ag-gk-cfg-pr-init.png ├── ag-gk-cfg-push-cmpl.png ├── ag-gk-cfg-push-init.png ├── ag-gk-cfg-stage.png ├── ag-gk-clone-pc.png ├── ag-gk-clone.png ├── ag-gk-open.png ├── ag-issue-init.png ├── ag-issue-sub-assign.png ├── ag-issue-sub-cmpl.png ├── ag-issue-sub-init.png ├── ag-issue-sub-list.png ├── ag-issue-sub-preview.png ├── ag-issue-sub.png ├── ag-issues-tab.png ├── ag-pr-2-review-approve.png ├── ag-pr-2-review-merge-confilct-resolve-cmpl.png ├── ag-pr-2-review-merge-confilct-resolve-commit.png ├── ag-pr-2-review-merge-confilct-resolve-init.png ├── ag-pr-2-review-merge-confilct.png ├── ag-pr-2-review-merge-issue-closed.png ├── ag-pr-2-review-merge-pre.png ├── ag-pr-2-review-merge.png ├── ag-pr-sub-review-approve.png ├── ag-pr-sub-review-codeline.png ├── ag-pr-sub-review-detail.png ├── ag-pr-sub-review-merge-cmpl.png ├── ag-pr-sub-review-merge-confirm.png ├── ag-pr-sub-review-merge-init.png ├── ag-pr-sub-review-response-checks.png ├── ag-pr-sub-review-response-resolve.png ├── ag-pr-sub-review-response.png ├── ag-pr-sub-review-submitted.png ├── ag-pr-sub-test-fail-detail.png ├── ag-pr-sub-test-fail.png ├── ag-sub-branch-init.png ├── ag-sub-branch.png ├── ag-sub-file-create.png ├── ag-sub-file-fun-commit.png ├── ag-sub-file-fun-create.png ├── ag-sub-file-fun-edit.png ├── ag-sub-file-fun-stage.png ├── ag-sub-file-init-commit.png ├── ag-sub-file-init-edit-init.png ├── ag-sub-file-init-edit.png ├── ag-sub-file-test-commit.png ├── ag-sub-file-test-create.png ├── ag-sub-file-test-edit.png ├── ag-sub-pr-cmpl.png ├── ag-sub-pr-init.png ├── ag-sub-push.png ├── ag-synch-local-checkout-main.png ├── ag-synch-local-clean.png ├── ag-synch-local-pull.png ├── ag-synch-local-view.png ├── ag-use-tmpl.png ├── bb_comms.png ├── clone-1-gk.png ├── clone-2-gk.png ├── clone-3-gk.png ├── clone-4-gk.png ├── clone-5-gk.png ├── clone.jpg ├── collab.png ├── command-symbol.png ├── commit-param.png ├── commit-pre.png ├── commit-push.png ├── copy-param-tmpl.png ├── favicon.png ├── fork-1.png ├── fork-2-gk.png ├── gif.gif ├── git-commit-workflow.png ├── git-logo-small.png ├── git-profile-complete.png ├── git-profile-complete_old.png ├── git-profile-edit.png ├── git_logo.png ├── git_logo_small.png ├── github-manage-access.png ├── github_logo.png ├── gitkraken-interface.png ├── gitkraken_logo.png ├── gitkraken_logo_old.png ├── gk-add-remote.png ├── gk-all-synched.png ├── gk-fast-forward.png ├── gk-hover-add-remote.png ├── gk-local-synched-files.png ├── gk-local-synched.png ├── gk-pull-upstream.gif ├── gk-remote-added.png ├── gk-remote-view.png ├── gk-upstream-merged.png ├── gk01.jpg ├── gk01a.png ├── gpg_off.png ├── init-1-gk.png ├── init-2-gk.png ├── init-3-gk.png ├── init-4-gk.png ├── init-5-gk.png ├── init-5a-gk.png ├── init-5b-gk.png ├── init-5c-gk.png ├── merged-params.png ├── merged-repo.png ├── param-complete.png ├── param-folder.png ├── pr-1.png ├── pr-2.png ├── pr-3.png ├── pr-filechanges.png ├── pr-merged.png ├── pr-response.png ├── remotes.jpg ├── repo.png ├── rse-logoonly-stroke.png ├── work-1-gk.png ├── work-10-gk.png ├── work-11-gk.png ├── work-12-gk.png ├── work-13-gk.png ├── work-2-gk.png ├── work-3-gk.png ├── work-4-gk.png ├── work-5-gk.png ├── work-6-gk.png ├── work-7-gk.png ├── work-8-gk.png ├── work-9-gk.png ├── work-9a-gk.png ├── work-9b-gk.png └── workflows.png └── rmarkdown-libs └── header-attrs └── header-attrs.js /.github/ISSUE_TEMPLATE/prepare-materials-for-next-session.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Prepare materials for next session 3 | about: Instructions for setting up materials ready for next session. To be completed 4 | by all instructors (lead and support) 5 | title: Prepare materials for session on [DATE-OR-SESSION-DESCRIPTION] for [INSTRUCTOR-NAME] 6 | labels: session-setup 7 | assignees: '' 8 | 9 | --- 10 | 11 | All instructors (lead and support) need to do some preparation (especially to repos in their own accounts) if they have created materials during a previously run course. Lead instructor has some extra prep steps. 12 | 13 | Complete as necessary (dependant on what has been created in the past). 14 | 15 | **Tick off tasks as they are completed or if they are not required.** 16 | 17 | - [ ] Delete `git-lesson` repo from instructor's GitHub account. Delete local copy if you want to use same location for demo. 18 | - [ ] Delete `collaborative_github_exercise` fork repo **FROM INSTRUCTOR'S ACCOUNT ONLY**. Do NOT delete the RSE-Sheffield original repo. Delete local copy (of fork!) if you want to use same location for demo. 19 | - [ ] [LEAD INSTRUCTOR] Clear previously submitted parameter files from `params/` folder in `RSE-Sheffield/collaborative_github_exercise` repo. DO NOT DELETE `params_tmpl.R`. Synch local and remote repos. 20 | - [ ] Delete `python-calculator` repo from instructor's account. Delete local copy if you want to use same location for demo. 21 | - [ ] [LEAD INSTRUCTOR] Clear collaborative team formation [googledoc](https://docs.google.com/document/d/1-CkHO417wtfJZ35X4q5tk_hcgP9W3mfEG5AsN2SIU1A/edit) 22 | 23 | Once all tasks are complete, please close issue. 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/schedule-emails-for-next-session.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Schedule emails for next session 3 | about: Instructions for scheduling emails ready for next session. To be completed 4 | by lead instructor 5 | title: Schedule emails for session on [DATE-OR-SESSION-DESCRIPTION] for [INSTRUCTOR-NAME] 6 | labels: session-setup 7 | assignees: '' 8 | 9 | --- 10 | 11 | Emails need to be scheduled via Eventbrite ahead of each session. 12 | 13 | 14 | ### Emails 15 | 16 | There are up to 5 emails that need to be scheduled for this course. There are parameterised `.Rmd` templates in the 17 | `emails/` directory which should be used to generate the contents of these emails in HTML for copy and pasting into 18 | Eventbrite. 19 | 20 | 21 | | Schedule | File | Description | 22 | |:----------------|:--------------------------------|:--------------------------------------------------------------------------------------------------------------------------| 23 | | 2 week reminder | `attendance_reminder_email.Rmd` | An attendance reminder to encourage participants who cannot attend anymore to cancel. | 24 | | 1 Week Reminder | `setup_email.Rmd` / `setup_email_two_day.Rmd` | A reminder of the setup instructions as well as information about the session platform and joining link (use appropriately to how course is being run). | 25 | | 4 Day Reminder | `setup_email.Rmd` / `setup_email_two_day.Rmd` | A reminder of the setup instructions as well as information about the session platform and joining link (use appropriately to how course is being run). | 26 | | On the Morning | `joining_reminder_email.Rmd` | A reminder of the joining link. | 27 | | Day After | `feedback_survey_email.Rmd` | A request to complete a survey. | 28 | 29 | Not all templates require all parameters but across all four email templates the parameters required are: 30 | 31 | - `lead_instructor`: name of the lead instructor 32 | - `session_joining_link`: link to the blackboard collaborate room (if teaching on-line) 33 | - `event_date`: the date of the session in ISO format (`YYYY-MM-DD`) 34 | - `event_start_time`: defaults to "10:00" 35 | - `lunch_time`: defaults to "13:00" 36 | - `prefilled_survey_link`: the unchanging part of the survey link containing the identifier of the date of course question to be pre-populated with the `event_date` parameter. 37 | 38 | #### Knitting & Sending 39 | 40 | To use these, open each `.Rmd`, edit parameters in the YAML header under `params` and knit to render to html. If you do this in 41 | [RStudio](https://rstrudio.com) then you can select the "_Knit on Save_" option. Alternatively you can knit the document 42 | with the following, assuming your currently located in the root of the repository directory and wish to knit the `attendance_reminder_email.Rmd`. 43 | 44 | ``` R 45 | rmarkdown::render("emails/.Rmd") 46 | ``` 47 | 48 | You can run this at the command line without starting an R session using the `-e` flag. 49 | 50 | ``` bash 51 | R -e "rmarkdown::render('emails/.Rmd')" 52 | ``` 53 | 54 | The html content should then be copied (from the viewer or the generated HTML document) and pasted into the Eventbrite 55 | message content box. 56 | 57 | Make sure to send a test message to yourself and to check each link prior to finalising the email. 58 | 59 | 60 | ### Blackboard Collaborate Session 61 | - Go to [Blackboard Collaborate](https://vle.shef.ac.uk), logging in via MUSE, 62 | - Under `Organisations` open `COM - Research Software Engineering`, 63 | - Select `Create Session` and fill in the details as follows: 64 | - Session Name: `git & GitHub through GitKraken - from Zero to Hero!` 65 | - Guest Access: :heavy_check_mark: 66 | - Make sure that `Guest role` is set to `participant` 67 | - Set the start and end dates and times suitable for the session, add 30 mins to 1hr extra onto the scheduled end time. 68 | - Early entry: 15 minutes before start time. 69 | - Click `create`, this will create the session link, make a note of this for the emails. 70 | 71 | 72 | ### Checklist 73 | Complete as necessary (dependent on what has been created in the past). 74 | 75 | **Tick off tasks as they are completed or if they are not required.** 76 | - [ ] attendance reminder email (2 weeks prior) 77 | - [ ] set up blackboard session 78 | - [ ] setup email appropriate for one or two day course (1 week prior) 79 | - [ ] setup email appropriate for one or two day course (4 days prior) 80 | - [ ] joining email 81 | - [ ] feedback email 82 | 83 | Once all tasks are complete, please close issue. 84 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/setup-eventbrite.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Scheduling courses with Eventbrite 3 | about: Instructions for setting up materials ready for next session. To be completed 4 | by lead instructor 5 | title: Scheduling courses with Eventbrite on [DATE-OR-SESSION-DESCRIPTION] for [INSTRUCTOR-NAME] 6 | labels: session-setup 7 | assignees: '' 8 | 9 | --- 10 | 11 | The lead instructor needs to schedule events on [Eventbrite](https://www.eventbrite.com) using the [RSE 12 | Sheffield](https://www.eventbrite.co.uk/o/rse-sheffield-29660305889) organisation. If you have not already been setup as 13 | an administrator for this you should request to be included by another team member (see [RSES 14 | Handbook](https://github.com/RSE-Sheffield/rses-handbook/blob/master/pages/eventbrite.Rmd) for further details). 15 | 16 | **NB** - The easiest approach is to copy an existing event. From the page listing events select **Past** and click on 17 | the three dots to the right of a past event and select `Copy Event`. Edit the title to remove `Copy of` and update the 18 | dates and times. 19 | 20 | 21 | ## Basic Info 22 | 23 | The following fields should be entered into each field on the **Basic Info** page. 24 | 25 | | Field | Value | 26 | |:--------------------|-----------------------------------------------------------| 27 | | Event Title | Git & GitHub through GitKraken - from Zero to Hero! | 28 | | Organiser | RSE Sheffield | 29 | | Type | Class, Training, or Workshop | 30 | | Category | Science & Technology | 31 | | Tags | git, github, gitkraken | 32 | | Location | Online Event (unless otherwise) | 33 | | Date and Time | Single Event if running over one day, otherwise Recurring | 34 | | Event Starts | Start Date/Time (always Single Event), start is usually 09:30 | 35 | | Event Ends | End Date/Time if one day finish is usually 16:30, if two 13:00 the following day. | 36 | | Time Zone | United Kingdom Time | 37 | | Event Page Language | English (UK) | 38 | 39 | 40 | 41 | ## Schedule 42 | 43 | If the course is split over two days then you should still have selected **Single Event** as selecting repeating events 44 | results in people being able to register for individual sessions rather than signing up once for both. This is a current 45 | short-coming of Eventbrite. 46 | 47 | ## Details 48 | 49 | A banner can be added to the event, some sample images are under the `resources/` directory of this repository, but if 50 | you have copied a past event this will already be in place. 51 | 52 | The following fields should be entered into each field on the **Details** page (they can be copy and pasted from a past event). 53 | 54 | ### Summary 55 | 56 | 57 | > This is an introductory course, teaching the git and GitHub skills required to manage research code over it's 58 | > development lifecycle. 59 | 60 | ### Description 61 | 62 | > How can we effectively work together on the same code? 63 | > This is an introductory course, teaching the git and GitHub skills required to manage research code over it’s development lifecycle. These skills are essential for collaborative research teams. 64 | > This event is for University of Sheffield researchers and research students only. Please register with an @shef.ac.uk 65 | > or @sheffield.ac.uk email address to ensure your ticket request is accepted. 66 | > 67 | > **Prerequisite skills***: Some programming experience. 68 | > 69 | > ### Learning Objectives 70 | > - Version controlling your own project through Git & GitHub. 71 | > - Basic collaboration through forks on GitHub. 72 | > - Advanced team collaboration through branches on GitHub. 73 | > - Using the GitKraken GUI for a smooth version control experience. 74 | > 75 | > This course will be run online. 76 | > 77 | > We are delighted to be able to make free at point of use training available to the research community, to enable 78 | > better software and more open, reproducible research. However, free at point of use training is not free. The cost of 79 | > a course can easily run to thousands of pounds, if preparation costs are taken into account. 80 | > 81 | > If you sign up for a course, please make sure you either attend or cancel your booking. Bookings can usually be 82 | > cancelled using eventbrite.com or, failing that, by emailing rse@sheffield.ac.uk. 83 | > 84 | > Running courses that are not fully attended wastes our funding (which is provided by taxpayers, charities and 85 | > students, amongst others) and reduces our collective capacity to improve research outputs and researcher experiences. 86 | > 87 | > Persistent failure to attend booked courses might result in you being excluded from future training opportunities. 88 | > 89 | > If we can do anything to make our courses more accessible for you to attend, please send suggestions to 90 | > rse@sheffield.ac.uk; the Sheffield RSE Team are committed to making our training as accessible to a wide range of 91 | > researchers as possible. 92 | 93 | 94 | ## Online Event Page 95 | 96 | We do not use this section as events are setup via Blackboard. You should click on **Page Settings** and toggle the 97 | **Atendee Event Page** to disable. 98 | 99 | ## Tickets 100 | 101 | Set the following fields under the **Tickets** section 102 | 103 | | Field | Value | 104 | |:--------------------------|----------------------------| 105 | | | Free | 106 | | Name | General Admission | 107 | | Available Quantity | 20 | 108 | | Ticket Sales End | 1 Hour Before Event Starts | 109 | | Description | Not Required | 110 | | Visibility | Visible | 111 | | Tickets Per Order Minimum | 1 | 112 | | Tickets Per Order Maximum | 1 | 113 | | Sales Channel | Online Only | 114 | 115 | ## Publish 116 | 117 | The event can be published immediately or scheduled for publishing at a specific date/time. 118 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/setup-mydevelopment.yaml: -------------------------------------------------------------------------------- 1 | name: myDevelopment Setup 2 | description: Setup delivery of the course using myDevelopment 3 | title: "[Setup]: " 4 | labels: "session-setup" 5 | assignees: 6 | - "" 7 | body: 8 | - type: markdown 9 | attributes: 10 | value: | 11 | The lead instructor needs to work through the tasks in this issue. Currently RSE do not have direct access to the [myDevelopment](https://mydevelopment.csod.com/ui/lms-learner-home/home) system where the [git & GitHub through GitKraken](https://mydevelopment.csod.com/ui/lms-learning-details/app/event/d4d09f67-097b-4451-8ddb-86cb90636c06) page is listed. Norbert Gyenge from ITS currently assists with this side of the administration. 12 | 13 | ## Who, When and Where 14 | 15 | After deciding on instructors and dates the next steps depend on whether you are conducting the training in-person, online or hybrid. Whilst hybrid sessions are possible it is recommended to stick with either in-person or online as they are easier to manage the collaborative tasks. 16 | 17 | ## In Person/Hybrid 18 | 19 | If the course is to be run in person you need to [book a 20 | room](https://sites.google.com/sheffield.ac.uk/pooledroomdirectory/home) 21 | 22 | ## On-line/Hybrid 23 | 24 | ### Blackboard Collaborate Session 25 | 26 | - Go to [Blackboard Collaborate](https://vle.shef.ac.uk), logging in via MUSE, 27 | - Under `Organisations` open `COM - Research Software Engineering`, 28 | - Select `Create Session` and fill in the details as follows: 29 | - Session Name: `git & GitHub through GitKraken - from Zero to Hero!` 30 | - Guest Access: :heavy_check_mark: 31 | - Make sure that `Guest role` is set to `participant` 32 | - Set the start and end dates and times suitable for the session, add 30 mins to 1hr extra onto the scheduled end time. 33 | - Early entry: 15 minutes before start time. 34 | - Click `create`, this will create the session link, make a note of this for the emails. 35 | 36 | ## myDevelopment 37 | 38 | Once these details have been setup they should be shared with [Norbert Gyenge](mailto:n.g.gyenge@sheffield.ac.uk) who will update the [myDevelopment page]() so that participants can register. 39 | 40 | ## Emails 41 | 42 | Emails can be drafted and scheduled for sending when setting up the course but Norbert will have to provide a list of participants prior to the emails being sent. 43 | 44 | There are up to 5 emails that need to be scheduled for this course. There are parameterised `.Rmd` templates in 45 | the`emails/` directory which should be used to generate the contents of these emails in HTML for copy and pasted 46 | into Gmail and [scheduled](https://support.google.com/mail/answer/9214606?hl=en&co=GENIE.Platform%3DDesktop) 47 | 48 | | Schedule | File | Description | 49 | |:----------------|:--------------------------------|:--------------------------------------------------------------------------------------------------------------------------| 50 | | 2 week reminder | `attendance_reminder_email.Rmd` | An attendance reminder to encourage participants who cannot attend anymore to cancel. | 51 | | 1 Week Reminder | `setup_email.Rmd` / `setup_email_two_day.Rmd` | A reminder of the setup instructions as well as information about the session platform and joining link (use appropriately to how course is being run). | 52 | | 4 Day Reminder | `setup_email.Rmd` / `setup_email_two_day.Rmd` | A reminder of the setup instructions as well as information about the session platform and joining link (use appropriately to how course is being run). | 53 | | On the Morning | `joining_reminder_email.Rmd` | A reminder of the joining link. | 54 | | Day After | `feedback_survey_email.Rmd` | A request to complete a survey. | 55 | 56 | Not all templates require all parameters but across all four email templates the parameters required are: 57 | 58 | - `lead_instructor`: name of the lead instructor. 59 | - `session_joining_link`: link to the blackboard collaborate room (if teaching on-line/hybrid). 60 | - `event_date`: the date of the session in ISO format (`YYYY-MM-DD`) 61 | - `event_start_time`: defaults to "10:00" 62 | - `lunch_time`: defaults to "13:00" 63 | - `prefilled_survey_link`: the unchanging part of the survey link containing the identifier of the date of course question to be pre-populated with the `event_date` parameter. 64 | 65 | **IMPORTANT** If the course is being run _only_ in-person you should remove **ALL** references to joining online or using two monitors from the emails to avoid confusion and the possibility of some people joining remotely. 66 | 67 | #### Knitting & Sending 68 | 69 | 70 | To use these, open each `.Rmd`, edit parameters in the YAML header under `params` and knit to render to html. If you do this in [RStudio](https://rstrudio.com) then you can select the "_Knit on Save_" option. Alternatively you can knit the document from [R](https://www.r-project.org) with the following, assuming you're currently located in the root of the repository directory and wish to knit the `.Rmd`. 71 | 72 | ``` R 73 | rmarkdown::render("emails/.Rmd") 74 | ``` 75 | 76 | You can run this at the command line without starting an R session using the `-e` flag. 77 | 78 | ``` bash 79 | R -e "rmarkdown::render('emails/.Rmd')" 80 | ``` 81 | 82 | The html content should then be copied (from the viewer in RStudio or the generated HTML document) and pasted into the body of an email on Gmail and the sending [scheduled](https://support.google.com/mail/answer/9214606?hl=en&co=GENIE.Platform%3DDesktop) for an appropriate date/time. 83 | 84 | Once all tasks are complete close the issue. 85 | - type: checkboxes 86 | id: checks 87 | attributes: 88 | label: Checklist 89 | description: A Checklist is provided below for the various tasks that are required, if you can complete the fields below for each on creation that is useful too. 90 | options: 91 | - label: Identify lead and assistant to run the course 92 | required: false 93 | - label: Choose date(s) on which to run the course. 94 | required: false 95 | - label: Choose whether course will be in-person (recommended) or on-line. 96 | required: false 97 | - label: If in-person/hybrid book a room. 98 | required: false 99 | - label: If online/hybrid setup Blackboard Collaborate Session. 100 | required: false 101 | - label: Contact [Norbert Gyenge](mailto:n.g.gyenge@sheffield.ac.uk) with details, the page description shouldn't need changing. 102 | required: false 103 | - label: Schedule emails for those who are registered. 104 | required: false 105 | - label: Setup an issue for instructors to prepare materials for next session. 106 | required: false 107 | - type: textarea 108 | id: lead 109 | attributes: 110 | label: Lead instructor 111 | description: Who will be the lead instructor for the session. 112 | validations: 113 | required: false 114 | - type: textarea 115 | id: second 116 | attributes: 117 | label: Second instructor 118 | description: Who will be the second instructor for the session. 119 | validations: 120 | required: false 121 | - type: dropdown 122 | id: venue 123 | attributes: 124 | label: Will the course be in-person, online or hybrid? 125 | multiple: true 126 | options: 127 | - In-person 128 | - Online 129 | - Hybrid 130 | validations: 131 | required: true 132 | - type: textarea 133 | id: room_hybrid 134 | attributes: 135 | label: Room Booking 136 | description: If running in-person or hybrid and a room has been requested/booked please enter details including the Help Desk ticket number. 137 | validations: 138 | required: false 139 | - type: textarea 140 | id: online_hybrid 141 | attributes: 142 | label: Online/Hybrid 143 | description: If running online or hybrid please add the session details/links here. 144 | validations: 145 | required: false 146 | - type: checkboxes 147 | id: mydevelopment 148 | attributes: 149 | label: Email details of date/time and rooms to Norbert Gynge. 150 | description: Norbert will add the event details to myDevelopment and open it to registration. 151 | options: 152 | - label: Emailed Norbert 153 | required: false 154 | - type: checkboxes 155 | id: email_schedule 156 | attributes: 157 | label: Schedule Emails 158 | description: Emails can be scheduled from the lead instructors Gmail account using the templates provided but email addresses need obtaining from Norbert Gynge. 159 | options: 160 | - label: Two week setup instructions. 161 | required: false 162 | - label: One week setup instructions. 163 | required: false 164 | - label: Four day joining reminder. 165 | required: false 166 | - label: Same day joining reminder. 167 | required: false 168 | - label: Feedback survey email. 169 | required: false 170 | - type: textarea 171 | id: prepare_material 172 | attributes: 173 | label: Issue for preparing material 174 | description: Add the issue number created for instructors to prepare the material below. 175 | validations: 176 | required: false 177 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/setup-new-lead-instructor.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Setup New Lead instructor 3 | about: Instructions for initial setup of a lead instructor. Required for onboarding. 4 | title: Setup New Lead instructor [Name of Instructor] 5 | labels: onboarding 6 | assignees: '' 7 | 8 | --- 9 | 10 | Documentation for most setup instructions is available in the course material [**setup**](https://srse-git-github-zero2hero.netlify.app/setup/) chapter. 11 | 12 | - [ ] Install git 13 | - [ ] Install [R](https://www.r-project.org/) & [RStudio](https://www.rstudio.com/) 14 | - [ ] Create GitHub account 15 | - [ ] Install GitKraken 16 | - [ ] Sign-in to GitKraken with GitHub account. 17 | - [ ] Ensure SSH keypair for accessing GitHub is configured in GitKraken. 18 | - [ ] Clone [`RSE-Sheffield/collaborative_github_exercise` repo](https://github.com/RSE-Sheffield/collaborative_github_exercise). Clone it to somewhere where you won't get it mixed up with the fork you will clone during teaching. 19 | - [ ] Ensure you have admin access to `RSE-Sheffield/collaborative_github_exercise` 20 | - [ ] Open RSE-Sheffield/collaborative_github_exercise project in Rstudio 21 | - [ ] Run `renv::restore()` to install dependencies. 22 | - [ ] Test that you can knit `plot_trait_evolution.Rmd` succesfully. _If it succeeds, it's fine to revert the resulting `plot_trait_evolution.html` to it's previous state instead of committing the changes. However, make sure they are cleared in the git tab one way or the other so as not to confuse the demo._ 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rhistory 2 | .RData 3 | .Rproj.user 4 | node_modules 5 | public 6 | .DS_Store 7 | emails/*.html 8 | 9 | # Emacs related files 10 | \#* 11 | *~ 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Version control through Git, GitHub & GitKraken Client for researchers 3 | 4 | 5 | [![Netlify Status](https://api.netlify.com/api/v1/badges/a663c5ba-6e5c-4420-b8b2-4228f094463a/deploy-status)](https://app.netlify.com/sites/srse-git-github-zero2hero/deploys) 6 | [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) 7 | [![](https://i.creativecommons.org/l/by/3.0/80x15.png)](https://creativecommons.org/licenses/by/4.0/) 8 | 9 | 10 | This repo contains the source code of the website of the ***Git & Github through GitKraken Client - From Zero to Hero!*** course. 11 | 12 | ## Prepation for course: 13 | 14 | ### Schedule events on Eventbrite 15 | 16 | The first step is to schedule events on Eventbrite. All steps are detailed in the [**Scheduling courses with 17 | Eventbrite** GitHub Issue template](). 18 | 19 | ### Scheduling emails 20 | 21 | More than 2 weeks prior to each session, a few emails need to be scheduled and the blackboard session created. All steps 22 | are detailed in the [**Schedule emails for next session** GitHub Issue 23 | template](https://github.com/RSE-Sheffield/git-github-zero-to-hero/issues/new?assignees=&labels=session-setup&template=schedule-emails-for-next-session.md&title=Schedule+emails+for+session+on+%5BDATE-OR-SESSION-DESCRIPTION%5D+for+%5BINSTRUCTOR-NAME%5D). One 24 | issue should be opened per session and the tasks completed. 25 | 26 | 27 | ### Preparing the materials 28 | 29 | To prepare for each session, materials created during the previous session need to be cleared or deleted. All steps are 30 | detailed in the [**Prepare materials for next session** GitHub Issue 31 | template](https://github.com/RSE-Sheffield/git-github-zero-to-hero/issues/new?assignees=&labels=session-setup&template=prepare-materials-for-next-session.md&title=Prepare+materials+for+session+on+%5BDATE-OR-SESSION-DESCRIPTION%5D+for+%5BINSTRUCTOR-NAME%5D). Each 32 | instructor (lead and support) should open an individual issue and complete the instructions. 33 | 34 | 35 | ### Onboarding new instructors 36 | 37 | Similarly, there is a [GitHub Issue template for **Setting up new Lead 38 | Instructors**](https://github.com/RSE-Sheffield/git-github-zero-to-hero/issues/new?assignees=&labels=onboarding&template=setup-new-lead-instructor.md&title=Setup+New+Lead+instructor+%5BName+of+Instructor%5D). Complete 39 | instructions to ensure new Instructors have all required software and materials downloaded, installed and functional. 40 | 41 | 42 | ### Resources 43 | 44 | The `resources` folder contains useful resources for teaching: 45 | 46 | - `bb_comms.png`: Screenshot to demonstrate setting your status in blackboard collaborate. Upload to session and use in 47 | the introduction to make sure all participants can give feedback using status when asked questions. 48 | 49 | 50 | *** 51 | 52 | 53 | It is powered by [Hugo](https://gohugo.io/) and the following themes: 54 | 55 | * [Hugo theme learn](https://github.com/matcornic/hugo-theme-learn) 56 | * [Hugo theme reveal-hugo](https://github.com/dzello/reveal-hugo) 57 | 58 | Slides for each section are listed in the menu and opened in a new tab (thanks to a [custom menu 59 | layout](/blob/master/layouts/partials/menu.html), compared to the original Hugo learn theme). 60 | 61 | 62 | Some Markdown content is generated with [R Markdown](https://rmarkdown.rstudio.com/), using 63 | [hugodown](https://github.com/r-lib/hugodown/). 64 | 65 | The website is deployed by [Netlify](https://www.netlify.com/). 66 | 67 | ### Why these tools? 68 | 69 | Why use Hugo for both the website and slidedecks, and not, say Hugo+hugodown for pages and xaringan for slides? 70 | This way the source of slides is html produced by Hugo from Markdown content. 71 | It allows me to use: 72 | 73 | * downlit syntax highlighting for slides created from R Markdown with hugodown output format; 74 | * Chroma syntax highlighting for other languages; 75 | * emojis! `:grin:` works in slides; 76 | * Shortcodes in slides, should I choose to. 77 | 78 | Also, because slides are in the content, they are indexed by the Hugo learn theme so searchable! 79 | 80 | 81 | ## Credits 82 | 83 | The workshop materials website template is based on the 84 | [hugo-theme-learn](https://github.com/matcornic/hugo-theme-learn), [reveal-hugo](https://github.com/dzello/reveal-hugo) 85 | Hugo themes and further work and configuration by Maëlle Salmon for her course site on [**Scientific blogging with R 86 | Markdown**](https://github.com/maelle/rmd-blogging-course). 87 | -------------------------------------------------------------------------------- /archetypes/chapter.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "{{ replace .Name "-" " " | title }}" 3 | date = {{ .Date }} 4 | weight = 5 5 | chapter = true 6 | pre = "X. " 7 | +++ 8 | 9 | 10 | # Some Chapter title 11 | 12 | Lorem Ipsum. 13 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "{{ replace .Name "-" " " | title }}" 3 | date = {{ .Date }} 4 | weight = 5 5 | +++ 6 | 7 | Lorem Ipsum. -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "/" 2 | languageCode = "en-us" 3 | title = "Git & Github through GitKraken Client - From Zero to Hero!" 4 | description = "Materials for RSE Sheffield workshop on 'Git & Github through GitKraken Client - From Zero to Hero! '" 5 | pygmentsUseClasses=true 6 | enableEmoji = true 7 | ignoreFiles = ["\\.Rmd$", "\\.Rmarkdown$", "_files$", "_cache$", "index\\.html", '\.knit\.md$', '\.utf8\.md$'] 8 | 9 | 10 | [module] 11 | [[module.imports]] 12 | path = "github.com/matcornic/hugo-theme-learn" 13 | [[module.imports]] 14 | path = "github.com/dzello/reveal-hugo" 15 | 16 | [outputFormats.Reveal] 17 | baseName = "index" 18 | mediaType = "text/html" 19 | isHTML = true 20 | 21 | [outputs] 22 | home = [ "HTML", "RSS", "JSON"] 23 | 24 | [Languages] 25 | [Languages.en] 26 | title = "Git & Github through GitKraken Client - From Zero to Hero!" 27 | weight = 1 28 | languageName = "English" 29 | 30 | [[Languages.en.menu.shortcuts]] 31 | name = " GitHub repo" 32 | identifier = "ds" 33 | url = "https://github.com/RSE-Sheffield/git-github-zero-to-hero" 34 | weight = 10 35 | 36 | [[Languages.en.menu.shortcuts]] 37 | name = " Online Learning Platforms" 38 | url = "/platforms" 39 | weight = 20 40 | 41 | [[Languages.en.menu.shortcuts]] 42 | name = " Snippets" 43 | url = "/snippets" 44 | weight = 30 45 | 46 | [[Languages.en.menu.shortcuts]] 47 | name = " Credits" 48 | url = "/credits" 49 | weight = 40 50 | 51 | [[Languages.en.menu.shortcuts]] 52 | name = " CC-BY Licence" 53 | url = "https://creativecommons.org/licenses/by/4.0/" 54 | weight = 50 55 | 56 | [params] 57 | editURL = "https://github.com/RSE-Sheffield/git-github-zero-to-hero/edit/master/content/" 58 | description = "Git & Github through GitKraken Client - From Zero to Hero!" 59 | author = "Anna Krystalli, Sheffield RSE" 60 | showVisitedLinks = true 61 | disableBreadcrumb = false 62 | disableNextPrev = false 63 | themeVariant = "rse-learn" 64 | 65 | 66 | 67 | [markup] 68 | [markup.goldmark] 69 | [markup.goldmark.renderer] 70 | unsafe = true 71 | 72 | [params.reveal_hugo] 73 | theme = "white" 74 | load_default_plugins = false 75 | plugins = [ 76 | "reveal-js/plugin/zoom-js/zoom.js", 77 | "reveal-js/plugin/notes/notes.js", 78 | ] 79 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/01-what-is-version-control.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Version Control 3 | weight: 1 4 | --- 5 | 6 | > Who has heard of version control software? :raised_hand_with_fingers_splayed: 7 | 8 |
9 | 10 | ## What is Version control? 11 | 12 | The **management of changes** to documents, computer programs, large web sites, and other collections of information. 13 | 14 | **Examples:** 15 | 16 | - Numbering of book editions 17 | 18 | - Wikipedia's Page history 19 | 20 |
21 | 22 | ### Where did it come from? 23 | 24 | > The need for a logical way to organize and control revisions has existed for almost as long as writing has existed, but revision control became much more important, and complicated when the era of computing began 25 | 26 | #### Elements of a Version Control system 27 | 28 | - Revisions are usually identified by a number or letter code, termed the **"revision number"** 29 | 30 | - Each revision is associated with a **timestamp** and the **person** making the change. 31 | 32 | - A **new snapshot of a file is recorded** every time a change is made to it. 33 | 34 | - Revisions can be **compared, restored**, and with some types of files, **merged**. 35 | 36 |
37 | 38 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/02-what-is-git.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Git 3 | weight: 2 4 | --- 5 | 6 | {{< figure src="/images/git-logo-small.png" >}} 7 | 8 | ## What is git? 9 | 10 | Open source (free to use) Version control software. Usually accessed via the command line, or a client program. 11 | 12 | 13 | ### Where did it come from? 14 | 15 | Git development began in 2006 after many developers of the Linux kernel gave up access to [BitKeeper](http://www.bitkeeper.org/) (at the time the best but proprietary) 16 | 17 | --- 18 | 19 | ## Why use it in research? 20 | 21 | ### Exhibit A 22 | 23 | 24 | {{< figure src="https://smutch.github.io/VersionControlTutorial/_images/vc-xkcd.jpg" attr="© Copyright 2013, Simon Mutch, CC-BY SA 3.0" attrlink="https://smutch.github.io/VersionControlTutorial/" >}} 25 | 26 | 27 |
28 | 29 | ### Exhibit B 30 | 31 | {{< figure src="https://www.phdcomics.com/comics/archive/phd101212s.gif" attr="'Piled Higher and Deeper' by Jorge Cham" attrlink="https://www.phdcomics.com" >}} 32 | 33 | 34 |
35 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/03-what-is-github.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Github 3 | weight: 3 4 | --- 5 | 6 | {{< figure src="/images/github_logo.png" >}} 7 | 8 | 9 | ## What is GitHub 10 | 11 | 12 | A **website** that allows you to **store your Git repositories online** and makes it easy to collaborate with others. They also provide other services like issue (bug) tracking and wikis. Similar services are [GitLab](https://gitlab.com) and [BitBucket](https://bitbucket.org/). 13 | 14 | 15 | ### Why use it in research: 16 | 17 | {{< figure src="/images/workflows.png" attr="Copyright 2016 Mozilla Science Lab CC-0">}} 18 | 19 | {{< figure src="/images/collab.png" attr="Copyright 2016 Mozilla Science Lab CC-0">}} 20 | 21 |
22 | 23 | - Acts as a **remote back-up** 24 | 25 | - Facilitates **transparency** 26 | 27 | - Facilitates **project management** 28 | 29 | - Facilitates **sharing and collaboration** 30 | 31 | - **Super-charges innovation** by Open Sourcing Science 32 | 33 | 34 | *** 35 | 36 | ### Mozilla and Working Open 37 | 38 | 39 | 40 | ### Open Source Basics 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/04-what-is-gitkraken.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gitkraken Client 3 | weight: 4 4 | --- 5 | 6 | 7 | ## What is GitKraken Client 8 | 9 | **GitKraken Client** () is a powerful and elegant multiplatform **graphical interface for Git** developed as an alternative to working with Git from the command line. 10 | 11 | It can also **interact with GitHub** or any other online repository. 12 | 13 | I've chosen it because it makes **setting up really easy** and is also **easy to use** so we can **focus more on the principles of version control**. 14 | 15 | You can check out this demo [overview and video on the GitKraken website.](https://www.gitkraken.com/gitkon/gitkraken-client-demo) 16 | 17 | There are however many other such clients for working with Git. It's even integrated into text editors or IDEs such as Rstudio and VS Code. 18 | 19 | Here's a [big list of clients on the git website](https://git-scm.com/download/gui/windows). 20 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/04a-anatomy-repo.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Anatomy of a Repository 3 | weight: 5 4 | --- 5 | 6 | 7 | ## Anatomy of a GitHub Repository 8 | 9 | - **Readme files**. The `README.md` files explain what your project is, and how to install and use it. `README.md` is the file that is automatically displayed when you open a GitHub repo. 10 | 11 | - **License**. Without some sort of licence, the contents of the repository are technically closed. Some allow users of the code to do anything they like with their code - these are known as permissive licences. Examples are the [MIT Licence](https://tldrlegal.com/license/mit-license) or [Apache](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)). 12 | + [https://choosealicense.com/](https://choosealicense.com/) - does what it says on the tin and helps you choose a licence. Here are some resources to help you choose: 13 | + [https://tldrlegal.com/](https://tldrlegal.com/) - plain english explanations of licences in bullet form. 14 | 15 | - **Contributing guide** - make a file called CONTRIBUTING.md and guidelines for contributors so they know what they should do if they want to help you out. 16 | 17 | - **Code of Conduct** - good projects have codes of conduct to make sure that people are treated well. Github has an [Code of Conduct wizard](https://help.github.com/articles/adding-a-code-of-conduct-to-your-project/) to make it easy to add one. 18 | 19 | - **Issues** - use GitHub issues to record and discuss tasks. 20 | 21 | (This list was largely inspired by [Mozilla's open leadership 101](https://mozilla.teachable.com/p/open-leadership-101). 22 | 23 | ### Example repositories 24 | 25 | - [A research compendium shared on GitHub: _Ecology Letters review paper: Noise-driven phenomena in population biology_](https://github.com/cboettig/noise-phenomena) 26 | 27 | - [An rOpenSci Labs package: `dataspice`](https://github.com/ropenscilabs/dataspice) 28 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/05-recap.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Version Control Recap 3 | weight: 5 4 | --- 5 | 6 | ## Git, GitHub, & GitKraken Client 7 | 8 |
9 | 10 | > Git, GitKraken Client, and Github are three separate things. Git is the system used for version control, but you don't have to use it with GitHub or GitKraken Client. 11 | 12 |
13 | 14 | #### - **Git** allows you to effectively "save" your work at important points in time and come back to any of the save points. 15 | 16 | #### - Sharing our work on GitHub allows others to inspect our work, make copies and contribute back changes. 17 | 18 | #### - GitKraken Client allows you to work with both from a single graphical user interface. 19 | 20 | 21 | -------------------------------------------------------------------------------- /content/00-intro-to-version-control/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | chapter: true 3 | date: "2020-08-05T17:58:11+01:00" 4 | pre: 00. 5 | title: Introduction to Version Control 6 | weight: 1 7 | --- 8 | 9 | 10 | # Introduction to Version Control 11 | 12 | 13 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/00-typical-workflow.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: A Typical Workflow 3 | weight: 1 4 | --- 5 | 6 | In a **typical Git + GitHub workflow**, you'll have have your work in a folder (repository) on your ** local computer** and also a linked copy on a ** remote repository** (_origin_), in this case GitHub. 7 | 8 | You can make changes in your local repository (most common) or your remote repository. 9 | 10 | - To synch the remote repository with local changes you **Push**. 11 | 12 | - To synch a local repository with remote changes you **Pull**. 13 | 14 | 15 | {{< figure src="/images/remotes.jpg" attr="© Copyright, Jessica Lord, BSD-2" attrlink="https://github.com/jlord/git-it/" >}} 16 | 17 | 18 | ## Tracking changes 19 | 20 | After you make changes to a file you will need to **commit them** so that Git creates a snapshot of the file at it's current state (saving the file does not commit the changes to git). To this you: 21 | 22 | - **Add** the file to the **staging** area 23 | - Write an **informative commit message** 24 | - **Commit** the changes 25 | 26 | 27 | {{< figure src="/images/git-commit-workflow.png" >}} 28 | 29 | ## GitKraken Client Interface 30 | 31 | {{< figure src="/images/gitkraken-interface.png" >}} 32 | 33 | 34 | {{% notice info %}} 35 | 36 | More info on GitKraken Client [Interface basics](https://support.gitkraken.com/start-here/interface/) 37 | 38 | {{% /notice %}} 39 | 40 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/01-configure-git-profile.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Configure your git profile 3 | weight: 2 4 | --- 5 | 6 | 7 | Before we start, if you did not **configure your git profile** when first launching GitKraken Client, you can do this by clinking on the avatar in the top right corner, selecting the profile to edit and clicking on **Edit A Profile** in the client. 8 | 9 | title picture 10 | 11 | Next complete the details with the **username and email you used to sign up to GitHub** and save. Git has now been configured with these details. 12 | 13 | title picture 14 | 15 |
16 | 17 | **Also make sure you are [signed into GitHub through GitKraken Client](https://support.gitkraken.com/integrations/github/)** 18 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/02-create-first-repo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Creating your first repository 3 | weight: 3 4 | --- 5 | 6 | ## Creating your first repository 7 | 8 | When a local directory becomes **initialised with git**, a **hidden `.git` folder is added** to it. It's now called a **repository**. You can initialise an existing project with git or a start with a completely new project. We'll start by creating a new repository. 9 | 10 | - In GitKraken Client, make sure you're logged in to GitHub. 11 | 12 | - Create a new repository (`File > Init Repo`) 13 | 14 | title picture 15 | 16 |
17 | 18 | - You will be presented with a new GUI with a bunch of options. To initialise a new repository and create a linked GitHub repository in one step, choose the GitHub.com option. 19 | 20 | title picture 21 | 22 | - __Account:__ The account in which you want the repository to be created under. This can be your account or an organization that you have access to. 23 | 24 | - __Name:__ The name of the repository, let's say _git-lesson_. 25 | 26 | - __Description:__ Optional, but every repository should have a small description! 27 | 28 | - __Access:__ Public or Private. 29 | 30 | - __Clone after init:__ This checkbox tells GitKraken Client to clone the resulting GitHub repository. This essentially creates a local copy of the repository at the path you specify next. 31 | 32 | - __Where to clone to:__ Select the folder where the repository will be cloned to. Let's say _D:/GitHub_. 33 | 34 | - __Full path:__ This should now be _D:/GitHub/git-lesson_ 35 | 36 | - __License:__ A license is mainly a list of permissions specifying how other people can use your code. For example you may want others to use your code but only if they accredited you. [choosealicense.com](https://choosealicense.com/) can help you choose the right license. For open source repositories MIT and GNU GPLv3 are usually appropriate licenses. 37 | 38 | title picture 39 | 40 |
41 | 42 | - Let's have a look at: 43 | 44 | - the repository's history in GitKraken Client, 45 | - our local version of the repository and 46 | - the repository in GitHub. 47 | 48 | title picture 49 | 50 |
51 | 52 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/03-add-file-to-repo.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Add a file to the repo 3 | weight: 4 4 | --- 5 | 6 | Okay! Now we need to do something with the repository. Let's start with a basic use-case and make a single file that lists some to-do items. The repository is just a normal folder on your computer where you can create and edit files like normal. 7 | 8 | - Open the folder (repo) you have just created. In GitKraken Client, you can do this by going to `File > Open in File Manager`. 9 | 10 | title picture 11 | 12 |
13 | 14 | - Now create a file in this folder. Open your favourite text editor and use to create a new *TODO.txt* file. 15 | 16 | title picture 17 | 18 |
19 | 20 | - Hop over to GitKraken Client again. You should see the new file you added! 21 | 22 | title picture 23 | 24 |
25 | 26 | - Now it's time to **commit** you work. This is creating a *save point* you can come back to at any time. Aim to do this whenever you've done a small, complete chunk of work. GitKraken Client provides an easy to use interface for this job: 27 | 28 | - __Unstaged Files:__ Here you have a view of all the local changes of your repository. You can also see the changes done to each file by just clicking on it. You have the option to **stage** all the changes or some of them. Staging is essentially a commit preparation process. 29 | 30 | - __Staged Files:__ All files or folders which are selected to be committed will be moved in this area. 31 | 32 | - __Commit Message:__ Commit creates a save point and every save point should have a title as well as a small description so we know what was done and why. Remember some projects last for years and many other projects will spawn in the meantime. So when we revisit an old repository or we want to go back in time to find a specific change we should be able to do that with minimum effort! 33 | 34 | - __Commit changes to n files:__ Pressing this button will commit our changes *to our local repository*. 35 | 36 | title picture 37 |
38 | 39 | - Now that we have commited our changes locally we can **push** them up to the remote repository. This is done by pressing the **Push** button on the top of GitKraken Client navigation bar. 40 | 41 | title picture 42 | 43 |
44 | 45 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/04-check-out-git-history.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Check Out Git History 3 | weight: 4 4 | --- 5 | 6 | ## Check out the Git history 7 | 8 | Now, if you look at the history of the repository you can see two commits. The first was automatically done by GitKraken Client when you created the repository - and the second should be yours! 9 | 10 | title picture 11 | 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/05-make-some-changes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Make some more changes 3 | weight: 6 4 | --- 5 | 6 | 7 | We've gotten some work done, so we'd like to update our to-do list: 8 | - Update the list with all the tasks we have completed. 9 | - Add any pending tasks 10 | - Commit and push the changes in the TODO.txt. *Don't forget to type a summary message* before you commit! 11 | 12 | title picture 13 | 14 | title picture 15 | 16 |
17 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/06-pulling-from-remote.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pulling from a remote repository 3 | weight: 7 4 | --- 5 | **Push** makes sure that your work is not only in your computer but "online" as well which means: 6 | 7 | - It is backed up. 8 | - You can access it from any location. 9 | - If your repository is open, other people can benefit from your work, they can contribute, reference you or even make recommendations. 10 | 11 | Now, what if you you make changes directly on the GitHub repository or using another machine? These changes are not locally synchronized with your primary computer. This is where **pull** comes into play. 12 | 13 |
14 | 15 | - Navigate to your repository in GitHub and scroll down to *README.md*. GitHub automatically uses this file as a landing page to a repository which at the moment should be a mere *git-lesson*. To edit this file click on the small pencil icon. This icon is available for any file if you click on it but specifically for `README.md` it's also available as soon as you enter your repository. 16 | 17 | title picture 18 | 19 |
20 | 21 | 22 | - Now let's add some text, *Markdown* text (more on markdown [later](https://annakrystalli.me/open-source-workshop/practicalexercises/github/git-02-websites-with-github-pages)). 23 | 24 | title picture 25 |
26 | 27 | - Let's see how our Markdown code is rendered and check for typos in the text. If we are happy we can commit the changes. Since we are working online on GitHub there is no **push**. 28 | 29 | title picture 30 | 31 |
32 | 33 | - Now back in GitKraken Client, we see that our remote repository is ahead of our local. We can also see that it is the local README.md file that is out of date. In order to synchronize the local with the remote repository we can use **Pull**. This will "download" any updates from the remote repository to our local one. 34 | 35 | title picture 36 | 37 |
38 | 39 | - Let's seen what happened after pulling the remote repository. 40 | 41 | title picture 42 | 43 |
44 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/07-git-tips.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: "2020-08-05T18:26:54+01:00" 3 | title: Git tips 4 | weight: 8 5 | --- 6 | 7 | 8 | ### 1. commit early, commit often 9 | ### 2. commit logical bits of work together 10 | ### 3. write meaningful commit messages 11 | 12 | ## Always remember 13 | 14 | ![](https://assets.website-files.com/6167686a04de0ebe0681d0c4/620193f40010d74e1b1aabfc_gitsave-300x2101.png) 15 | -------------------------------------------------------------------------------- /content/01-getting-started-with-git-and-github/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | chapter: true 3 | date: "2020-08-05T17:40:37+01:00" 4 | pre: 01. 5 | title: Getting Started With Git and Github 6 | weight: 2 7 | --- 8 | # Getting Started With Git and Github 9 | 10 | ### Let's start with some practical exercises! 11 | 12 | In this chapter we'll be **creating a new repository** locally and on GitHub, **making and versioning changes** and **pulling and pushing** changes to GitHub 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /content/02-websites-with-github-pages/01-markdown-intro.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction to Markdown 3 | weight: 1 4 | --- 5 | 6 | ## Markdown provides formatting on GitHub 7 | 8 | You can use it in readme files, tickets, and even to generate the content of websites. 9 | 10 | ## Text formatting 11 | 12 | **bold** text: `**bold**` 13 | 14 | _Italic_ text: `_Italic_` 15 | 16 | ~~Strikethrough~~ text: `~~Strikethrough~~` 17 | 18 | >Quoted text: 19 | 20 | `>Quoted text:` 21 | 22 | ## Headings 23 | 24 | ``` 25 | # Heading 1 26 | ## Heading 2 27 | ### Heading 3 28 | ``` 29 | 30 | 31 | ## Heading 1 32 | ### Heading 2 33 | #### Heading 3 34 | 35 | 36 |
37 | ```
38 | Code blocks
39 | ```
40 | 
41 | 42 | ``` 43 | Code blocks 44 | ``` 45 | 46 | 47 | Inline `code` 48 | 49 | Inline `code` 50 | 51 | 52 | ## Lists 53 | 54 | ### Unordered list 55 | 56 | ``` 57 | - unordered 58 | - bullet 59 | - points 60 | ``` 61 | 62 | - unordered 63 | - bullet 64 | - points 65 | 66 |
67 | 68 | ### Ordered list 69 | 70 | ``` 71 | 1. Numbered 72 | 2. List 73 | ``` 74 | 75 | 76 | 1. Numbered 77 | 2. List 78 | 79 | ## Links 80 | 81 | `[Link to another page](http://www.google.com)` : [Link to another page](http://www.google.com) 82 | 83 | 84 | ## Images 85 | 86 | `![](https://raw.githubusercontent.com/RSE-Sheffield/RSE-Sheffield.github.io/master/assets/images/logo/rse-logoonly-stroke-small.png)` 87 | 88 | ![](https://raw.githubusercontent.com/RSE-Sheffield/RSE-Sheffield.github.io/master/assets/images/logo/rse-logoonly-stroke-small.png) 89 | 90 | The parenthesis should contain either a **url** or a **local path** to an image 91 | 92 | *** 93 | 94 | For a full list, visit [GitHub's Formatting Guide](https://help.github.com/articles/basic-writing-and-formatting-syntax/#styling-text) 95 | -------------------------------------------------------------------------------- /content/02-websites-with-github-pages/02-create-markdown-website.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Create a Markdown Website 3 | weight: 2 4 | --- 5 | 6 | ## Add markdown to your Repository 7 | 8 | 1. On your computer, create a file in your repository called `index.md`. index is always the entry point to any website - the "Default" webpage. 9 | 10 | 2. Add some content - perhaps this could be your to-do list or a "Welcome to my homepage" page if you like. Save it and commit it to your repository, then push to GitHub. 11 | 12 | ## Enable the website component 13 | 14 | Now you need to **enable GitHub Pages** in order to see it turn into a live website. 15 | 16 | 1. On your GitHub repository, go to the settings (top rightish tab with a cog icon). 17 | 18 | 2. Scroll down to the `GitHub pages` section. Under `Source`, select `master branch` or `main branch` and press save. 19 | 20 | 3. You can also select a theme if you like! 21 | 22 | 4. Once this is done, you should see a green message saying _"Your site is published at_ **some-link.github.io**_"_. Click on it - and ta-da! You have a website. 23 | 24 | -------------------------------------------------------------------------------- /content/02-websites-with-github-pages/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | chapter: true 3 | date: "2020-08-05T17:55:45+01:00" 4 | pre: 02. 5 | title: Websites With Github Pages 6 | weight: 3 7 | --- 8 | 9 | # Websites With Github Pages 10 | 11 | Still not convinced that GitHub is something you should be using? There's another great feature: 12 | 13 | **They make it relatively straightforward to create a website for free**, using [markdown](https://help.github.com/categories/writing-on-github/) and [GitHub pages](https://pages.github.com/). 14 | 15 | 16 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/01-collaborating-intro.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Collaborating Intro 3 | weight: 1 4 | --- 5 | 6 | So far, we've learnt how to **create repositories, commit files, and push/pull the files to a remote source like GitHub**. 7 | 8 | Here we'll **practice collaborating with someone else**. 9 | 10 | ## Forking, cloning, and pull requests 11 | 12 | If your code is online on GitHub and has an open licence, anyone can [**fork**](https://help.github.com/articles/fork-a-repo/) to **make a separate copy of** your repository, [**clone**](https://docs.github.com/en/enterprise/2.13/user/articles/cloning-a-repository) their fork to **create a local copy** on their computer it and work on it. 13 | 14 | Once they have made changes and pushed them to their own fork, they can then **submit their changes to your repository** by making a [**pull request**](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests) 15 | 16 | {{< figure src="/images/clone.jpg" attr="© Copyright, Jessica Lord, BSD-2" attrlink="https://github.com/jlord/git-it/" >}} 17 | 18 | 19 |
20 | 21 | > #### Let's explore forking, cloning and making pull requests to a GitHub repository through a fun collaborative exercise! 22 | 23 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/02-evolottery-intro.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Evolottery 3 | weight: 2 4 | --- 5 | 6 | 7 | ### **Welcome to the evolutionary lottery of skull and beak morphology** 8 | 9 | > [**Beak and skull shapes in birds of prey (“raptors”) are strongly coupled and largely controlled by size.**](http://eprints.whiterose.ac.uk/99452/1/Bright%20et%20al.%202016_SelfArchive.pdf) _Bright, J.A., Marugan-Lobon, J., Cobb, S.N. et al. (1 more 10 | author) (2016) The shapes of bird beaks are highly controlled by nondietary factors. PNAS, 113 (19). pp. 5352-5357._ 11 | 12 | 13 | 14 | {{< figure src="/images/gif.gif" attr="gif provided by **Dr Jen Bright**" attrlink="https://www.hull.ac.uk/staff-directory/jen-bright" >}} 15 | 16 | 17 |
18 | 19 | ## Exercise aims 20 | 21 | - Each participant will **fork a GitHub repository**, and **contribute a file** required to simulate the *evolutionary trajectory of an imaginary species' body size*. 22 | 23 | - We'll use **GitHub to merge all contributions** and [**plot them together** at the end!](http://rse.shef.ac.uk/collaborative_github_exercise/plot_trait_evolution.html) 24 | 25 | - We'll also **discover the skull and beak shapes** associated with each simulated species size. 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/03-fork.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Forking 3 | weight: 3 4 | --- 5 | 6 | 7 | 8 | ### **Fork a repository on GitHub** 9 | 10 |
11 | 12 | #### **Navigate to the repository** 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | ##### **Fork the repository** 22 | 23 | Make your **own copy of the repository** on GitHub. Forks are linked and traceable 24 | 25 | 26 | 27 | 28 |
29 | 30 | When forking, GitHub makes a **copy of the repository into your account** 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/04-clone.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Cloning 3 | weight: 4 4 | --- 5 | 6 | 7 | ### **Clone a repository using GitKraken Client** 8 | 9 | 10 |
11 | 12 | #### **Clone your fork** 13 | 14 | 15 |
16 | 17 | Now that you have a fork in your account, let's clone it (ie download a local copy) through GitKraken Client. 18 | 19 | To start clonining, go to: `File > Clone Repo` 20 | 21 | 22 | 23 |
24 | 25 | In the **Clone** panel, select **GitHub.com** from the source panel. The right-side panel allows you to define the final details of the clone: 26 | 27 | - __Where to clone to:__ Select the folder where the repository will be cloned to. Let's say _D:/GitHub_. 28 | 29 | - __Repository to clone:__ Here you'll see a list of all the repositories you have access to and which you can clone. Choose the repository named _collaborative-github-exercise_. 30 | 31 | - __Full path:__ Here GitKraken Client will show the full path where the repository will be cloned to. This will be _D:/GitHub/collaborative-github-exercise_. 32 | 33 | 34 | 35 | 36 |
37 | 38 | 39 | When you're done specifying what and where to clone, click on **Clone the repo!**. If everything worked, you should see the following success message appear at the top of the client: 40 | 41 | 42 | 43 | 44 |
45 | 46 | Click on open **Open Now** to view the version control activity associated with the project you just cloned. Git has been tracking the full history of the cloned repo, including all the changes made and who they were made by. 47 | 48 | 49 | 50 | 51 |
52 | 53 | The cloned repository contents should look like so: 54 | 55 | 56 | 57 |
58 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/05-make-changes.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Making Changes 3 | weight: 5 4 | --- 5 | 6 | ### **Make a change to the repository** 7 | 8 | For this exercise each participant will create a single new file, setting a few parameters to values of their choice, in their fork. We will then collate everyone's files in the original repository through **pull requests**. 9 | 10 | The **`params/` folder is where we are going to gather our individual parameter files**. Currently, it just contains a **`.R` template file called `params_tmpl.R`**. Please **DO NOT EDIT this file**. We will **make a copy** of this file to edit. 11 | 12 | Let's go ahead and create and complete these files: 13 | 14 | 15 | 16 |
17 | 18 | #### Make a copy of **`params/params_tmpl.R`** 19 | 20 | First **think of a species name based on your name**, eg _Augustinus vourinus_. This will be the species name associated with the evolutionary trajectory defined by the parameters you're going to supply. This is both for for fun, but also to ensure that the **files each participant commits has a unique name**. 21 | 22 | Now, **make a copy** of the file and **save it in the same folder (`params/`)**. Use the **species name** you came up with to **name the file**. 23 | 24 | 25 | 26 |
27 | 28 | #### Edit your parameters file with values of your choice 29 | 30 | Open the file you just created in your favourite text editor, edit it with parameters of your choice and save. 31 | 32 | The parameters each participants need to supply are: 33 | 34 | - **`sig2`:** A numeric value greater than 0 but smaller than 5 35 | 36 | - **`species.name`:** a character string e.g. `"anas_krystallinus"`. Try to create a species name out of your name! It must be enclosed in double quotes (ie `"..."`) 37 | 38 | - **`color`:** a character string e.g. `"red"`, `"#FFFFFF"` (Check out the list of available [**colours in R**](http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf)). It also must be enclosed in double quotes (ie `"..."`) 39 | 40 | **NB: remember to save the changes to your file** 41 | 42 | 43 | 44 |
45 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/06-commit-changes.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Committing Changes 3 | weight: 6 4 | --- 5 | 6 | 7 | ### Commit changes locally to git 8 | 9 | #### In GitKraken Client, stage the new file you created 10 | 11 | Moving back to GitKraken Client you should now see that there is one file containing changes and that it is the new parameters file you just created. 12 | 13 | To **add (stage) this file to the commit** we are about to make, click on the **Stage File** button next to the name of the file. Please **ONLY STAGE YOUR NEW FILE** (ie if for any reason you've accidentally edited any other file in the repo, please do not stage it). 14 | 15 | 16 | 17 | 18 |
19 | 20 | #### Commit the staged file 21 | 22 | The file has now moved to staging area. Were now ready to commit it. Before that we need to provide a **descriptive commit message** that explains what the changes contained in this commit are. 23 | 24 | Once you've written an appropriate commit message, you can go ahead and click on **Commit changes** button to commit the file. 25 | 26 | 27 | 28 | The changes have now been committed locally to git but you still need to update your remote fork on GitHub. We'll do this by pushing our local changes to GitHub 29 | 30 |
31 | 32 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/07-push-changes.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pushing Changes 3 | weight: 7 4 | --- 5 | 6 | 7 | ### Push changes to your fork GitHub 8 | 9 | Now that you have made the commit, you now see the details of that commit in the right hand panel. To push the commit to your fork on GitHub, click on the **Push ⇧** button. Your changes have now been updated in your GitHub repo! 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/08-make-pull-request.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Making a Pull Request 3 | weight: 8 4 | --- 5 | 6 | 7 | ### Make a pull request to the upstream repository 8 | 9 | Tha changes you made locally have now been committed and pushed to your fork on GitHub. If you go to GitHub, you'll now be able to see the details of the last commit. However, we **want to collect all participants' files in the upstream repository** ie `RSE-Sheffield/collaborative_github_exercise`. So the next step is to **make a pull request** from your fork to the upstream repository. 10 | 11 |
12 | 13 | #### Initiate a new pull request 14 | 15 | GitHub is already flagging the fact that your **fork is ahead of the `master` branch** in the upstream repository and a **button to make a new pull request** with your changes is visible above that flag. 16 | 17 | To initiate a pull request (PR) just **click that `Pull Request` button**. 18 | 19 | 20 | 21 |
22 | 23 | #### Check that changes can be merged 24 | 25 | Once a PR is initiated, GitHub automatically compares your version of the code to that in the upstream repository and checks whether your changes can be merged automatically, ie that they do not create any [merge conflicts](https://help.github.com/articles/about-merge-conflicts/). 26 | 27 | If everything has gone well, GitHub should advise that you are able to merge your changes. To continue, click on the **Create pull request** button. 28 | 29 | 30 | 31 |
32 | 33 | #### Create pull request 34 | 35 | You are finally ready to send the pull request to the upstream repo. The pull request not only shows the changes you made but also **initiates a comment thread in which you can communicate with the upstream repository owners**. 36 | 37 | At this stage, you have the opportunity to give a bit more detail about the changes you have made. Be polite and friendly and be as descriptive as possible! Remember, **there are actual humans at the other end of the PR** that need to understand what changes you have made, why and be convinced that your changes are worth merging in to the code base. 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/09-merge-pull-request.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Merging a Pull Request 3 | weight: 9 4 | --- 5 | 6 | ### Response from the upstream repo owners 7 | 8 | Once a PR is made, it isn’t automatically accepted. The repository owner doesn’t have to accept it, and they might even ask for changes or refuse it outright if the pull request has errors or doesn’t suit them for some reason. The owner of the upstream repository now has the opportunity to digest your pull request through a variety of tools. 9 | 10 |
11 | 12 | #### facility to inspect changes 13 | 14 | For starters they have the opportunity to **inspect the changes** you have made to the code by clicking on the PR **files changed tab**. In this case they can clearly see that a whole new file was added. They can also check that the changes won't break the existing code. In this case they might check that the parameters submitted follow the guidelines set out in the exercise, ie that colour is a character vector enclosed in `"..."`. This testing process is what continuous integration systems are designed to automate. 15 | 16 | 17 | 18 |
19 | 20 | 21 | #### facility to to respond to suggested changes 22 | 23 | They also have an opportunity to discuss your changes in the **conversation tab**. Perhaps they are unclear about something or maybe they spotted something that needs changing. 24 | 25 | More often than not, you'll get a big THANK YOU! for your contribution and maybe even a :raised_hand: emoji! 26 | 27 | 28 | 29 |
30 | 31 | #### merge your changes 32 | 33 | Once they are happy with your changes they can go ahead an merge them by clicking on the **Merge pull request** button. 34 | 35 | This creates a new commit in the upstream repository, documenting the merge of your changes into thhe upstream code base. 36 | 37 | 38 | 39 |
40 | 41 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/10-inspect-merged-changes.en.Rmarkdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: Inspecting Merged Changes 3 | weight: 10 4 | --- 5 | 6 | 7 | ### Inspect your changes in the [upstream repository](https://github.com/RSE-Sheffield/collaborative_GitHub_exercise) 8 | 9 | You can now check the upstream repository to see **your merged changes**. The root of the repository indicates that the last commit was the merge of your pull request into the master branch: 10 | 11 | 12 | 13 | Navigating to the `params/` folder, you should now see the params file you created with your original commit associated with it! 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | ### Inspect Evolottery plot collating all contributions! 23 | 24 | Once the analysis notebook (parametarised with each participants species) is run by the repository owner and the results pushed to github, you'll be able to view a rendered version of the notebook with a **plot of all species' evolutionary trajectories**, and a **skull shape allocated to each species according to their evolved size**! 25 | 26 | 27 | ### `plot_trait_evolution.html` 28 | 29 | ```{r, echo=FALSE, out.width="100%"} 30 | knitr::include_url("https://rse.shef.ac.uk/collaborative_github_exercise/plot_trait_evolution.html") 31 | ``` 32 | 33 | 34 | 35 | 36 | 37 | 38 | Last tip: You can actually [make pull requests in GitKraken Client](https://support.gitkraken.com/working-with-repositories/pull-requests)! 39 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/10-inspect-merged-changes.en.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | title: Inspecting Merged Changes 3 | weight: 10 4 | --- 5 | 6 | 7 | ### Inspect your changes in the [upstream repository](https://github.com/RSE-Sheffield/collaborative_GitHub_exercise) 8 | 9 | You can now check the upstream repository to see **your merged changes**. The root of the repository indicates that the last commit was the merge of your pull request into the master branch: 10 | 11 | 12 | 13 | Navigating to the `params/` folder, you should now see the params file you created with your original commit associated with it! 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | ### Inspect Evolottery plot collating all contributions! 23 | 24 | Once the analysis notebook (parametarised with each participants species) is run by the repository owner and the results pushed to github, you'll be able to view a rendered version of the notebook with a **plot of all species' evolutionary trajectories**, and a **skull shape allocated to each species according to their evolved size**! 25 | 26 | 27 | ### `plot_trait_evolution.html` 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Last tip: You can actually [make pull requests in GitKraken Client](https://support.gitkraken.com/working-with-repositories/pull-requests)! 37 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/11-another-way-to-collaborate.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Another Way to Collaborate 3 | weight: 11 4 | --- 5 | 6 | ### :point_right: Give someone repository access rights! 7 | 8 | If you are working in a team with others you trust, you can **edit repository settings so everyone who is working on the code can make commits directly to the same repository**. 9 | 10 | This means they will not have to make a fork, but will instead be able to just clone the repository and push changes back to it as if it was their own 11 | 12 | Sometimes people will do this for small fixes, typos, etc. but still make pull requests for bigger changes - this allows collaborators to review your code before it's merged into the main codebase, ensuring it has enough documentation and test it for bugs. 13 | 14 | 15 | {{% notice warning %}} 16 | Make sure you **trust anyone you add as a collaborator**! You might want to require that all collaborators have [**Two-Factor Authentication** enabled](https://docs.github.com/en/github/authenticating-to-github/configuring-two-factor-authentication). You can also [**protect the `master` / `main` branch**](https://docs.github.com/en/enterprise/2.16/admin/developer-workflow/configuring-protected-branches-and-required-status-checks) from direct commits without review. 17 | {{% /notice %}} 18 | 19 | {{% notice tip %}} 20 | Use a [**`CONTRIBUTING.md`**](https://docs.github.com/en/github/building-a-strong-community/setting-guidelines-for-repository-contributors) file to **set out guidelines** for collaborator contributions. 21 | {{% /notice %}} 22 | 23 |
24 | 25 | ### Adding collaborators 26 | 27 | To add a collaborator to your repository, in your GitHub repository online, go to the **Settings** tab (top leftish), then click on the "Manage Access" link on the left hand side menu. 28 | 29 | ![](/images/github-manage-access.png) 30 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/12-pull-upstream-changes.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Pulling Upstream Changes 3 | weight: 12 4 | --- 5 | 6 | Now that everyone has contributed to the [**RSE-Sheffield** repository](https://github.com/RSE-Sheffield/collaborative_github_exercise) (the **upstream** repository), the `params/` folder contains a number of files, one for each successful pull request. 7 | 8 | This is also clear form the commit locator 9 | 10 | However your local copy of the repository only contains the template and your own file. 11 | 12 | > Q: How can I merge changes from the **upstream** repository to my **local** repository? 13 | 14 | GitKraken Client makes it really simple. 15 | 16 | 17 | ### Add the **Upstream** Remote repository 18 | 19 | On the left side menu bar, hover over the ** REMOTE** menu until a small {{% button icon="fas fa-plus" %}}{{% /button %}} button appears. 20 | 21 | 22 | 23 | This should open the ** Add Remote** Tab. Select the **`RSE-Sheffield/collaborative_github_exercise`** repository from the **GitHub Repo** dropdown menu and click the {{% button %}}**Add Remote**{{% /button %}} button. 24 | 25 | 26 | 27 | Once added, the RSE-Sheffield repository will be visible under the ** REMOTE** menu 28 | 29 | 30 | 31 | 32 | ### Pull upstream changes 33 | 34 | To pull the upstream changes from the **`RSE-Sheffield`** repository, **grab** the **`RSE-Sheffield`** button from the history panel and drag it over to your local `master` branch until a **** icon appears next to it and **drop**. 35 | 36 | 37 | 38 | Once you drop it onto the local `master` branch successfully, a pop up menu will appear. Select **Fast-forward master to RSE-Sheffield/master**. That ensures that you **do not create a circular commit of your initial commit** to the upstream repo when you are merging it back into your local repo. Find out more about [fast-forward git merging](https://ariya.io/2013/09/fast-forward-git-merge). 39 | 40 | 41 | 42 | Once the merge is complete, your local `master` will now be showing as synched with the **`RSE-Sheffield`** remote 43 | 44 | 45 | 46 | and you will have copies of all the files contributed in your `params/` folder! :tada: 47 | 48 | 49 | 50 | 51 | 52 | ### Synch **origin** remote 53 | 54 | The **origin** remote is **your fork of the repository** that's labelled with your GitHub profile avatar. As you can see, **it is now lagging behind** the upstream remote and your local copy which are now both in sync. That's because it's still missing all the files contributed by the other participants. 55 | 56 | To synch your **origin** remote, **Push** the changes you've just pulled into your local repository. 57 | 58 | 59 | 60 | > ### Once you've pushed, all the repositories should now be showing as synced. :tada: 61 | 62 | ## Run the analysis 63 | 64 | To run the analysis, open the project in Rstudio, click on the `plot_trait_evolution.Rmd`, then click on the Knit button. This should render including everybody's species! See more on [Rmarkdown notebooks](https://rmarkdown.rstudio.com/authoring_quick_tour.html#Overview) 65 | -------------------------------------------------------------------------------- /content/03-collaborative_github_basics/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | chapter: true 3 | pre: 03. 4 | title: Cloning and Collaborating with GitKraken Client 5 | weight: 4 6 | --- 7 | 8 | # Cloning and Collaborating 9 | 10 | In this Chapter we'll be exploring how to **clone** (copy) other people's repositories from GitHub and contribute content back as well as how to sync local repositories with upstream changes. 11 | -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/00-intro.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Advanced Collaboration Intro" 3 | date = 2021-05-20T12:51:43+03:00 4 | weight = 1 5 | +++ 6 | 7 | In this chapter we'll move on to a more advanced but far more realistic collaborative workflow where contributions are made by team mates that are all collaborators on the same repository. 8 | 9 | We'll be: 10 | - working in branches off the `main` branch (similar to forks but internal to the repository). 11 | - pull requests to contribute code back to the `main` branch 12 | - employing code review of pull requests 13 | - deploying continuous integration to run automatic tests and checks on pull requests 14 | - practicing resolving code conflicts between pull requests. 15 | 16 | 17 | 18 | ## Github Workflow 19 | 20 | 21 | 22 | {{< figure src="/images/ag-github-flow.png" >}} 23 | 24 | Branching is a core concept in Git. There's only one rule: **anything in the `main` branch is always deployable (i.e. it works!)**. 25 | 26 | 27 | 28 | 29 | 30 | it's extremely important that your new branch is created off of main when working on a feature or a fix. Your branch name should be descriptive, so that others can see what is being worked on. -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/01-team-repo-template.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Team formation and Repo setup" 3 | date = 2021-05-13T17:57:41+03:00 4 | weight = 1 5 | +++ 6 | 7 | ## Team formation 8 | 9 | For this chapter, we're going to be **working in groups of 3-4 participants**. I'm going to allocate these groups randomly by sending you to break out rooms. Within your break out rooms, you will have **5 mins** to introduce yourselves and decide on a **group owner**. 10 | 11 | #### The group owner will: 12 | 13 | - be the main administrator of the project 14 | - be the one that makes a copy of the template repository 15 | - will be setting up repository permissions and adding collaborators. 16 | - will open issues for the rest of the team to work on and assign them to members of the team. 17 | - will be reviewing the code, merging pull requests and handling merge conflicts. 18 | 19 | #### The rest of the team will: 20 | 21 | - be assigned a specific task (issue). 22 | - create a new branch to work in. 23 | - follow the instructions in their assigned issue to complete the task in their branch. 24 | - create a pull request from their branch to the new `main` branch. 25 | - make any corrections requested by the owner. 26 | 27 | ## Complete team details 28 | 29 | Once you have decide on a team repo owner, please copy the template provided in the course [collaborative notepad](https://docs.google.com/document/d/1-CkHO417wtfJZ35X4q5tk_hcgP9W3mfEG5AsN2SIU1A/edit?usp=sharing) and complete your team's details 30 | 31 | #### Template 32 | 33 | > **Team members (github usernames):**
34 | > **Team repo URL:**
35 | > **Team repo owner (github username):** 36 | 37 | 38 | ## Make a copy of project template 39 | 40 | The project we will be working with and contributing to will be based on the repo: https://github.com/RSE-Sheffield/python-calculator 41 | 42 | This is slightly different than the previous repository we worked with in that it has been set up as a template. As such we don't fork the repository. Instead we make a copy of the template. 43 | 44 | The **project owner of each team will make a copy of the template** and the rest of the team will **contribute to their own team copy of the repository**. 45 | 46 | To make a copy, first click on the {{% button href="https://github.com/RSE-Sheffield/python-calculator/generate" %}}**Use this template** {{% /button %}} button 47 | 48 | {{< figure src="/images/ag-use-tmpl.png" >}} 49 | 50 | For consistency, use the same name **`python-calculator`** for your own team projects. Add `Basic calculator functions in python` as the repo description. 51 | 52 | {{< figure src="/images/ag-create-tmpl.png" >}} 53 | 54 | 55 | Create your copy and the details of your team repository to the collaborative notepad so your team mates can access it. 56 | 57 | ## Protect the `main` branch 58 | 59 | {{% notice info %}} 60 | 61 | You can create a branch protection rule to enforce certain workflows for one or more branches, such as requiring an approving review or passing status checks for all pull requests merged into the protected branch. 62 | People with admin permissions to a repository can manage branch protection rules. 63 | 64 | {{% /notice %}} 65 | 66 | Click on ** Settings** on the top-right of the repo. 67 | 68 | On the left-hand navigation bar, go to **Branches** 69 | 70 | 71 | Next, under **Branch protection rules** click on the {{% button href="" %}}**Add rule** {{% /button %}} button 72 | 73 | {{< figure src="/images/ag-br-protect-rule.png" >}} 74 | 75 | In the **Branch name pattern field**, enter **`main`**. This will apply the rule to any branch whose name matches the pattern `main`. 76 | 77 | Next we'll apply a branch protection rule. Under **Protect matching branches**, check the **Require pull request reviews before merging** checkbox. Leave the **Required approving reviews** as **1**. 78 | 79 | {{< figure src="/images/ag-br-protect-rule-add.png" >}} 80 | 81 | This rule means that all contributions to the main branch will have to be made from a separate branch through a pull request and will also require at least one approving review from a team member before it is merged. This means that at least one other person will have a look at any code contributed to the main branch, adding the opportunity to catch any errors before they are merged. 82 | 83 | {{% notice info %}} 84 | 85 | Find out more about [Branch protection rules](https://docs.github.com/en/github/administering-a-repository/managing-a-branch-protection-rule) 86 | 87 | {{% /notice %}} 88 | ## Add your team mates as collaborators 89 | 90 | Next, each team owner will add the rest of the team members as collaborators. 91 | 92 | {{% notice info %}} 93 | 94 | For each repository that you administer on GitHub, you can see an overview of every team or person with access to the repository. From the overview, you can also invite new teams or people, change each team or person's permissions, or remove access to the repository. 95 | 96 | {{% /notice %}} 97 | 98 | Still under ** Settings** , on the left-hand navigation bar, go to **Manage access** 99 | 100 | Click on the {{% button href="" %}}**Invite a collaborator** {{% /button %}} button. 101 | 102 | {{< figure src="/images/ag-collaborator-new.png" >}} 103 | 104 | Next, search for your team mates' github username and once you've found your team member, select their acccount to add. 105 | 106 | {{< figure src="/images/ag-collaborator-new-search.png" >}} 107 | 108 | 109 | 110 | Once selected, click on the {{% button href="" %}}**Add _team-member-username_ to this repository** {{% /button %}} button. 111 | 112 | {{< figure src="/images/ag-collaborator-new-add.png" >}} 113 | 114 | The team member you added will now be visible on the **Manage access** panel and will show a **Pending invite** status until they accept the invitation. 115 | 116 | 117 | 118 | {{< figure src="/images/ag-collaborator-new-pending.png" >}} 119 | 120 | #### Repeat the process untill all team members are added. 121 | 122 | {{% notice info %}} 123 | 124 | Find out more about [Managing teams and people with access to your repository](https://docs.github.com/en/github/administering-a-repository/managing-teams-and-people-with-access-to-your-repository) 125 | 126 | {{% /notice %}} 127 | 128 | ## Accept the invitation to the repository 129 | 130 | Before we move on, **make sure the rest of your team has accepted the invitation to the repository**. 131 | 132 | {{< figure src="/images/ag-collaborators-all.png" >}} 133 | 134 | {{% notice tip %}} 135 | 136 | You can accept the invitation by visiting **https://github.com/[UserName]/python-calculator/invitations**, substituting `[UserName]` with your team repository owner's username. 137 | 138 | {{% /notice %}} 139 | -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/02-team-repo-configure.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Make first owner contribution" 3 | date = 2021-05-13T17:58:07+03:00 4 | weight = 2 5 | +++ 6 | 7 | To demonstrate contributions through branches we'll first start with a small contribution to the python package metadata by the owner. 8 | 9 | But first, to complete any work on the repo locally, we first need to download the repo to our computers. So let's go ahead and all do that. 10 | 11 | ## Make a local copy of the repository 12 | 13 | Open GitKraken Client and on the left-hand navigation bar, click on {{% button href="" %}} Clone a repo {{% /button %}} 14 | 15 | {{< figure src="/images/ag-gk-clone.png" >}} 16 | 17 | Next, choose **GitHub.com** as the source of the repository. This allows GitKraken Client to search through any repositories you have access to. 18 | 19 | On the next panel, first choose your destination directory (I've chosen my `~/Desktop/`). 20 | 21 | Then, in the **Repository to clone** box, start typing `python-calculator` until the repo associated with your account appears. Select it and click {{% button href="" %}} Clone the repo! {{% /button %}} 22 | 23 | {{< figure src="/images/ag-gk-clone-pc.png" >}} 24 | 25 | {{% notice note %}} 26 | 27 | To clone any repository you don't have direct access to, use the **Clone with URL** option. You can download any public repository on GitHub like this but if you are not a collaborator, you will not be able to push. To contribute to such a repository you are best making a fork and then a pull request from your own fork to the upstream repo.. 28 | 29 | {{% /notice %}} 30 | 31 | If all went well, at the top of the application you should see a banner reading _Successfully cloned repo 'python-calculator'_. 32 | 33 | Click on the {{% button href="" %}}**Open Now** {{% /button %}} button. 34 | 35 | You should now see the git status of your ** local** and ** origin** repositories and all the files associated with the project. Everything should be up to date. 36 | 37 | 38 | {{< figure src="/images/ag-gk-open.png" >}} 39 | 40 | 41 | ## Create a new branch 42 | 43 | Let us first get the owner of each repo to make a contribution via a branch and pull request and get another member of the team to review it. 44 | 45 | To create a new branch from the `main` branch, first make sure that, in the left-hand navigation panel, the ** main** branch in the ** local** repo is checked. 46 | 47 | When you're ready, click on the {{% button href="" %}} **Branch**
****{{% /button %}} button on the top panel. 48 | 49 | In the new branch text box that appears, enter a name for the new branch, e.g. `edit-metadata`. Press **Return** or **Enter** to create the new branch. 50 | 51 | {{< figure src="/images/ag-gk-branch-new.png" >}} 52 | 53 | If you hover over the branch indicator, you'll now see there are two branches, all in the same git state 👍 54 | 55 | {{< figure src="/images/ag-gk-branch-metadata.png" >}} 56 | 57 | ## Edit `setup.cfg` 58 | 59 | The `setup.cfg` file in a python package stores metadata about the project. Each owner will now edit that file to add their **author details** as well as complete the **details of the team repository**. 60 | 61 | We can edit the file in GitKraken Client by first navigating to the file in the bottom-right file panel. Once you've double-checked you're in the correct branch, click on {{% button href="" %}} ** Edit this file**{{% /button %}}. 62 | 63 | {{< figure src="/images/ag-gk-cfg-edit-init.png" >}} 64 | 65 | Next, edit the: 66 | 67 | - **author** field with your name. 68 | - **author_email** field with your email. 69 | - Complete the **url** with your github account details. 70 | - Complete the **Bug Tracker** field under **project_urls** again with your github account details. 71 | 72 | Press **| Ctrl + S** to save your changes. 73 | 74 | {{< figure src="/images/ag-gk-cfg-edit-details.png" >}} 75 | ## Commit changes to `setup.cfg` 76 | 77 | The right hand side panel now indicates that you have a single unstaged file (`setup.cfg`) with uncommitted changes. 78 | 79 | Click on the {{% button href="" %}} **Stage file**{{% /button %}} or {{% button href="" %}} **Stage all changes**{{% /button %}} button. 80 | 81 | {{< figure src="/images/ag-gk-cfg-stage.png" >}} 82 | 83 | This stages `setup.cfg` and opens up the commit panel. Add a commit message to your commit, e.g. ***Add author and github repo details***. 84 | 85 | Click {{% button href="" %}} **Commit changes to 1 file**{{% /button %}} 86 | 87 | {{< figure src="/images/ag-gk-cfg-commit.png" >}} 88 | 89 | Your commit has now been made to the `edit-metadata` branch and you can see it is ahead of the both the ** local** and ** origin** `main` branch. 90 | 91 | {{< figure src="/images/ag-gk-cfg-commit-cmpl.png" >}} 92 | 93 | ## Push changes to GitHub 94 | 95 | Click on {{% button href="" %}} **Push**
****{{% /button %}} to push to GitHub. 96 | 97 | This will create a new branch in the ** origin** repository. By default it will name it the same as the ** local** branch (`edit-metadata`), so just click on {{% button href="" %}} **Submit**{{% /button %}} to continue. 98 | 99 | {{< figure src="/images/ag-gk-cfg-push-init.png" >}} 100 | 101 | Once the push is complete, you will notice that there is now an ** origin** commit indicator associated with the branch, indicating that the ** local** and ** origin** branch are in synch while both origin and local `main` branches are 1 commit behind `edit-metadata`. 102 | 103 | {{< figure src="/images/ag-gk-cfg-push-cmpl.png" >}} 104 | 105 | ## Make pull request 106 | 107 | We can make a pull request from within GitKraken Client! 108 | 109 | To do so, on the left-hand navigation panel, hover over **PULL REQUESTS** and click on the {{% button href="" %}} ** Create pull request**{{% /button %}} button when it appears. 110 | 111 | {{< figure src="/images/ag-gk-cfg-pr-init.png" >}} 112 | 113 | Next configure the **details of the pull request** including the **source and target repository** (in this case your copy of the repository) and the **source and target branches**, in this case you want to merge the `edit-metadata` branch into the `main` branch. 114 | 115 | {{< figure src="/images/ag-gk-cfg-pr-details-br.png" >}} 116 | 117 | We also need our pull request reviewed before it can be merged. A nice feature of pull requests is than you can **request a review** from a team mate. Let's do this. 118 | 119 | If you scroll down to **Reviewers** you will be able to **select a reviewer from your team mates**. Go ahead and select someone. 120 | 121 | Finally, at the very bottom, click on {{% button href="" %}} **Create Pull Request**{{% /button %}} to submit it. 122 | 123 | {{< figure src="/images/ag-gk-cfg-pr-details-rev.png" >}} 124 | 125 | You should now see **1** indicated next to **PULL REQUESTS**. If you click on it to expand you can see your pull request listed and if you hover over it, you can see 126 | more details. 127 | 128 | {{< figure src="/images/ag-gk-cfg-pr-cmpl-details.png" >}} 129 | 130 | Clicking on the three ** vertical dots** next to the PR opens up a menu that allows you to **View the pull request on GitHub.com** 131 | 132 | {{< figure src="/images/ag-gk-cfg-pr-gh-view-init.png" >}} 133 | 134 | Clicking on that, navigates you to the PR page on GitHub. You can see that the Continuous integration tests have passed (indicated by **All Checks have passed**). However merging is blocked until an approving review is submitted (indicated by **Review Required** and **Merging is blocked**). 135 | 136 | {{< figure src="/images/ag-gk-cfg-pr-gh-view.png" >}} 137 | 138 | ## Review Pull Request 139 | 140 | Next, the **team member the owner requested a review from should perform the review**. Other team member's could also do this but to keep things simple let's just let the assigned reviewer do this. 141 | 142 | In the pull request **Files changed** tab, the reviewer has the opportunity to **inspect the changes made in the pull request**. 143 | 144 | {{< figure src="/images/ag-cfg-pr-inspect.png" >}} 145 | 146 | They can also initiate a review by clicking {{% button href="" %}} **Review changes** {{% /button %}} in which they can: 147 | - add a comment 148 | - approve the review 149 | - explicitly request changes 150 | 151 | 152 | {{< figure src="/images/ag-cfg-pr-rev-gen-init.png" >}} 153 | 154 | Alternatively, the can initiate a review by inserting a comment next to a specific line of code. 155 | 156 | {{< figure src="/images/ag-cfg-pr-rev-code-init.png" >}} 157 | 158 | 159 | ## Merge Pull Request 160 | 161 | Once **an approving review has been submitted** (and as long as all checks are passing), the **PR is free to be merged!** 162 | 163 | {{< figure src="/images/ag-cfg-pr-review-cmpl.png" >}} 164 | 165 | 166 | {{< figure src="/images/ag-cfg-pr-merge-init.png" >}} 167 | 168 | Follow through until the PR has been merged! 169 | 170 | To **keep the repo tidy**, as the `edit-metadata` branch is now redundant (i.e. I don't expect any further contributions in this branch regarding the particular feature it was created for), I'm going to go ahead and click **Delete branch**. 171 | 172 | {{< figure src="/images/ag-cfg-pr-merge-cmpl.png" >}} 173 | 174 | This removes the origin `branch`. Later we'll also delete local branch also. 175 | 176 | {{< figure src="/images/ag-cfg-pr-merge-clean.png" >}} 177 | -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/04-review-1st-pull-requests.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Review 1st Pull Request: asking for corrections" 3 | date = 2021-05-13T17:59:21+03:00 4 | weight = 4 5 | +++ 6 | 7 | As the owner, it's time to **review the Pull Requests** the rest of your team mates have opened. 8 | 9 | We've actually **snuck some errors into the instructions** we provided in your team mates issues. The PR review stage provides opportunity for any problems to be identified and dealt with before merging. 10 | 11 | Let's use the first pull request made to the repo as an example. In this case, it was made by team mate **bobturneruk**, tackling [**issue #2** _Add subtraction function_](https://github.com/annakrystalli/python-calculator-demo/issues/2) via [**pull request #5**](https://github.com/annakrystalli/python-calculator-demo/pull/5). 12 | 13 | ## Review 1st Subtract Pull Request 14 | 15 | As I mentioned, there is at least one error in the Pull Request as a result of erroneous instructions in the issue. 16 | 17 | Problems are also indicated by the failing tests which we can inspect. 18 | 19 | {{< figure src="/images/ag-pr-sub-test-fail.png" >}} 20 | 21 | {{< figure src="/images/ag-pr-sub-test-fail-detail.png" >}} 22 | 23 | ### Identify the errors 24 | 25 | The failing tests, and in particular, the linting check by **flake8** points to a **missing colon in the `subtract` function definition**. 26 | 27 | **You may also have additional errors if the instructions in the issue were followed incorrectly by your team mates.** No problem though! The review stage will help us inspect and guide our team mates to correct any additional errors. 28 | 29 | To **check that everything has been completed correctly**, refer to the [**Appendix**](/04-collaborative_github_advanced/06-appendix) in this chapter, which has the correct files and file content that should have been committed for each issue. 30 | ### Review pull request and request changes 31 | 32 | 33 | Start the review by first inspecting the changes to the files made in the pull request by clicking on the **Files changed** tab of the PR. 34 | 35 | This tab shows all added and deleted lines of code in each file commited in the PR. It also allows us to **post review comments to an individual line of code**, by clicking on the at the left hand side margin of the line of code. 36 | 37 | {{< figure src="/images/ag-pr-sub-review-codeline.png" >}} 38 | 39 | This opens a box to add your review comment. Once you've added your first comment, click on {{% button href="" %}} **Start a review**{{% /button %}} to add your comment and initiate a review. 40 | 41 | In the case of the `subtract` PR, I **identified the line of code containing the error** (line #1 in `pythoncalculator/subtract.py`) and **added a comment identifying the error** for my team mate to correct. 42 | 43 | GitHub has automatically flagged a couple more issues (2 files that don't end in a newline, indicated by the ) so I've also asked my team mate to correct those. 44 | 45 | {{< figure src="/images/ag-pr-sub-review-detail.png" >}} 46 | 47 | To submit my review, I click on {{% button href="" %}} **Finish your review**{{% /button %}} in the top-right corner and select the **Changes requested** option. 48 | 49 | This posts my comments into the PR discussion tab where the author of the PR can respond to them. The fact that I've requested changes is also flagged. 50 | 51 | {{< figure src="/images/ag-pr-sub-review-submitted.png" >}} 52 | 53 | ## Correct errors and respond to request for changes 54 | 55 | Now my team can go **back to GitKraken Client** and **make the corrections** to any errors I've flagged 56 | 57 | {{% notice info %}} 58 | 59 | Documentation on [Editing files in GitKraken Client](https://support.gitkraken.com/working-with-files/editing-files/) 60 | 61 | {{% /notice %}} 62 | 63 | Once complete, they can then **commit the corrections** in their issue branch and **push again to GitHub**. The new commits will be added to the PR. 64 | 65 | Next, my team mate moved back to the PR in GitHub and responded to each error individually to let me know it had been corrected. 66 | 67 | {{< figure src="/images/ag-pr-sub-review-response.png" >}} 68 | 69 | ## Complete final approving review. 70 | 71 | ### Check and resolve error conversations 72 | 73 | At this point, I went back and **checked the changes to the files myself**. I also ensured that **all checks were passing**. 74 | 75 | {{< figure src="/images/ag-pr-sub-review-response-checks.png" >}} 76 | 77 | 78 | 79 | {{% notice warning %}} 80 | 81 | If you still spot problems when you're reviewing the changes, repeat the process we've just been through. 82 | 83 | If all checks aren't passing, have a look at the logs of the checks and/or re-inspect the changes to the files to spot any problems. Then repeat the process we've just been through. 84 | 85 | {{% /notice %}} 86 | 87 | 88 | Once I was happy each one had been corrected, I responded also and **resolved each point individually**. 89 | 90 | {{< figure src="/images/ag-pr-sub-review-response-resolve.png" >}} 91 | 92 | 93 | 94 | We can also see the conversations have an *Outdated* tag associated with them. This indicates that new commits have been made since the discussion was initiated. 95 | 96 | ### Initiate final approving review 97 | 98 | Next I'll **submit a final review**, this time selecting the **Approve** option. 99 | 100 | {{< figure src="/images/ag-pr-sub-review-approve.png" >}} 101 | 102 | ### Merge Pull Request 103 | 104 | Once the **approving review is submitted** and given **all the checks pass**, the pull request is now **ready to merge into the `main` branch! 🎉** 105 | 106 | To initiate the merge, I click on {{% button href="" %}} **Merge pull request**{{% /button %}} 107 | 108 | {{< figure src="/images/ag-pr-sub-review-merge-init.png" >}} 109 | 110 | Next, I click on {{% button href="" %}} **Confirm merge**{{% /button %}} 111 | 112 | {{< figure src="/images/ag-pr-sub-review-merge-confirm.png" >}} 113 | 114 | The `subtract` branch has now successfully been merged into `main`! 🥳 115 | 116 | I've also gone ahead and **deleted the origin `subtract` branch** to **keep the repo tidy** as the branch is now redundant (i.e. I don't expect any further contributions in this branch regarding the particular feature it was created for). 117 | 118 | {{< figure src="/images/ag-pr-sub-review-merge-cmpl.png" >}} 119 | 120 | Review of the first pull request is now complete! 121 | -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/05-review-2nd-pull-request.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Review 2nd Pull Request: handling merge conflicts" 3 | date = 2021-05-21T16:16:40+03:00 4 | weight = 5 5 | +++ 6 | 7 | 8 | ## Review 2nd Pull Request 9 | 10 | 11 | Next I'll move onto merging the second pull request. Just like the previous one, I **first inspect the checks and code contributed** and **request modifications** to any errors I've noted **until all checks are passing**. 12 | 13 | ### Example: Merge in the `divide` Pull Request. 14 | 15 | In this example, I'm merging my team mate **robadob**'s contribution who worked on **adding a division function** ([**issue #4** _Add subtraction function_](https://github.com/annakrystalli/python-calculator-demo/issues/4) via [**pull request #7**](https://github.com/annakrystalli/python-calculator-demo/pull/7). 16 | 17 | Rob actually spotted and corrected the sneaky error in the instructions so the PR passed all checks straight away. However, I'm now left with **another blocker to merging the pull request, a merge conflict!** 18 | 19 | > Merge conflicts happen when you **merge branches that have competing commits**, and **Git needs your help to decide which changes to incorporate in the final merge**. 20 | 21 | In the case of our second PR, the **conflict arises from the fact that line 2 of the `pythoncalculator/__init__.py` file has been edited**. However, **the first PR**, which has now been merged into `main`, **also committed an edit to that exact line** which **Rob's branch doesn't know about** (the merge of the first PR happened after Rob made his branch off the `main`). This has resulted in a merge conflict that git doesn't know how to deal with and needs our help! 22 | 23 | {{% notice info %}} 24 | Find out more about [Addressing merge conflicts 25 | ](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/addressing-merge-conflicts) and [Resolving a merge conflict on GitHub 26 | ](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github). 27 | 28 | {{% /notice %}} 29 | 30 | #### Resolve conflict 31 | 32 | **Because the conflict is a simple one, we are able to resolve it on GitHub**. For more complex conflicts you may need to pull the branch down and resolve locally. 33 | 34 | Click on {{% button href="" %}} **Resolve conflicts**{{% /button %}} to initiate the process. 35 | 36 | {{< figure src="/images/ag-pr-2-review-merge-confilct.png" >}} 37 | 38 | This **opens a text editor panel** showing you **any files that have conflicts** (in our case `pythoncalculator/__init__.py`) and highlights the **lines of conflicting code** as well as **their origin**. 39 | 40 | 41 | 42 | {{< figure src="/images/ag-pr-2-review-merge-confilct-resolve-init.png" >}} 43 | 44 | In this text editor, we can **edit the file to tell git what we want to do with the conflicting code**. We want to **keep both `import` statements** so in this case, all we need to do is **delete the lines containing source indicator notation**. 45 | 46 | Our **resolved file should similar to the one below** when we're done (they may vary depending on which issues were contributed in each of the first two pull requests). 47 | 48 | {{< figure src="/images/ag-pr-2-review-merge-confilct-resolve-cmpl.png" >}} 49 | 50 | #### Commit resolved conflict 51 | 52 | When we're happy with our file we click on {{% button href="" %}} **Mark as resolved**{{% /button %}} 53 | 54 | {{< figure src="/images/ag-pr-2-review-merge-confilct-resolve-commit.png" >}} 55 | 56 | Finally, to **commit our changes to the 2nd PR branch** (in this case the `divide` branch), we the click {{% button href="" %}} **Commit merge**{{% /button %}} and follow through to completion. 57 | 58 | As noted, **the merge commit will be associated with the person who resolved the conflict** (in this case the project owner). 59 | 60 | #### Review and merge Pull Request 61 | 62 | Now all that's left is to **submit an approving review** and **merge**. 63 | 64 | First we **submit the approving pull request review** which is now added PR conversation next to . 65 | 66 | Note a couple more things: 67 | 68 | - Note the special keyword used in Rob's PR description. 69 | - Note that the owner's commit resolving the merge conflict is also now present in the conversation. 🎉 70 | 71 | {{< figure src="/images/ag-pr-2-review-merge-pre.png" >}} 72 | 73 | **Once the approving review has been submitted and all checks are passing, the PR is ready to be merged!** 74 | 75 | Click {{% button href="" %}} **Merge pull request**{{% /button %}} and follow through to completion. Go ahead and also **delete the PR branch** (in this case `divide`) to keep the repo tidy. 76 | 77 | 78 | {{< figure src="/images/ag-pr-2-review-merge.png" >}} 79 | 80 | #### Close issue 81 | 82 | Note that the **special keyword `Closes`** in combination with the issue number (**`#4`**) **automatically closed issue number 4**. 83 | 84 | If that wasn't the case for your PR, **go ahead and close the issue manually.** 85 | 86 | {{< figure src="/images/ag-pr-2-review-merge-issue-closed.png" >}} 87 | 88 | 89 | #### Review remaining Pull Requests 90 | 91 | Go ahead and follow the same processes (reviewing and asking for corrections where required and resolving merge conflicts) for any remaining pull requests. -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/06-appendix.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Appendix" 3 | date = 2021-05-19T12:11:18+03:00 4 | weight = 6 5 | +++ 6 | 7 | ## Correct Pull Requests 8 | 9 | *** 10 | 11 | ### subtract 12 | 13 | There should be **changes to 3 files**, 2 of which should be new files in the correct location. 14 | 15 | #### `pythoncalculator/subtract.py` 16 | 17 | There should be a **new `pythoncalculator/subtract.py`** containing: 18 | 19 | ```python 20 | def subtract(x, y): 21 | return x - y 22 | ``` 23 | #### `pythoncalculator/__init__.py` 24 | 25 | The `pythoncalculator/__init__.py` file should contain the following line: 26 | 27 | ```python 28 | from .subtract import subtract 29 | ``` 30 | 31 | #### `tests/test_subtract.py` 32 | 33 | There should be a **new `tests/test_subtract.py`** containing: 34 | 35 | ```python 36 | from pythoncalculator import subtract 37 | 38 | 39 | def test_subtract(): 40 | assert subtract(1, 3) == -2 41 | ``` 42 | 43 | *** 44 | 45 | ### divide 46 | 47 | There should be **changes to 3 files**, 2 of which should be new files in the correct location. 48 | 49 | #### `pythoncalculator/divide.py` 50 | 51 | There should be a **new `pythoncalculator/divide.py`** containing: 52 | 53 | ```python 54 | def divide(x, y): 55 | return x / y 56 | ``` 57 | #### `pythoncalculator/__init__.py` 58 | 59 | The `pythoncalculator/__init__.py` file should contain the following line: 60 | 61 | ```python 62 | from .divide import divide 63 | ``` 64 | 65 | #### `tests/test_divide.py` 66 | 67 | There should be a **new `tests/test_divide.py`** containing: 68 | 69 | ```python 70 | from pythoncalculator import divide 71 | 72 | 73 | def test_divide(): 74 | assert divide(10, 2) == 5 75 | ``` 76 | 77 | *** 78 | 79 | ### multiply 80 | 81 | There should be **changes to 3 files**, 2 of which should be new files in the correct location. 82 | 83 | #### `pythoncalculator/multiply.py` 84 | 85 | There should be a **new `pythoncalculator/multiply.py`** containing: 86 | 87 | ```python 88 | def multiply(x, y): 89 | return x * y 90 | ``` 91 | #### `pythoncalculator/__init__.py` 92 | 93 | The `pythoncalculator/__init__.py` file should contain the following line: 94 | 95 | ```python 96 | from .multiply import multiply 97 | ``` 98 | 99 | #### `tests/test_multiply.py` 100 | 101 | There should be a **new `tests/test_multiply.py`** containing: 102 | 103 | ```python 104 | from pythoncalculator import multiply 105 | 106 | 107 | def test_multiply(): 108 | assert multiply(10, 3) == 30 109 | ``` -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/06-sync-local-repo.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Synch local repository" 3 | date = 2021-05-22T13:27:33+03:00 4 | weight = 6 5 | +++ 6 | 7 | 8 | 9 | Now, let's take a minute and go back to GitKraken Client to inspect what the repo looks like from the ground. 10 | 11 | Right at the top of the commit graph you should see **origin `main` ahead of all other branches** and now containing **all the commits made by the entire team**. 12 | 13 | You should **see the local branch you used to make your contributions** in below, and likely still checked out (indicated by the on the branch label). 14 | 15 | Finally, right at the bottom, you should **see your local `main` branch which is behind all other branches**. 16 | 17 | So let's go ahead and **synch our local `main` with the origin `main`**. 18 | 19 | 20 | {{< figure src="/images/ag-synch-local-view.png" >}} 21 | 22 | ## Checkout `main` branch 23 | 24 | First we need to **checkout the local `main` branch**. You can either double click on the branch label or check it out on the left panel by next to **main**. 25 | 26 | {{< figure src="/images/ag-synch-local-checkout-main.png" >}} 27 | 28 | ## Pull remote changes 29 | 30 | Then, click on {{% button href="" %}} **Pull**
{{% /button %}} to pull the remote changes. 31 | 32 | This should **synch our local `main` with the origin `main`**. 33 | 34 | Finally, to also keep your local repo tidy and clean of any stale branches, let's also delete the local branch we worked in to contribute to the `main` branch. In my case that's the `edit-metadata` branch. 35 | 36 | To delete it, **right click on the branch label** and then select **Delete _branch-name_**. You can also delete it through the **left panel by clicking on** **** next to the branch name and then again, **selecting to delete**. 37 | 38 | {{< figure src="/images/ag-synch-local-pull.png" >}} 39 | 40 | 41 | **You should now have a nice and clean git graph with the local and origin `main` branches synched and up to date!** 🥳 🎉 ✨ 42 | 43 | 44 | {{< figure src="/images/ag-synch-local-clean.png" >}} 45 | 46 | -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/_index.en.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Advanced Collaboration through Github" 3 | date = 2021-05-13T17:25:55+03:00 4 | weight = 5 5 | chapter = true 6 | pre = "04. " 7 | +++ 8 | 9 | 10 | # Advanced Collaboration through Github 11 | 12 | In this chapter we will learn how to set up a GitHub repo for team collaboration, add collaborators, use issues to administer tasks, contribute code through branches, review contributions and handle merge conflicts. 13 | -------------------------------------------------------------------------------- /content/04-collaborative_github_advanced/optional-recap.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "(Optional) Recap" 3 | date = 2022-10-31T11:31:00+01:00 4 | weight = 1 5 | +++ 6 | 7 | {{% include "/01-getting-started-with-git-and-github/00-typical-workflow.en.md" %}} 8 | 9 | {{% include "/03-collaborative_github_basics/01-collaborating-intro.en.md" %}} -------------------------------------------------------------------------------- /content/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Git & Github through GitKraken Client - From Zero to Hero! " 3 | --- 4 | 5 | # Git & Github through GitKraken Client - From Zero to Hero! 6 | 7 | In this course you'll be learning version control and collaboration through Git, GitHub & GitKraken Client 8 | 9 | * Version controlling your own project through Git & GitHub. 10 | * Basic collaboration through forks on GitHub. 11 | * Advanced team collaboration through branches on GitHub. 12 | * Using GitKraken Client for a smooth version control experience. 13 | -------------------------------------------------------------------------------- /content/credits.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: "2020-08-05T14:40:58+01:00" 3 | title: Credits 4 | weight: 5 5 | --- 6 | 7 | ## Content 8 | 9 | ### Setup instructions 10 | 11 | Setup instructions were adapted from the [Software Carpentry Workshop Template](https://carpentries.github.io/workshop-template/), made available under the [Creative Commons Attribution (CC BY 4.0) license](https://creativecommons.org/licenses/by/4.0/) Copyright © [Software Carpentry](https://software-carpentry.org/). 12 | 13 | ### Content 14 | 15 | ### Practical exercises 16 | 17 | The practical exercises in [Getting Started with Git and GitHub](01-getting-started-with-git-and-github/) and [Websites with GitHub pages](02-websites-with-github-pages/) were adapted from the [**Open source for researchers - open source**](https://github.com/open-source-for-researchers/open-source-workshop) by **Yo Yehudi**, made available under an [MIT](https://github.com/open-source-for-researchers/open-source-workshop/blob/master/LICENSE) license. Copyright (c) 2018 open-source-for-researchers. The adapted versions of this content were developed in collaboration with [Augustinos Vouros](https://avouros.github.io/). 18 | 19 | The rest of the materials were developed by [Anna Krystalli](https://github.com/annakrystalli), with support from [Bob Turner](https://github.com/bobturneruk), [David Wilby](https://github.com/davidwilby), [Robert Chisholm](https://github.com/Robadob), [Matthew Leach](https://github.com/MILeach), [Will Furnass](https://github.com/willfurnass). 20 | ### Website Theme 21 | 22 | The workshop materials website is based on the [hugo-theme-learn](https://github.com/matcornic/hugo-theme-learn) and further configurations were inspired by Maëlle Salmon's course site on [**Scientific blogging with R Markdown**](https://github.com/maelle/rmd-blogging-course) 23 | 24 | 25 |
icon made by Freepik from www.flaticon.com
-------------------------------------------------------------------------------- /content/faq-glossary-links/02-glossary.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Glossary 3 | weight: 1 4 | --- 5 | 6 | ## A 7 | 8 | ## B 9 | 10 | ### `branch` 11 | 12 | A line of development that stems from another branch, typically `main`/`master` or sometimes `dev`. 13 | 14 | ## C 15 | 16 | ### `checkout` 17 | 18 | Switching between working branches. 19 | 20 | ### `cherry-picking` 21 | 22 | Choosing a subset of changes from other commits, typically on different branches. 23 | 24 | ### `clone` 25 | 26 | Make a copy of a repository from a remote to your local computer. 27 | 28 | ### `commit` 29 | 30 | A single point in the Git history or the act of creating such a point in the history. 31 | 32 | ## D 33 | 34 | ## E 35 | 36 | ## F 37 | 38 | ### `fast-forward` 39 | 40 | ### `fetch` 41 | 42 | Get the [`head`](#head) reference from a remote repository of a branch. It does not [`pull`](#pull) the changes. 43 | 44 | 45 | ### `fork` 46 | 47 | Make a copy of someone else's repository to your GitHub account. 48 | 49 | ## G 50 | 51 | ### Git 52 | 53 | [Git](git-scm.com/) is the version control system used in this course. 54 | 55 | ### GitHub 56 | 57 | [GitHub](https://github.com) is an on-line repository for hosting and sharing code for collaborative and often open-source work. 58 | 59 | ### GitLab 60 | 61 | [GitLab](https://gitlab.com) is an on-line repository for hosting and sharing code for collaborative and often open-source work. 62 | 63 | ### GitKraken 64 | 65 | [GitKraken](https://www.gitkraken.com) is an intuitive GUI (Graphical User Interface) and powerful Git CLI (Command Line 66 | Interface). 67 | 68 | ## H 69 | 70 | ### `hash` 71 | 72 | A "hash" is a unique ID generated and associated with each [`commit`](#commit) that allows it to be uniquely identified within a 73 | repository. 74 | 75 | 76 | ## I 77 | 78 | ## J 79 | 80 | ## K 81 | 82 | ## L 83 | 84 | ### `local` 85 | 86 | A copy of a repository on your computer. 87 | 88 | ## M 89 | 90 | ### `main` / `master` 91 | 92 | The name given to the original code branch from which branches are made. 93 | 94 | ### `merge` 95 | 96 | Incorporate the contents of another branch into the current branch, typically this creates a new commit showing the 97 | changes that have occurred unless this is a [`fast-forward`](#fast-forward). 98 | 99 | ## N 100 | 101 | ## O 102 | 103 | ### `origin` 104 | 105 | The default upstream repository where files and code are stored for collaborative work. Typically this is hosted on 106 | GitHub/GitLab. 107 | 108 | ## P 109 | 110 | ### `pull` 111 | 112 | Synchronising changes from [`branch`](#branch) on the remote [`origin`](#origin) with the [`local`](#local) copy, it 113 | will [`fetch`](#fetch) _and_ [`merge`](#merge). 114 | 115 | ### `push` 116 | 117 | Synchronising changes made to the [`branch`](#branch) on the [`local`](#local) computer with those on the remote 118 | [`origin`](#origin). 119 | 120 | 121 | ### PyCharm 122 | 123 | [PyCharm](https://www.jetbrains.com/pycharm/) is a popular Python IDE which includes Git and GitHub integration. 124 | 125 | 126 | ## Q 127 | 128 | ## R 129 | 130 | ### `rebase` 131 | 132 | Applies a changes from one [`branch`](#branch) to the current. 133 | 134 | ### repository 135 | 136 | ### RStudio 137 | 138 | [RStudio](https://www.rstudio.com/) is a popular R IDE which includes Git and GitHub integration. 139 | 140 | ## S 141 | 142 | ### `stage` / `staging` 143 | 144 | Choose which files to include in a [`commit`](#commit). 145 | 146 | ## T 147 | 148 | ## U 149 | 150 | ### upstream 151 | 152 | The default [`branch`](#branch) that commits are merged into during a pull request. 153 | 154 | ## V 155 | 156 | ### VSCode 157 | 158 | [VSCode](https://code.visualstudio.com/) is a popular IDE with support for many languages and which includes Git and 159 | GitHub integration. 160 | 161 | ## W 162 | 163 | ## X 164 | 165 | ## Y 166 | 167 | ### yaml 168 | 169 | [yaml](https://yaml.org/) (Yaml Ain't Markup Language) is a superset of [JSON](https://www.json.org/json-en.html) and is 170 | used for configuration files such as those that control GitHub Actions. 171 | 172 | ## Z 173 | -------------------------------------------------------------------------------- /content/faq-glossary-links/03-links.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Links 3 | weight: 1 4 | --- 5 | 6 | Links to further resources on Git, GitHub and GitKraken as well as other popular IDE's. 7 | 8 | ## Git 9 | 10 | * [Git - Book](https://git-scm.com/book/en/v2) 11 | * [Git - Reference](https://git-scm.com/docs) 12 | * [Oh Shit, Git!?!](https://ohshitgit.com/) / [Dangit, Git!?!](https://dangitgit.com/en) 13 | * [Git Tutorials and Training | Atlassian Git Tutorial](https://www.atlassian.com/git/tutorials) 14 | * [Introduction of Git For Beginners | W3Docs Git Online Tutorial](https://www.w3docs.com/learn-git/introduction4.html) 15 | * [GitHub for supporting, reusing, contributing, and failing 16 | safely](https://www.openscapes.org/blog/2022/05/27/github-illustrated-series/) 17 | * [pre-commit : Protecting your future self](https://rse.shef.ac.uk/blog/pre-commit/) - useful hooks for automating processes. 18 | * [Who's to Blame?](https://rse.shef.ac.uk/blog/git-blame/) - short article on Git Blame 19 | * [myrepos](https://myrepos.branchable.com/) - useful programme managing multiple repositories 20 | 21 | ## GitHub 22 | 23 | * [GitHub Documentation](https://docs.github.com/en) 24 | * [GitHub Actions](https://docs.github.com/en/actions) 25 | * [GitHub Pages](https://pages.github.com/) 26 | * [GitHub Actions for the R community](https://github.com/r-lib/actions) 27 | * [Refined GitHub](https://github.com/refined-github/refined-github) : Browser extension that simplifies the GitHub 28 | interface and adds useful features 29 | 30 | ## GitKraken 31 | 32 | * [GitKraken](https://gitkraken.com) 33 | * [GitKraken Support - GitKraken Client Documentation](https://support.gitkraken.com/) 34 | 35 | 36 | ## Other IDE's 37 | 38 | There are a host of different Integrated Development Environments (IDEs) available and most have support for Git included. 39 | 40 | ### Emacs 41 | 42 | * [Emacs](https://www.gnu.org/software/emacs/) 43 | * [Magit](https://magit.vc) 44 | 45 | ### PyCharm 46 | 47 | * [Git | PyCharm](https://www.jetbrains.com/help/pycharm/using-git-integration.html) 48 | * [GitHub | Pycharm](https://www.jetbrains.com/help/pycharm/github.html) 49 | 50 | ### RStudio 51 | 52 | * [RStudio](https://www.rstudio.com/products/rstudio/download/) 53 | * [Happy Git and GitHub for the useR](https://happygitwithr.com/index.html) 54 | 55 | ### VSCode 56 | 57 | * [Source Control with Git in Visual Studio Code](https://code.visualstudio.com/docs/sourcecontrol/overview) 58 | -------------------------------------------------------------------------------- /content/faq-glossary-links/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | chapter: true 3 | date: "2022-07-06T18:37:16+01:00" 4 | pre: 5 | title: FAQ, Glossary and Links 6 | weight: 6 7 | --- 8 | 9 | 10 | # FAQ, Glossary and Links 11 | -------------------------------------------------------------------------------- /content/platforms.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: "2022-10-31T09:47:00+01:00" 3 | title: Online Learning Platforms 4 | weight: 5 5 | --- 6 | 7 | This page is for keeping some useful resources in running this course online. 8 | 9 | ## Blackboard Collaborate 10 | 11 | ![](/images/bb_comms.png) 12 | *Screenshot of the user interface of Blackboard Collaborate* 13 | 14 | ### Etiquette 15 | * Please keep microphones muted when not speaking, but feel free to speak up any time. 16 | * Use the 'raise hand' feature if you need assistance or would like to ask a pressing question. 17 | * Please feel free to ask questions in the chat any time. 18 | * We ask participants to use the 'reactions' frequently to help us follow how everyone is getting on! -------------------------------------------------------------------------------- /content/setup/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Setup 3 | weight: 100 4 | chapter: true 5 | pre:   6 | menuTitle: Setup 7 | --- 8 | 9 | # Software Requirements 10 | 11 | This workshop assumes you have **GitKraken Client** installed on your computer and a personal **GitHub** account. 12 | 13 | 14 | [***GitHub** (i.e. github.com)](https://github.com/). To work on GitHub you will need a [supported](https://help.github.com/articles/supported-browsers/) web browser (current versions of Chrome, Firefox or Safari, or Internet Explorer version 9 or above). 15 | 16 | **GitKraken Client** is a powerful and elegant multiplatform graphical interface for Git developed as an alternative to working with Git from the command line. 17 | 18 | **Git** is a version control system that lets you track who made changes to what when and has options for easily 19 | updating a **shared or public version of your code on**. You do **not** have to explicitly install Git in order to 20 | participate in this course because **GitKraken** includes it. If however you wish to use Git outside of GitKraken there 21 | are instructions on how to do so. 22 | 23 |
24 | 25 | # Setup Instructions 26 | 27 | {{% notice note %}} 28 | 29 | Please complete the software installation and setup instructions that follow prior to joining the workshop 30 | 31 | {{% /notice %}} 32 | -------------------------------------------------------------------------------- /content/setup/github/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Github 3 | weight: 5 4 | --- 5 | 6 | 7 | You will also need an account at [github.com](https://github.com/). 8 | 9 | #### Getting a GitHub account 10 | 11 | Basic GitHub accounts are free. Please consider what personal information you'd like to reveal. For example, you may want to review these [instructions for keeping your email address private](https://help.github.com/articles/keeping-your-email-address-private/) provided at GitHub. 12 | 13 | {{% notice tip %}} 14 | 15 | I personally prefer to use a non-institutional email for registering accounts to platforms I want smooth access to regardless of affiliation. However, there are advantages associated with affiliation with an academic institution on GitHub, namely that you get a free [developer (PRO) account](https://github.com/pricing). The most **important benefit of that is that it gives you unlimited public AND private** repositories. You **can however add your academic email as a secondary email** which will allow you to benefit from this academic research discount. You can also just use your academic address from the start and just change it once you move on. [Find out more about claiming an academic discount](https://docs.github.com/en/github/teaching-and-learning-with-github-education/applying-for-an-educator-or-researcher-discount). 16 | 17 | {{% /notice %}} 18 | 19 | -------------------------------------------------------------------------------- /content/setup/gitkraken/_index.en.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gitkraken Client 3 | weight: 5 4 | --- 5 | 6 | ### Install GitKraken Client 7 | 8 | To install **GitKraken Client** download the correct binary for your system. 9 | 10 | 11 | ```{r, echo=FALSE} 12 | knitr::include_url("https://gitkraken.com/download") 13 | ``` 14 | 15 | 16 | Then follow the [installation instructions](https://support.gitkraken.com/how-to-install/) provided on their website. 17 | 18 | {{% notice note %}} 19 | _In the installation instructions you'll see that you do not actually need to install **Git** separately to use 20 | GitKraken Client as it ships it's own Git framework, NodeGit, which is primarily developed and maintained by members of 21 | the GitKraken development team._ 22 | 23 | 24 | {{% /notice %}} 25 | 26 | ### Integrating GitKraken Client with GitHub 27 | 28 | In order to effectively work with GitHub repositories through GitKraken Client, you will need to **enable the integration and authenticate with GitHub**. You can then use GitKraken Client to **define or generate an [SSH key](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)** that authenticates git operations on GitHub through GitKraken Client. Follow [the instructions on the GitKraken site](https://help.gitkraken.com/gitkraken-client/github-gitkraken-client/) to perform both steps. 29 | 30 | ```{r, echo=FALSE} 31 | knitr::include_url("https://help.gitkraken.com/gitkraken-client/github-gitkraken-client/") 32 | ``` 33 | 34 | 35 | ### Turn off GPG 36 | 37 | GPG adds another layer of trust to your commits by [allowing you to digitally signing them](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work). We'll not explore this topic further in this workshop so please **check your GPG settings under preferences and ensure the "Sign Commits by Default" and "Sign Tags by Default" options are unchecked**. 38 | 39 | ![](../../../images/gpg_off.png) 40 | 41 | If you want to set GPG signing up in GitKraken Client, have a look at the documentation on [Commit Signing with GPG](https://support.gitkraken.com/git-workflows-and-extensions/commit-signing-with-gpg/). 42 | -------------------------------------------------------------------------------- /content/setup/gitkraken/_index.en.html: -------------------------------------------------------------------------------- 1 | --- 2 | title: Gitkraken Client 3 | weight: 5 4 | --- 5 | 6 | 7 | 8 | 9 |
10 | 11 |

Install GitKraken Client

12 |

To install GitKraken Client download the correct 13 | binary for your system.

14 | 16 |

Then follow the installation 17 | instructions provided on their website.

18 |

{{% notice note %}} In the installation instructions you’ll see 19 | that you do not actually need to install Git separately 20 | to use GitKraken Client as it ships it’s own Git framework, NodeGit, 21 | which is primarily developed and maintained by members of the GitKraken 22 | development team.

23 |

{{% /notice %}}

24 |
25 |
26 |

Integrating GitKraken Client with GitHub

27 |

In order to effectively work with GitHub repositories through 28 | GitKraken Client, you will need to enable the integration and 29 | authenticate with GitHub. You can then use GitKraken Client to 30 | define or generate an SSH 31 | key that authenticates git operations on GitHub through 32 | GitKraken Client. Follow the 33 | instructions on the GitKraken site to perform both steps.

34 | 36 |
37 |
38 |

Turn off GPG

39 |

GPG adds another layer of trust to your commits by allowing 40 | you to digitally signing them. We’ll not explore this topic further 41 | in this workshop so please check your GPG settings under 42 | preferences and ensure the “Sign Commits by Default” and 43 | “Sign Tags by Default” options are unchecked.

44 |

45 |

If you want to set GPG signing up in GitKraken Client, have a look at 46 | the documentation on Commit 47 | Signing with GPG.

48 |
49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /content/setup/optional/_index.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Optional 3 | weight: 5 4 | --- 5 | 6 | ### Git 7 | 8 | If you wish to install Git and use it outside of GitKraken, for example at the command line, please refer to the 9 | [official installation instructions](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 10 | 11 | 12 | ### R 13 | 14 | During the collaborative exercise, we will collate materials from each participant which will feed into an R 15 | analysis. If you would like to run this analysis yourself locally, you will need to have 16 | **[R](https://www.r-project.org)** and **[Rstudio](https://www.rstudio.coim)** installed. This however is optional and 17 | not a requirement for you to complete the workshop. 18 | 19 | R can be downloaded [here](https://cran.r-project.org/mirrors.html). 20 | 21 | ### RStudio 22 | RStudio is an environment for developing R code. 23 | 24 | It can be downloaded [here](https://www.rstudio.com/products/rstudio/download/). 25 | You will need the Desktop version (> 1.0) for your computer. 26 | -------------------------------------------------------------------------------- /content/snippets.en.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Snippets 3 | weight: 1 4 | hidden: true 5 | chapter: false 6 | disableToc: false 7 | --- 8 | 9 | 10 | 11 | 12 | 13 | ## Setup chunk 14 | 15 | ````markdown 16 | ```{r setup, include=FALSE} 17 | knitr::opts_chunk$set( 18 | echo = TRUE, 19 | warning = TRUE, 20 | message = TRUE, 21 | comment = "" 22 | ) 23 | ``` 24 | ```` 25 | 26 | -------------------------------------------------------------------------------- /emails/attendance_reminder_email.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | author: "" 4 | date: "" 5 | output: html_document 6 | params: 7 | lead_instructor: "David Wilby" 8 | --- 9 | 10 | 11 | 12 | We're looking forward to welcoming you to the RSE Sheffield training session on git & GitHub through GitKraken Client - from Zero to Hero in about 2 weeks! 13 | 14 | **This email is to remind you that if you are unable to attend, to please cancel your booking so we can offer your place to someone else.** 15 | 16 | ### Attendance to our Courses 17 | 18 | We are delighted to be able to make free at point of use training available to the research community, to support better software and more open, reproducible research. Our courses are almost always sold out with a long waiting list. Running courses that are not fully attended is a waste of RSE time and effort and deprives others on the waiting list of a place. 19 | 20 | If you sign up for a course, please make sure you either attend or cancel your booking. Bookings can usually be cancelled through [eventbrite.co.uk](https://www.eventbrite.co.uk) or, failing that, by emailing [rse@sheffield.ac.uk](mailto:rse@sheffield.ac.uk). 21 | 22 | We also need to make you aware that persistent failure to attend booked courses might result in you being excluded from future training opportunities. 23 | 24 | 25 | See you all in two weeks time! 26 | 27 | Please don’t hesitate to reach out to me with any questions. 28 | 29 |
30 | 31 | ##### `r params$lead_instructor` 32 | 33 | **Research Software Engineer** 34 | 35 | University of Sheffield 36 | -------------------------------------------------------------------------------- /emails/feedback_survey_email.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | author: "" 4 | date: "" 5 | output: html_document 6 | params: 7 | prefilled_survey_link: "https://docs.google.com/forms/d/e/1FAIpQLSelm8eDL1GdSHzLwv8hHk0xc8nDewFjR2pk4745jWEebzWThw/viewform?usp=pp_url&entry.1155463189=" 8 | lead_instructor: "Neil Shephard" 9 | event_date: "2024-10-29" 10 | --- 11 | 12 | 13 | 14 | 15 | Thank you for attending our **[git & GitHub through GitKraken Client - from Zero to Hero course][course-material]**. We 16 | hope you enjoyed it and found it useful! 17 | 18 | We are always looking to improve our course in order to meet our participants' needs so your feedback would be very 19 | helpful. We would be grateful if you could take a few minutes to complete our short survey. 20 | 21 |
22 | 23 | ## [Complete Course Survey](`r paste0(params$prefilled_survey_link, params$event_date)`) 24 | 25 | Thank you for taking the time to provide feedback! 26 | 27 |
28 | 29 | Please visit [rse.shef.ac.uk][rse] or subscribe to our [mailing list][rse-group] for information on future training 30 | sessions. Of particular interest is the [FAIR^2 for Research Software][rse-fair2] course which covers open and 31 | reproducible software development. 32 | 33 | ## Further materials 34 | 35 | Some useful materials on Git and GitHub. 36 | 37 | - [Happy Git and GitHub for the useR][happy-git] - using Git and RStudio with GitHub. 38 | - [Refined GitHub][refined-github] - a useful browser plugin that improves the GitHub experience. 39 | - [Atlassian Git Tutorials and Workflows][atlassian-tutorials] - useful tutorials on using Git. 40 | - [Git Flight Rules][git-flight-rules] - clear concise steps for carrying out different Git tasks. 41 |
42 | 43 | ##### `r params$lead_instructor` 44 | 45 | **Research Software Engineer** 46 | 47 | University of Sheffield 48 | 49 | [atlassian-tutorials]: https://www.atlassian.com/git 50 | [course-material]: https://srse-git-github-zero2hero.netlify.app/ 51 | [course-material-links-faq]: https://srse-git-github-zero2hero.netlify.app/faq-glossary-links/ 52 | [git-flight-rules]: https://github.com/k88hudson/git-flight-rules 53 | [happy-git]: https://happygitwithr.com/ 54 | [refined-github]: https://github.com/refined-github/refined-github/ 55 | [rse-fair2]: https://rse.shef.ac.uk/training/fair4rs/ 56 | [rse]: https://rse.shef.ac.uk 57 | [rse-group]: https://groups.google.com/a/sheffield.ac.uk/g/rse-group 58 | -------------------------------------------------------------------------------- /emails/joining_reminder_email.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | author: "" 4 | date: "" 5 | output: html_document 6 | params: 7 | day1: 8 | label: "Input dataset1:" 9 | value: "2024-04-22" 10 | input: date 11 | day2: 12 | label: "Input dataset2:" 13 | value: "2024-04-23" 14 | input: date 15 | event_start_time_day1: "09:30" 16 | event_end_time_day1: "13:00" 17 | venue_day1: "Hicks Building - G34a" 18 | event_start_time_day2: "09:30" 19 | event_end_time_day2: "13:00" 20 | venue_day2: "Hicks Building - G34a" 21 | session_joining_link: "" 22 | lead_instructor: "Neil Shephard" 23 | --- 24 | 25 | 26 | 27 | 28 | We're looking forward to welcoming you to the RSE Sheffield training session on **git & GitHub through GitKraken Client 29 | - from Zero to Hero** shortly! 30 | 31 | ### SCHEDULE 32 | 33 | We’ll **kick off at `r params$event_start_time_day1` on `r format(strptime(params$day1, format = "%Y-%m-%d"), "%a %b %d 34 | %Y")`** in **`r params$venue_day1`** and aim to have a few breaks throughout the morning, finishing 35 | at `r params$event_end_time_day1`. The second session will follow **at `r params$event_start_time_day2` on 36 | `r format(strptime(params$day2, format = "%Y-%m-%d"), "%a %b %d %Y")`** in **`r params$venue_day2`** and follow the 37 | same format. 38 | 39 | There will be some time at the end of each day for questions and discussions. 40 | 41 | 42 | 43 | See you all soon! 44 | 45 | `r params$lead_instructor` 46 | 47 | **Research Software Engineer** 48 | 49 | University of Sheffield 50 | -------------------------------------------------------------------------------- /emails/joining_reminder_email_two_day.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | author: "" 4 | date: "" 5 | output: html_document 6 | params: 7 | day1: 8 | label: "Input dataset1:" 9 | value: "2024-02-05" 10 | input: date 11 | day2: 12 | label: "Input dataset2:" 13 | value: "2024-02-06" 14 | input: date 15 | session_joining_link: "" 16 | start_time_day1: "09:30" 17 | venue_day1: "Computer Room 2, Floor2, The Diamond" 18 | start_time_day2: "09:30" 19 | venue_day2: "Computer Room 4, Floor2, The Diamond" 20 | lead_instructor: "Neil Shephard" 21 | --- 22 | 23 | 24 | 25 | 26 | We're looking forward to welcoming you to the RSE Sheffield training session on **git & GitHub through GitKraken 27 | Client - from Zero to Hero** shortly! 28 | 29 | Today's session 30 | (`r format(strptime(params$day1, format = "%Y-%m-%d"), "%a %b %d %Y")`) starts at **`r params$start_time_day1`** in 31 | **`r params$venue_day1`**. Tomorrow's session (`r format(strptime(params$day2, format = "%Y-%m-%d"), "%a %b %d %Y")`) 32 | will begin at **`r params$start_time_day2`** in **`r params$venue_day2`**. 33 | 34 | See you all soon! 35 | 36 | Mr `r params$lead_instructor` 37 | 38 | **Research Software Engineer** 39 | 40 | University of Sheffield 41 | -------------------------------------------------------------------------------- /emails/setup_email.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | author: "" 4 | date: "" 5 | output: html_document 6 | params: 7 | event_date: 8 | label: "Input dataset:" 9 | value: "2022-04-12" 10 | input: date 11 | event_start_time: "10:00" 12 | lunch_time: "12:30" 13 | session_joining_link: "" 14 | lead_instructor: "David Wilby" 15 | 16 | 17 | --- 18 | 19 | 20 | 21 | 22 | We're looking forward to welcoming you to the RSE Sheffield training session on **git & GitHub through GitKraken Client - from Zero to Hero!** 23 | 24 | 25 | ### SETUP 26 | 27 | Prior to attending, you need to **install the software we are going to use and create an account on GitHub. Please ensure you have completed setup before the course begins.** 29 | 30 | Instructions on how to create the account as well as install all the software required can be found on the [**Setup 31 | chapter**](https://srse-git-github-zero2hero.netlify.app/setup/) of the course materials. If you have any problems with 32 | your setup, please get in touch with us for assistance *before* the course begins. To ensure you have the advantages of 33 | a [GitHub Educational account](https://education.github.com/discount_requests/student_application) and GitKraken Pro for 34 | free please see the [tip](https://srse-git-github-zero2hero.netlify.app/setup/github/) about using your academic email address. 35 | 36 | 37 | If joining an on-line version of the course, we recommend using a two screen set up if possible so you can observe the 38 | live demonstration on one screen and perform the practical exercises on another. 39 | 40 | ### SCHEDULE 41 | 42 | We’ll **kick off at `r params$event_start_time` on `r format(strptime(params$event_date, format = "%Y-%m-%d"), "%a %b %d %Y")`** and aim to have a 1 hr **lunch break at `r params$lunch_time`**. We'll return for the **afternoon session at `r format(as.POSIXct(paste(params$event_date, params$lunch_time)) + 1*60*60, "%H:%M")`** which should last around another 3 hrs. 43 | There will be some time at the end of the day for questions and discussions. 44 | 45 | ### ATTENDANCE 46 | 47 | **In the event that you can no longer make it, we please ask that you cancel your ticket so we can offer it to someone on the waiting list**. 48 | 49 | ### COURSE DELIVERY PLATFORM 50 | 51 | We will be using [Blackboard Collaborate](https://www.sheffield.ac.uk/apse/digital/collaborate/students) to deliver the course. On the day please click the link below to join the course room: 52 | 53 | 54 | ## [**JOIN COURSE ROOM**](`r params$session_joining_link`) 55 | 56 | For session security, please do not share the joining link. 57 | 58 |
59 | 60 | See you next week! 61 | 62 | Please don’t hesitate to reach out to me with any questions. 63 | 64 |
65 | 66 | ##### `r params$lead_instructor` 67 | 68 | **Research Software Engineer** 69 | 70 | University of Sheffield 71 | 72 | -------------------------------------------------------------------------------- /emails/setup_email_two_day.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | author: "" 4 | date: "" 5 | output: html_document 6 | params: 7 | day1: 8 | label: "Input dataset1:" 9 | value: "2024-04-22" 10 | input: date 11 | venue: 12 | day2: 13 | label: "Input dataset2:" 14 | value: "2024-04-23" 15 | input: date 16 | event_start_time_day1: "09:30" 17 | event_end_time_day1: "13:00" 18 | venue_day1: "Hicks Building - G34a" 19 | event_start_time_day2: "09:30" 20 | event_end_time_day2: "13:00" 21 | venue_day2: "Hicks Building - G34a" 22 | session_joining_link: "" 23 | lead_instructor: "Neil Shephard" 24 | 25 | 26 | --- 27 | 28 | 29 | 30 | 31 | We're looking forward to welcoming you to the RSE Sheffield training session on **git & GitHub through GitKraken 32 | Client - from Zero to Hero!** 33 | 34 | 35 | ### SETUP 36 | 37 | Prior to attending, you need to **install the software we are going to use and create an account on GitHub. Please ensure you have completed setup before the course begins.** 39 | 40 | Instructions on how to create the account as well as install all the software required can be found on the [**Setup 41 | chapter**](https://srse-git-github-zero2hero.netlify.app/setup/) of the course materials. If you have any problems with 42 | your setup, please get in touch with us for assistance *before* the course begins. To ensure you have the advantages of 43 | a [GitHub Educational account](https://education.github.com/discount_requests/student_application) and GitKraken Pro for 44 | free please see the [tip](https://srse-git-github-zero2hero.netlify.app/setup/github/) about using your academic email address. 45 | 46 | 47 | ### SCHEDULE 48 | 49 | We’ll **kick off at `r params$event_start_time_day1` on `r format(strptime(params$day1, format = "%Y-%m-%d"), "%a %b %d 50 | %Y")`** in **`r params$venue_day1`** and aim to have a few breaks throughout the morning, finishing 51 | at `r params$event_end_time_day1`. The second session will follow **at `r params$event_start_time_day2` on 52 | `r format(strptime(params$day2, format = "%Y-%m-%d"), "%a %b %d %Y")`** in **`r params$venue_day2`** and follow the 53 | same format. 54 | 55 | There will be some time at the end of each day for questions and discussions. 56 | 57 | 58 | ### ATTENDANCE 59 | 60 | **In the event that you can no longer make it, we please ask that you cancel your ticket so we can offer it to someone on the waiting list**. 61 | 62 | 63 | 64 |
65 | 66 | See you next week! 67 | 68 | Please don’t hesitate to reach out to me with any questions. 69 | 70 |
71 | 72 | ##### `r params$lead_instructor` 73 | 74 | **Research Software Engineer** 75 | 76 | University of Sheffield 77 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/annakrystalli/rse-workshop-materials-template 2 | 3 | go 1.14 4 | 5 | require ( 6 | github.com/dzello/reveal-hugo v0.0.0-20210413081415-39511a646b9c // indirect 7 | github.com/matcornic/hugo-theme-learn v0.0.0-20210331234833-d198cbe65f06 // indirect 8 | ) 9 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/dzello/reveal-hugo v0.0.0-20200513004858-ff9f389743ae h1:x2cMxkgkOshGVuUswcYK1Nda6s0QFff8QDOIt3eCfKA= 2 | github.com/dzello/reveal-hugo v0.0.0-20200513004858-ff9f389743ae/go.mod h1:0S5eDEdHBx8tSj8veo9lUnuJRXa8WqmpANd0Lz7CLc8= 3 | github.com/dzello/reveal-hugo v0.0.0-20210413081415-39511a646b9c h1:MqLk4B4fKbRMECHQAMY0S5RFovEtjXS9TTMLsB/NWJU= 4 | github.com/dzello/reveal-hugo v0.0.0-20210413081415-39511a646b9c/go.mod h1:0S5eDEdHBx8tSj8veo9lUnuJRXa8WqmpANd0Lz7CLc8= 5 | github.com/matcornic/hugo-theme-learn v0.0.0-20200911135725-023fe7ef2b4c h1:wuILQJPvX0BYvxuvktvToxtOxAcELdnPS0ppKJ4f9Dw= 6 | github.com/matcornic/hugo-theme-learn v0.0.0-20200911135725-023fe7ef2b4c/go.mod h1:YoToDcvQxmAFhpEuapKUysBDEBckqDEssqTrmeZ2+uY= 7 | github.com/matcornic/hugo-theme-learn v0.0.0-20210331234833-d198cbe65f06 h1:Vxgl1/dyKpZDstVWmxNL9BauEGxLXrcbe1T09/dEzTY= 8 | github.com/matcornic/hugo-theme-learn v0.0.0-20210331234833-d198cbe65f06/go.mod h1:YoToDcvQxmAFhpEuapKUysBDEBckqDEssqTrmeZ2+uY= 9 | -------------------------------------------------------------------------------- /layouts/partials/logo.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /layouts/partials/menu.html: -------------------------------------------------------------------------------- 1 | 92 | 93 | 94 | {{ define "section-tree-nav" }} 95 | {{ $showvisitedlinks := .showvisitedlinks }} 96 | {{ $currentNode := .currentnode }} 97 | {{ $currentFileUniqueID := "" }} 98 | {{ with $currentNode.File }}{{ $currentFileUniqueID = .UniqueID }}{{ end }} 99 | {{with .sect}} 100 | {{if and .IsSection (or (not .Params.hidden) $.showhidden)}} 101 | {{safeHTML .Params.head}} 102 |
  • 107 | 108 | {{safeHTML .Params.Pre}}{{or .Params.menuTitle .LinkTitle .Title}}{{safeHTML .Params.Post}} 109 | {{ if $showvisitedlinks}} 110 | 111 | {{ end }} 112 | 113 | {{ $numberOfPages := (add (len .Pages) (len .Sections)) }} 114 | {{ if ne $numberOfPages 0 }} 115 |
      116 | {{ if .Params.slides }} 117 |
    • 118 | 119 | Slides 120 | 121 |
    • 122 | {{ end }} 123 | {{ $currentNode.Scratch.Set "pages" .Pages }} 124 | {{ if .Sections}} 125 | {{ $currentNode.Scratch.Set "pages" (.Pages | union .Sections) }} 126 | {{end}} 127 | {{ $pages := ($currentNode.Scratch.Get "pages") }} 128 | 129 | {{if eq .Site.Params.ordersectionsby "title"}} 130 | {{ range $pages.ByTitle }} 131 | {{ if and .Params.hidden (not $.showhidden) }} 132 | {{else}} 133 | {{ template "section-tree-nav" dict "sect" . "currentnode" $currentNode "showvisitedlinks" $showvisitedlinks }} 134 | {{end}} 135 | {{ end }} 136 | {{else}} 137 | {{ range $pages.ByWeight }} 138 | {{ if and .Params.hidden (not $.showhidden) }} 139 | {{else}} 140 | {{ template "section-tree-nav" dict "sect" . "currentnode" $currentNode "showvisitedlinks" $showvisitedlinks }} 141 | {{end}} 142 | {{ end }} 143 | {{end}} 144 |
    145 | {{ end }} 146 |
  • 147 | {{else}} 148 | {{ if not .Params.Hidden }} 149 |
  • 150 | 151 | {{safeHTML .Params.Pre}}{{or .Params.menuTitle .LinkTitle .Title}}{{safeHTML .Params.Post}} 152 | {{ if $showvisitedlinks}}{{end}} 153 | 154 |
  • 155 | {{ end }} 156 | {{end}} 157 | {{ end }} 158 | {{ end }} -------------------------------------------------------------------------------- /layouts/shortcodes/include.html: -------------------------------------------------------------------------------- 1 | {{$file := .Get 0}} 2 | {{ with .Site.GetPage "page" $file }}{{ .Content | markdownify }}{{ end }} -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "/public" 3 | command = "hugo -d public" 4 | 5 | [context.production.environment] 6 | HUGO_VERSION = "0.73.0" 7 | GO_VERSION="1.12" 8 | 9 | [context.deploy-preview] 10 | command = "hugo --gc -b $DEPLOY_PRIME_URL" 11 | 12 | [context.deploy-preview.environment] 13 | HUGO_VERSION = "0.73.0" 14 | GO_VERSION="1.12" 15 | 16 | [context.branch-deploy] 17 | command = "hugo --gc -b $DEPLOY_PRIME_URL" 18 | -------------------------------------------------------------------------------- /rse-workshop-materials-template.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 4 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | -------------------------------------------------------------------------------- /static/css/pygments.css: -------------------------------------------------------------------------------- 1 | /* Background */ .chroma {background-color: #f8f8f8; border: solid gray 1px; } 2 | /* Other */ .chroma .x { } 3 | /* Error */ .chroma .err { } 4 | /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } 5 | /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } 6 | /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } 7 | /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #727272 } 8 | /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #727272 } 9 | /* Keyword */ .chroma .k { color: #008000; font-weight: bold } 10 | /* KeywordConstant */ .chroma .kc { color: #008000; font-weight: bold } 11 | /* KeywordDeclaration */ .chroma .kd { color: #008000; font-weight: bold } 12 | /* KeywordNamespace */ .chroma .kn { color: #008000; font-weight: bold } 13 | /* KeywordPseudo */ .chroma .kp { color: #008000 } 14 | /* KeywordReserved */ .chroma .kr { color: #008000; font-weight: bold } 15 | /* KeywordType */ .chroma .kt { color: #b00040 } 16 | /* Name */ .chroma .n { } 17 | /* NameAttribute */ .chroma .na { color: #687720 } 18 | /* NameBuiltin */ .chroma .nb { color: #008000 } 19 | /* NameBuiltinPseudo */ .chroma .bp { } 20 | /* NameClass */ .chroma .nc { color: #0000ff; font-weight: bold } 21 | /* NameConstant */ .chroma .no { color: #880000 } 22 | /* NameDecorator */ .chroma .nd { color: #aa22ff } 23 | /* NameEntity */ .chroma .ni { color: #727272; font-weight: bold } 24 | /* NameException */ .chroma .ne { color: #d2413a; font-weight: bold } 25 | /* NameFunction */ .chroma .nf { color: #0000ff } 26 | /* NameFunctionMagic */ .chroma .fm { } 27 | /* NameLabel */ .chroma .nl { color: #a0a000 } 28 | /* NameNamespace */ .chroma .nn { color: #0000ff; font-weight: bold } 29 | /* NameOther */ .chroma .nx { } 30 | /* NameProperty */ .chroma .py { } 31 | /* NameTag */ .chroma .nt { color: #008000; font-weight: bold } 32 | /* NameVariable */ .chroma .nv { color: #19177c } 33 | /* NameVariableClass */ .chroma .vc { } 34 | /* NameVariableGlobal */ .chroma .vg { } 35 | /* NameVariableInstance */ .chroma .vi { } 36 | /* NameVariableMagic */ .chroma .vm { } 37 | /* Literal */ .chroma .l { } 38 | /* LiteralDate */ .chroma .ld { } 39 | /* LiteralString */ .chroma .s { color: #ba2121 } 40 | /* LiteralStringAffix */ .chroma .sa { color: #ba2121 } 41 | /* LiteralStringBacktick */ .chroma .sb { color: #ba2121 } 42 | /* LiteralStringChar */ .chroma .sc { color: #ba2121 } 43 | /* LiteralStringDelimiter */ .chroma .dl { color: #ba2121 } 44 | /* LiteralStringDoc */ .chroma .sd { color: #ba2121; font-style: italic } 45 | /* LiteralStringDouble */ .chroma .s2 { color: #ba2121 } 46 | /* LiteralStringEscape */ .chroma .se { color: #bb6622; font-weight: bold } 47 | /* LiteralStringHeredoc */ .chroma .sh { color: #ba2121 } 48 | /* LiteralStringInterpol */ .chroma .si { color: #bb6688; font-weight: bold } 49 | /* LiteralStringOther */ .chroma .sx { color: #008000 } 50 | /* LiteralStringRegex */ .chroma .sr { color: #bb6688 } 51 | /* LiteralStringSingle */ .chroma .s1 { color: #ba2121 } 52 | /* LiteralStringSymbol */ .chroma .ss { color: #19177c } 53 | /* LiteralNumber */ .chroma .m { color: #666666 } 54 | /* LiteralNumberBin */ .chroma .mb { color: #666666 } 55 | /* LiteralNumberFloat */ .chroma .mf { color: #666666 } 56 | /* LiteralNumberHex */ .chroma .mh { color: #666666 } 57 | /* LiteralNumberInteger */ .chroma .mi { color: #666666 } 58 | /* LiteralNumberIntegerLong */ .chroma .il { color: #666666 } 59 | /* LiteralNumberOct */ .chroma .mo { color: #666666 } 60 | /* Operator */ .chroma .o { color: #666666 } 61 | /* OperatorWord */ .chroma .ow { color: #aa22ff; font-weight: bold } 62 | /* Punctuation */ .chroma .p { color: #666 } 63 | /* Comment */ .chroma .c { color: #3b7777; font-style: italic } 64 | /* CommentHashbang */ .chroma .ch { color: #3b7777; font-style: italic } 65 | /* CommentMultiline */ .chroma .cm { color: #3b7777; font-style: italic } 66 | /* CommentSingle */ .chroma .c1 { color: #3b7777; font-style: italic } 67 | /* CommentSpecial */ .chroma .cs { color: #3b7777; font-style: italic } 68 | /* CommentPreproc */ .chroma .cp { color: #bc7a00 } 69 | /* CommentPreprocFile */ .chroma .cpf { color: #bc7a00 } 70 | /* Generic */ .chroma .g { } 71 | /* GenericDeleted */ .chroma .gd { color: #a00000 } 72 | /* GenericEmph */ .chroma .ge { font-style: italic } 73 | /* GenericError */ .chroma .gr { color: #ff0000 } 74 | /* GenericHeading */ .chroma .gh { color: #000080; font-weight: bold } 75 | /* GenericInserted */ .chroma .gi { color: #00a000 } 76 | /* GenericOutput */ .chroma .go { color: #888888 } 77 | /* GenericPrompt */ .chroma .gp { color: #000080; font-weight: bold } 78 | /* GenericStrong */ .chroma .gs { font-weight: bold } 79 | /* GenericSubheading */ .chroma .gu { color: #800080; font-weight: bold } 80 | /* GenericTraceback */ .chroma .gt { color: #0044dd } 81 | /* GenericUnderline */ .chroma .gl { text-decoration: underline } 82 | /* TextWhitespace */ .chroma .w { color: #bbbbbb } 83 | 84 | code { 85 | border-radius: 2px; 86 | white-space: nowrap; 87 | color: inherit; 88 | background: #f8f8f8; 89 | border: 1px solid #f8f8f8; 90 | padding: 0px 2px; 91 | } 92 | code + .copy-to-clipboard { 93 | margin-left: -1px; 94 | border-left: 0 !important; 95 | font-size: inherit !important; 96 | vertical-align: baseline; 97 | height: 21px; 98 | top: 0; 99 | } 100 | pre { 101 | padding: 1rem; 102 | margin: 2rem 0; 103 | background: #f8f8f8; 104 | border: 0; 105 | border-radius: 2px; 106 | line-height: 1.15; 107 | } 108 | pre code { 109 | color: inherit; 110 | background: inherit; 111 | white-space: inherit; 112 | border: 0; 113 | padding: 0; 114 | margin: 0; 115 | font-size: 15px; 116 | } 117 | 118 | #body code a.highlight { 119 | display: inline-flex; 120 | } 121 | 122 | #body pre code a.highlight { 123 | display: inline-flex; 124 | } 125 | 126 | .reveal code { 127 | font-size: inherit; 128 | } 129 | -------------------------------------------------------------------------------- /static/css/theme-rse-learn.css: -------------------------------------------------------------------------------- 1 | :root{ 2 | 3 | --MAIN-TEXT-color:#333e50; /* Color of text by default */ 4 | --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5 */ 5 | --MAIN-LINK-color:#1C90F3; /* Color of links */ 6 | --MAIN-LINK-HOVER-color:#167ad0; /* Color of hovered links */ 7 | --MAIN-ANCHOR-color: #1C90F3; /* color of anchors on titles */ 8 | 9 | --MENU-HEADER-BG-color:#6690B9; /* Background color of menu header */ 10 | --MENU-HEADER-BORDER-color:#33a1ff; /*Color of menu header border */ 11 | 12 | --MENU-SEARCH-BG-color:#fff; /* Search field background color (by default borders + icons) */ 13 | --MENU-SEARCH-BOX-color: #33a1ff; /* Override search field border color */ 14 | --MENU-SEARCH-BOX-ICONS-color: #a1d2fd; /* Override search field icons color */ 15 | 16 | --MENU-SECTIONS-ACTIVE-BG-color:#20272b; /* Background color of the active section and its childs */ 17 | --MENU-SECTIONS-BG-color:#252c31; /* Background color of other sections */ 18 | --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ 19 | --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ 20 | --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ 21 | --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ 22 | 23 | --MENU-VISITED-color: #33a1ff; /* Color of 'page visited' icons in menu */ 24 | --MENU-SECTION-HR-color: #20272b; /* Color of
    separator in menu */ 25 | 26 | } 27 | 28 | body { 29 | color: var(--MAIN-TEXT-color) !important; 30 | } 31 | 32 | textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { 33 | border-color: none; 34 | box-shadow: none; 35 | } 36 | 37 | h2, h3, h4, h5 { 38 | color: var(--MAIN-TITLES-TEXT-color) !important; 39 | } 40 | 41 | a { 42 | color: var(--MAIN-LINK-color); 43 | } 44 | 45 | .anchor { 46 | color: var(--MAIN-ANCHOR-color); 47 | } 48 | 49 | a:hover { 50 | color: var(--MAIN-LINK-HOVER-color); 51 | } 52 | 53 | #sidebar ul li.visited > a .read-icon { 54 | color: var(--MENU-VISITED-color); 55 | } 56 | 57 | #body a.highlight:after { 58 | display: block; 59 | content: ""; 60 | height: 1px; 61 | width: 0%; 62 | -webkit-transition: width 0.5s ease; 63 | -moz-transition: width 0.5s ease; 64 | -ms-transition: width 0.5s ease; 65 | transition: width 0.5s ease; 66 | background-color: var(--MAIN-LINK-HOVER-color); 67 | } 68 | #sidebar { 69 | background-color: var(--MENU-SECTIONS-BG-color); 70 | } 71 | #sidebar #header-wrapper { 72 | background: var(--MENU-HEADER-BG-color); 73 | color: var(--MENU-SEARCH-BOX-color); 74 | border-color: var(--MENU-HEADER-BORDER-color); 75 | } 76 | #sidebar .searchbox { 77 | border-color: var(--MENU-SEARCH-BOX-color); 78 | background: var(--MENU-SEARCH-BG-color); 79 | } 80 | #sidebar ul.topics > li.parent, #sidebar ul.topics > li.active { 81 | background: var(--MENU-SECTIONS-ACTIVE-BG-color); 82 | } 83 | #sidebar .searchbox * { 84 | color: var(--MENU-SEARCH-BOX-ICONS-color); 85 | } 86 | 87 | #sidebar a { 88 | color: var(--MENU-SECTIONS-LINK-color); 89 | } 90 | 91 | #sidebar a:hover { 92 | color: var(--MENU-SECTIONS-LINK-HOVER-color); 93 | } 94 | 95 | #sidebar ul li.active > a { 96 | background: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color); 97 | color: var(--MENU-SECTION-ACTIVE-CATEGORY-color) !important; 98 | } 99 | 100 | #sidebar hr { 101 | border-color: var(--MENU-SECTION-HR-color); 102 | } 103 | 104 | blockquote { 105 | border-left: 10px solid #FA8072; 106 | } 107 | 108 | blockquote p { 109 | font-size: 1.1rem; 110 | color: #666; 111 | } 112 | -------------------------------------------------------------------------------- /static/images/TUOS-RSE-logos-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/TUOS-RSE-logos-small.png -------------------------------------------------------------------------------- /static/images/ag-br-protect-rule-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-br-protect-rule-add.png -------------------------------------------------------------------------------- /static/images/ag-br-protect-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-br-protect-rule.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-inspect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-inspect.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-merge-clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-merge-clean.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-merge-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-merge-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-merge-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-merge-init.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-rev-code-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-rev-code-init.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-rev-gen-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-rev-gen-init.png -------------------------------------------------------------------------------- /static/images/ag-cfg-pr-review-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-cfg-pr-review-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-collaborator-new-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-collaborator-new-add.png -------------------------------------------------------------------------------- /static/images/ag-collaborator-new-pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-collaborator-new-pending.png -------------------------------------------------------------------------------- /static/images/ag-collaborator-new-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-collaborator-new-search.png -------------------------------------------------------------------------------- /static/images/ag-collaborator-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-collaborator-new.png -------------------------------------------------------------------------------- /static/images/ag-collaborators-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-collaborators-all.png -------------------------------------------------------------------------------- /static/images/ag-create-tmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-create-tmpl.png -------------------------------------------------------------------------------- /static/images/ag-github-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-github-flow.png -------------------------------------------------------------------------------- /static/images/ag-gk-branch-metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-branch-metadata.png -------------------------------------------------------------------------------- /static/images/ag-gk-branch-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-branch-new.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-commit-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-commit-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-commit.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-edit-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-edit-details.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-edit-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-edit-init.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-pr-cmpl-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-pr-cmpl-details.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-pr-details-br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-pr-details-br.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-pr-details-rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-pr-details-rev.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-pr-gh-view-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-pr-gh-view-init.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-pr-gh-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-pr-gh-view.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-pr-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-pr-init.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-push-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-push-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-push-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-push-init.png -------------------------------------------------------------------------------- /static/images/ag-gk-cfg-stage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-cfg-stage.png -------------------------------------------------------------------------------- /static/images/ag-gk-clone-pc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-clone-pc.png -------------------------------------------------------------------------------- /static/images/ag-gk-clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-clone.png -------------------------------------------------------------------------------- /static/images/ag-gk-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-gk-open.png -------------------------------------------------------------------------------- /static/images/ag-issue-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-init.png -------------------------------------------------------------------------------- /static/images/ag-issue-sub-assign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-sub-assign.png -------------------------------------------------------------------------------- /static/images/ag-issue-sub-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-sub-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-issue-sub-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-sub-init.png -------------------------------------------------------------------------------- /static/images/ag-issue-sub-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-sub-list.png -------------------------------------------------------------------------------- /static/images/ag-issue-sub-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-sub-preview.png -------------------------------------------------------------------------------- /static/images/ag-issue-sub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issue-sub.png -------------------------------------------------------------------------------- /static/images/ag-issues-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-issues-tab.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-approve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-approve.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge-confilct-resolve-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge-confilct-resolve-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge-confilct-resolve-commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge-confilct-resolve-commit.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge-confilct-resolve-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge-confilct-resolve-init.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge-confilct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge-confilct.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge-issue-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge-issue-closed.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge-pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge-pre.png -------------------------------------------------------------------------------- /static/images/ag-pr-2-review-merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-2-review-merge.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-approve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-approve.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-codeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-codeline.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-detail.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-merge-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-merge-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-merge-confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-merge-confirm.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-merge-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-merge-init.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-response-checks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-response-checks.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-response-resolve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-response-resolve.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-response.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-review-submitted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-review-submitted.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-test-fail-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-test-fail-detail.png -------------------------------------------------------------------------------- /static/images/ag-pr-sub-test-fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-pr-sub-test-fail.png -------------------------------------------------------------------------------- /static/images/ag-sub-branch-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-branch-init.png -------------------------------------------------------------------------------- /static/images/ag-sub-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-branch.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-create.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-fun-commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-fun-commit.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-fun-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-fun-create.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-fun-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-fun-edit.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-fun-stage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-fun-stage.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-init-commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-init-commit.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-init-edit-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-init-edit-init.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-init-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-init-edit.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-test-commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-test-commit.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-test-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-test-create.png -------------------------------------------------------------------------------- /static/images/ag-sub-file-test-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-file-test-edit.png -------------------------------------------------------------------------------- /static/images/ag-sub-pr-cmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-pr-cmpl.png -------------------------------------------------------------------------------- /static/images/ag-sub-pr-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-pr-init.png -------------------------------------------------------------------------------- /static/images/ag-sub-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-sub-push.png -------------------------------------------------------------------------------- /static/images/ag-synch-local-checkout-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-synch-local-checkout-main.png -------------------------------------------------------------------------------- /static/images/ag-synch-local-clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-synch-local-clean.png -------------------------------------------------------------------------------- /static/images/ag-synch-local-pull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-synch-local-pull.png -------------------------------------------------------------------------------- /static/images/ag-synch-local-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-synch-local-view.png -------------------------------------------------------------------------------- /static/images/ag-use-tmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/ag-use-tmpl.png -------------------------------------------------------------------------------- /static/images/bb_comms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/bb_comms.png -------------------------------------------------------------------------------- /static/images/clone-1-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/clone-1-gk.png -------------------------------------------------------------------------------- /static/images/clone-2-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/clone-2-gk.png -------------------------------------------------------------------------------- /static/images/clone-3-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/clone-3-gk.png -------------------------------------------------------------------------------- /static/images/clone-4-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/clone-4-gk.png -------------------------------------------------------------------------------- /static/images/clone-5-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/clone-5-gk.png -------------------------------------------------------------------------------- /static/images/clone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/clone.jpg -------------------------------------------------------------------------------- /static/images/collab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/collab.png -------------------------------------------------------------------------------- /static/images/command-symbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/command-symbol.png -------------------------------------------------------------------------------- /static/images/commit-param.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/commit-param.png -------------------------------------------------------------------------------- /static/images/commit-pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/commit-pre.png -------------------------------------------------------------------------------- /static/images/commit-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/commit-push.png -------------------------------------------------------------------------------- /static/images/copy-param-tmpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/copy-param-tmpl.png -------------------------------------------------------------------------------- /static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/favicon.png -------------------------------------------------------------------------------- /static/images/fork-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/fork-1.png -------------------------------------------------------------------------------- /static/images/fork-2-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/fork-2-gk.png -------------------------------------------------------------------------------- /static/images/gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gif.gif -------------------------------------------------------------------------------- /static/images/git-commit-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git-commit-workflow.png -------------------------------------------------------------------------------- /static/images/git-logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git-logo-small.png -------------------------------------------------------------------------------- /static/images/git-profile-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git-profile-complete.png -------------------------------------------------------------------------------- /static/images/git-profile-complete_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git-profile-complete_old.png -------------------------------------------------------------------------------- /static/images/git-profile-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git-profile-edit.png -------------------------------------------------------------------------------- /static/images/git_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git_logo.png -------------------------------------------------------------------------------- /static/images/git_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/git_logo_small.png -------------------------------------------------------------------------------- /static/images/github-manage-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/github-manage-access.png -------------------------------------------------------------------------------- /static/images/github_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/github_logo.png -------------------------------------------------------------------------------- /static/images/gitkraken-interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gitkraken-interface.png -------------------------------------------------------------------------------- /static/images/gitkraken_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gitkraken_logo.png -------------------------------------------------------------------------------- /static/images/gitkraken_logo_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gitkraken_logo_old.png -------------------------------------------------------------------------------- /static/images/gk-add-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-add-remote.png -------------------------------------------------------------------------------- /static/images/gk-all-synched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-all-synched.png -------------------------------------------------------------------------------- /static/images/gk-fast-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-fast-forward.png -------------------------------------------------------------------------------- /static/images/gk-hover-add-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-hover-add-remote.png -------------------------------------------------------------------------------- /static/images/gk-local-synched-files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-local-synched-files.png -------------------------------------------------------------------------------- /static/images/gk-local-synched.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-local-synched.png -------------------------------------------------------------------------------- /static/images/gk-pull-upstream.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-pull-upstream.gif -------------------------------------------------------------------------------- /static/images/gk-remote-added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-remote-added.png -------------------------------------------------------------------------------- /static/images/gk-remote-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-remote-view.png -------------------------------------------------------------------------------- /static/images/gk-upstream-merged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk-upstream-merged.png -------------------------------------------------------------------------------- /static/images/gk01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk01.jpg -------------------------------------------------------------------------------- /static/images/gk01a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gk01a.png -------------------------------------------------------------------------------- /static/images/gpg_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/gpg_off.png -------------------------------------------------------------------------------- /static/images/init-1-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-1-gk.png -------------------------------------------------------------------------------- /static/images/init-2-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-2-gk.png -------------------------------------------------------------------------------- /static/images/init-3-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-3-gk.png -------------------------------------------------------------------------------- /static/images/init-4-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-4-gk.png -------------------------------------------------------------------------------- /static/images/init-5-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-5-gk.png -------------------------------------------------------------------------------- /static/images/init-5a-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-5a-gk.png -------------------------------------------------------------------------------- /static/images/init-5b-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-5b-gk.png -------------------------------------------------------------------------------- /static/images/init-5c-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/init-5c-gk.png -------------------------------------------------------------------------------- /static/images/merged-params.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/merged-params.png -------------------------------------------------------------------------------- /static/images/merged-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/merged-repo.png -------------------------------------------------------------------------------- /static/images/param-complete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/param-complete.png -------------------------------------------------------------------------------- /static/images/param-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/param-folder.png -------------------------------------------------------------------------------- /static/images/pr-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/pr-1.png -------------------------------------------------------------------------------- /static/images/pr-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/pr-2.png -------------------------------------------------------------------------------- /static/images/pr-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/pr-3.png -------------------------------------------------------------------------------- /static/images/pr-filechanges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/pr-filechanges.png -------------------------------------------------------------------------------- /static/images/pr-merged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/pr-merged.png -------------------------------------------------------------------------------- /static/images/pr-response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/pr-response.png -------------------------------------------------------------------------------- /static/images/remotes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/remotes.jpg -------------------------------------------------------------------------------- /static/images/repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/repo.png -------------------------------------------------------------------------------- /static/images/rse-logoonly-stroke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/rse-logoonly-stroke.png -------------------------------------------------------------------------------- /static/images/work-1-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-1-gk.png -------------------------------------------------------------------------------- /static/images/work-10-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-10-gk.png -------------------------------------------------------------------------------- /static/images/work-11-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-11-gk.png -------------------------------------------------------------------------------- /static/images/work-12-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-12-gk.png -------------------------------------------------------------------------------- /static/images/work-13-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-13-gk.png -------------------------------------------------------------------------------- /static/images/work-2-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-2-gk.png -------------------------------------------------------------------------------- /static/images/work-3-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-3-gk.png -------------------------------------------------------------------------------- /static/images/work-4-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-4-gk.png -------------------------------------------------------------------------------- /static/images/work-5-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-5-gk.png -------------------------------------------------------------------------------- /static/images/work-6-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-6-gk.png -------------------------------------------------------------------------------- /static/images/work-7-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-7-gk.png -------------------------------------------------------------------------------- /static/images/work-8-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-8-gk.png -------------------------------------------------------------------------------- /static/images/work-9-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-9-gk.png -------------------------------------------------------------------------------- /static/images/work-9a-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-9a-gk.png -------------------------------------------------------------------------------- /static/images/work-9b-gk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/work-9b-gk.png -------------------------------------------------------------------------------- /static/images/workflows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RSE-Sheffield/git-github-zero-to-hero/fb584f787b8cd4bfcd3f989b4688bd0571c840fb/static/images/workflows.png -------------------------------------------------------------------------------- /static/rmarkdown-libs/header-attrs/header-attrs.js: -------------------------------------------------------------------------------- 1 | // Pandoc 2.9 adds attributes on both header and div. We remove the former (to 2 | // be compatible with the behavior of Pandoc < 2.8). 3 | document.addEventListener('DOMContentLoaded', function(e) { 4 | var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); 5 | var i, h, a; 6 | for (i = 0; i < hs.length; i++) { 7 | h = hs[i]; 8 | if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 9 | a = h.attributes; 10 | while (a.length > 0) h.removeAttribute(a[0].name); 11 | } 12 | }); 13 | --------------------------------------------------------------------------------