Setup Team on GitHub Classroom
The youngest member of your team present on 3/22 should carefully create the team. Only one member needs to take this step first. Create a team named “Final Team ZN” where the Z is the Zone Number and N is the Table Number of your group. For example, “Final Team A1”. Accept the assignment on behalf of your team and, after refreshing, it will create a repository at
github.com/comp423-24s/csxl-final-team-z9
. Assignment acceptance link: https://classroom.github.com/a/mdWWzuiYAfter completing Step 1, all other members of the team should join the correct team and accept the assignment to be added to the repository. Assignment acceptance link: https://classroom.github.com/a/mdWWzuiY
Setup Project Tracking Board
- The oldest member of your team present on 3/22 should carefully create a project board.
- From your team’s repository, go to the Projects Tab. Then look for the green button regarding projects, click the down-facing triangle and select “New Project”. Click the New Project button.
- In the Project Templates Sidebar, select “Featured.” Then select the Kanban template.
- In the Project name choose “Final Team ZN” where Z is your zone and N is your table number.
- Confirm steps 3 and 4 are correct, then select “Create”.
- Go to Project Settings (top-right ellipses)
- Select Manage Access in the left-hand sidebar
- Under Invite Collaborators search for your team (Final Team ZN) and select it.
- Change Role to Admin.
- Press Invite.
Initialize Team Repository
- The second youngest and second oldest members of your team present on 3/22 should pair up on the second oldest member’s computer to initialize the team repository.
- In a terminal on your host system, not within VSCode, create a new directory with the name of your team’s final project repository and
cd
into it:mkdir csxl-final-team-ZN
(replace ZN with your team’s zone and table number)cd csxl-final-team-ZN
- Initialize the new empty directory as a
git
repository:git init
- Add a git remote repository named
upstream
bound to the public, open source CSXL web app repository:git remote add upstream https://github.com/unc-csxl/csxl.unc.edu.git
- Pull the
main
branch fromupstream
:git pull upstream main
- Add a git remote repository named
origin
. This will be bound to your team’s private final project repository. You will need to find the correct repository URL. Open your team’s final project repository on GitHub in a web browser, click the down triangle on the green Code button, and copy the Clone URL. Use this URL in the placeholder below:git remote add origin TEAM_REPO_URL_PLACEHOLDER
- Switch to main:
git switch main
- Push the
main
branch to theorigin
remote (your team’s repository):git push origin main
- Your team will work off of a staging branch named
stage
, rather than themain
branch. Go ahead and establish astage
branch locally and push it:git switch --create stage
git push origin stage
GitHub Repository Configuration
After the team repository has been initialized, the youngest member of the team needs to setup the following repository branch settings in GitHub. This can only be done after completing the prior steps:
- Settings
- General > Default Branch > Change Branch to
stage
- Press the Swap Button (not the Pencil!) and select
stage
- If you do not see
stage
, be sure you completed all the steps in “Initialize Team Repository”, then refresh this page and try again.
- Press the Swap Button (not the Pencil!) and select
- Change to the Branches tab in the sidebar
- Add Branch Protection Rule to prevent any pushing to
main
- Branch name pattern:
main
- (Check) Lock branch
- (Check) Do not allow bypassing the above settings
- Save Changes with Create Button
- Add Branch Protection Rule to prevent any pushing to
- Add Branch Protection Rule to enforce a professional team workflow on
stage
- Branch name pattern:
stage
- (Check) Require a pull request before merging
- (Check) Require approvals: 1 required
- (Check) Dismiss stale pull request approvals when new commits are pushed
- (Check) Require approval of the most recent reviewable push
- (Check) Require conversation resolution before merging
- (Check) Require linear history
- (Check) Do not allow bypassing the above settings
- Save Changes
- Branch name pattern:
Setting up Team Member’s Development Repositories
After the GitHub Repository Configuration step has been completed, the other members of the team can setup their local development repositories. The team member who completed “Initialize Team Repository” can forego these steps.
- In a terminal on your host system, not within VSCode, clone your team’s final project repository and
cd
into it:git clone FINAL-TEAM-REPOSITORY
- Find the Final Team Repository Clone link from the Code dropdown in your GitHub project’s page.cd csxl-final-team-ZN
- Replace ZN with your team’s zone and table number.
- Fetch all branches:
git fetch --all
- Switch to the
stage
branch. This is the primary branch your team will work off of and merge into:git switch stage
- Add a git remote repository named
upstream
bound to the public, open source CSXL web app repository:git remote add upstream https://github.com/unc-csxl/csxl.unc.edu.git
Setting up your Development Environment
Go ahead and delete your Docker DevContainers for earlier exercises in the course. Delete their corresponding Volumes, as well. Don’t worry, your work is still secure on your host machine’s hard drive.
Before opening your cloned project in a DevContainer, remember there is a step required before the DevContainer will start up successfully. First open your project directory in a local VSCode instance and do not attempt to open it in a DevContainer. If you directly open in a DevContainer, you will certainly see an error.
Follow the instructions to get started found in the project’s docs
directory: docs/get_started.md