Skip to content

Commit 259f0bc

Browse files
authored
Merge pull request #5 from Samuelleeee/Samuelleeee-patch-1
Quarto for setting up Github
2 parents f86a8ac + 813c8df commit 259f0bc

18 files changed

+800
-41
lines changed

quarto_course/skills/paper_planes_git.qmd

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ Our proxy for work will be small paper planes, made from post-it notes. You can
1212

1313
We will set up a table like in the image below, with two spaces for each person: their "working area" (right in front of them) and their "repository" (just further in front).
1414

15-
![](paper_planes_git_files/1_table_setup.jpg)
16-
15+
![v1](paper_planes_git_files/paper_planes_git_files_v-01.png)
1716
Git stores full versions of our working areas. This means all the files and folders in our source code project. Git stores full copies of work as it was. In our exercise we will use a folded piece of paper as a proxy. Think of it like a tray on which all our work sits. We will have lots of copies of these workspaces.
1817

1918
In this exercise we will be making lots of copies. And that is, fundamentally, how git works. For this reason it is really important that you take the time to make the needed copies.
@@ -24,37 +23,50 @@ Our commit will be a creased piece of paper, with a paper plane on it, together
2423

2524
## Sequential work
2625

27-
Our first scenario will be sequential work, meaning that the Originator works, then Improver1, then Improver2, but noone working at the same time.
28-
26+
Our first scenario will be sequential work, meaning that the Originator works, then Improver1, then Improver2, but none working at the same time.
27+
![v2](paper_planes_git_files/paper_planes_git_files_v-02.png)
2928
1. The originator creates a commit, with a basic plane. Mark this with a name (e.g., `VKKF` or `VEDS`) and a comment (e.g., `My first attempt`). Store this in front of you (in your "repository").
29+
![v3](paper_planes_git_files/paper_planes_git_files_v-03.png)
3030

3131
2. Improver1 makes a copy of the whole repository (we call this a "clone") into the space in front of them. This means making a copy of the single commit.
32+
![v4](paper_planes_git_files/paper_planes_git_files_v-04.png)
3233

33-
# ![1_original_plane.png](paper_planes_git_files\original_plane.png)
3434

3535
3. Improver1 does a "checkout" on that commit. This means making another copy of the commit (including the name, but not the comment) and the paper plane, as a starting point for work.
36+
![v5](paper_planes_git_files/paper_planes_git_files_v-05.png)
3637

3738
4. Improver1 makes an improvement to the checked out copy. Take the nose of the plane and fold it back.
39+
![v6](paper_planes_git_files/paper_planes_git_files_v-06.png)
40+
3841

3942
5. Check this new version into your repository. Cross out the copied version name (just a single line, keep it readable) and write a new name below it (e.g., `VGDU`). That crossed out name now shows the parent. Place this commit to the right of your repository.
43+
![v7](paper_planes_git_files/paper_planes_git_files_v-07.png)
4044

4145
6. Take a pink postit note and write on it "Please come get `VGDU` and pass it to the Originator. This is your *pull request*.
46+
![v8](paper_planes_git_files/paper_planes_git_files_v-08.png)
4247

4348
7. The Originator will then do *a pull* by looking at `VGDU` in Improver1's repository, make a copy and check it into their own repository.
49+
![v9](paper_planes_git_files/paper_planes_git_files_v-09.png)
4450

4551
8. Improver2 will then clone the Originator's repository. This means making a new copy of both commits and placing them in front of Improver2.
52+
![v10](paper_planes_git_files/paper_planes_git_files_v-10.png)
4653

4754
9. Improver2 will then do a *checkout* which means making another complete copy of `VGDU` (which is the work as it was when Improver1 finished).
55+
![v11](paper_planes_git_files/paper_planes_git_files_v-11.png)
4856

4957
10. Improver2 can then do new work. Fold the tips of each wing up.
58+
![v12](paper_planes_git_files/paper_planes_git_files_v-12.png)
5059

5160
11. Improver2 can then commit that work back into their repository. Cross out the existing name (`VGDU`) and create a new name (e.g., `VFFD`), add a comment about the work that you've done.
52-
61+
![v13](paper_planes_git_files/paper_planes_git_files_v-13.png)
5362
12. Improver2 take a pink postit note, "Please come get <new name>" (replace <new name> with the name starting with a `V` that you chose, e.g., `VFGT`)
63+
![v14](paper_planes_git_files/paper_planes_git_files_v-14.png)
5464

5565
13. Originator should pull Improver2's work by making a full copy of Improver2's commit, then merge it into their repository.
66+
![v15](paper_planes_git_files/paper_planes_git_files_v-15.png)
5667

5768
14. Improver1 should then synchronize with the Originator by making a pull (make a full copy of the new last commit in Originator's repo, and place it in their own repository).
69+
![v16](paper_planes_git_files/paper_planes_git_files_v-16.png)
5870

5971
Yes, that's a lot of steps, and a lot of copies!
6072

@@ -108,38 +120,3 @@ There are a few ways that projects handle this situation:
108120
2. "Voting". They group votes and majority rules (the Originator follows the overall wishes)
109121
3. Configuration. They make the software complex enough to have a run-time configuration setting so that everyone can determine for themselves how it will work.
110122
4. The project splits ... Improver1 is upset that their change wasn't accepted, they schism and now we have two, incompatible projects out in the world (sometimes called a "hard fork" or an "unfriendly fork".)
111-
112-
## Images from earlier (hopefully stil useful)
113-
114-
1. Originator invents the paper plane by telling Folder1 what to do. They name it as Version 0.
115-
116-
![v0](paper_planes_git_files\v0.png)
117-
118-
2. Improver 1 loves it and asks for one copy. The originator send a copy to Improver 1. ![v0copy2improver1](paper_planes_git_files\v0_copy_to_improver1.png)
119-
120-
3. Improver 1 invents an improvement, making Version 1. ![v1](paper_planes_git_files\v1.png)
121-
122-
4. Improver 1 sends their improvement to Originator. Originator make it official.![v1_official](paper_planes_git_files\v1_official.png)
123-
124-
5. Improver 2 gets that improvement along with the original.![sendv1toi2](paper_planes_git_files\send_v1to_improver2.png)
125-
126-
6. Improver sends their improvement back to Originator, who accepts it, making Version 2 the official version. Now everyone can can work off that version, for future improvements.![v2_official](paper_planes_git_files\v2_official.png)
127-
128-
Everything is hunky dory until Improver 2 takes Version 2 and suggests adding a single flap to each wing, while simultaneously Improver 1 is also working with Version 2 and suggests adding two flaps to each wing.
129-
130-
![v2_to_i1](paper_planes_git_files\v2_to_i1.png)
131-
132-
![v3](paper_planes_git_files\v3.png)
133-
134-
Originator receives these improvements, sees that they are incompatible.
135-
136-
![conflict](paper_planes_git_files\conflict.png)
137-
138-
Now what?![conflict](paper_planes_git_files\conflict_solved.png)
139-
140-
- choose only one to be Version 3 (benevolent dictator choice).
141-
- make flap number into a configuration variable.
142-
143-
Version 3 is released with configuration variable. New improvements start coming in. Some are not problematic, such as wing-tips turned up. But some only work for the one flap config, so the project gets pretty complicated. Originator changes their mind and says that, actually, everything has to be single flap from now on.
144-
145-
The double flappers can either adapt or they can take the codebase, and start a new central "clearinghouse" for improvements. A project schism.
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)