- Generate a new JAR file
- Write some full commit messages
- Add Increments as PRs:
A-Assertions
,A-CodeQuality
,A-Streams
- Add Increment:
A-CI
- Add an extension
1 Generate a new JAR file
- Generate a new JAR file using Gradle (Gradle can bundle the JavaFX third-party library into the jar file. If you do not bundle JavaFX with the JAR file, the application will not work in computers that don't have JavaFX installed). Refer to the Gradle tutorial @SE-EDU/guides to find how.
If the.jar
file is smaller than 5MB, most likely JavaFX libraries are not inside it. - There is no need to create a release in GitHub with this jar file (although you are welcome to).
2 Write some full commit messages
- While we do not require you to write full commit messages (i.e., including a message body) in the work done in this course, it is still good to learn how to write such commit message. The purpose of this task is to give you some practice in writing such full and well-written commit messages.
- Requirements:
- Write full commit messages for at least 2-3 commits that you push this week.
- Follow these Git conventions for the commit message body as specified by @SE-EDU/guides when writing them.
- Git tag one of those commits as
A-FullCommitMessage
.
3 Add Increments as PRs: A-Assertions
, A-CodeQuality
, A-Streams
Guidance for the item(s) below:
As you know, one main goal of the iP is to prepare for you for the tP. The task below is heavy on the 'training for tP' aspect.
In previous iP increments, you learned:
- How to merge branches locally and push to your fork
- How to create PRs from the
master
branch to an upstream repo
In the following iP task you will learn how to do the following new things, which are relevant to the tP:
- How to merge branches remotely, and pull to your local repo
- How to create PRs from branches other than
master
- How to manage PRs that your repo receive
- How to work with parallel PRs
Due to the above learning goals, this iP task is a bit complicated. Pay attention and try to achieve all learning goals along the way.
- Note how to merge PRs:
- Practice using parallel git branches and PRs, as explained below:
First, do each increment as a parallel branch (follow the branch naming convention you followed earlier
branch-Level-8
etc.), but do not merge any.%%{init: { 'theme': 'default', 'gitGraph': {'mainBranchName': 'master'}} }%% gitGraph commit id: "m1" commit id: "m2" branch branch-A-Assertions checkout branch-A-Assertions commit id: "b1c1" checkout master branch branch-A-CodeQuality checkout branch-A-CodeQuality commit id: "b2c1" checkout master branch branch-A-Streams checkout branch-A-Streams commit id: "b3c1" commit id: "b3c2" checkout masterThen, push each branch to your fork, and create a PR within your fork (i.e., from the increment branch to the
master
branch). Be careful not to create a PR to the upstream repo. If you did create such a PR by mistake, no worries, just close it yourself.
When you are doing the next step, you can run into merge conflicts. In some cases, GitHub will give you a way to resolve those conflicts using the Web interface. While this approach may be good enough for simple merge conflicts, de-conflicting locally in the standard way is safer (e.g., you can run tests to confirm the updated code is correct) and more standard (it's a standard Git feature that you can use even when you are not using GitHub for your project).
- Now, merge one of the PRs and update the remaining PRs accordingly, as given below:
- Merge one of the PRs on GitHub. Remember to choose the
Create merge commit
option when merging. - The above step will cause the
master
branch of your local repo to fall behind that of your fork (). Therefore, you need to sync the localmaster
with the remotemaster
branch. One way to do that is to switch to the localmaster
branch and then pull the updatedmaster
branch from your fork e.g.,$ git checkout master $ git pull origin master
The diagram below shows the current situation, assuming you merged theA-Assertions
PR first.%%{init: { 'theme': 'default', 'gitGraph': {'mainBranchName': 'master'}} }%% gitGraph commit id: "m1" commit id: "m2" branch branch-A-Assertions checkout branch-A-Assertions commit id: "b1c1" checkout master branch branch-A-CodeQuality checkout branch-A-CodeQuality commit id: "b2c1" checkout master branch branch-A-Streams checkout branch-A-Streams commit id: "b3c1" commit id: "b3c2" checkout master merge branch-A-Assertions tag: "A-Assertions"- Note how the remaining are no longer in sync with the latest
master
. To rectify, merge themaster
branch on to each of them. Resolve merge conflicts, if any. The outcome will be something like the below:
%%{init: { 'theme': 'default', 'gitGraph': {'mainBranchName': 'master'}} }%% gitGraph commit id: "m1" commit id: "m2" branch branch-A-Assertions checkout branch-A-Assertions commit id: "b1c1" checkout master branch branch-A-CodeQuality checkout branch-A-CodeQuality commit id: "b2c1" checkout master branch branch-A-Streams checkout branch-A-Streams commit id: "b3c1" commit id: "b3c2" checkout master merge branch-A-Assertions tag: "A-Assertions" checkout branch-A-CodeQuality merge master id: "merge master to ..." checkout branch-A-Streams merge master- Push the updated branches to your fork. The PRs will update automatically to reflect the updated branch.
- As before, tag the merge commit in the master branch and push the tag to your fork.
- Merge the remaining PRs using a procedure similar to the above. The diagram below shows the situation after merging the
A-CodeQuality
PR and syncing the localbranch-A-Streams
with the updatedmaster
branch.%%{init: { 'theme': 'default', 'gitGraph': {'mainBranchName': 'master'}} }%% gitGraph commit id: "m1" commit id: "m2" branch branch-A-Assertions checkout branch-A-Assertions commit id: "b1c1" checkout master branch branch-A-CodeQuality checkout branch-A-CodeQuality commit id: "b2c1" checkout master branch branch-A-Streams checkout branch-A-Streams commit id: "b3c1" commit id: "b3c2" checkout master merge branch-A-Assertions tag: "A-Assertions" checkout branch-A-CodeQuality merge master id: "merge master to ..." checkout branch-A-Streams merge master checkout master merge branch-A-CodeQuality tag: "A-CodeQuality" checkout branch-A-Streams merge master
4 Add Increment: A-CI
- We recommend that at least one member of the team attempt the following.
5 Add an extension
- Add at least one extension of your choice, selected from category B, C, or D i.e., pick just one item from one category (i.e., one extension in total, not one from each category) e.g.,
B-DoWithinPeriodTasks
orC-Sort
orD-Places
- Recommended to add the extension via a branch (branch name is up to you). Optional to add it via a PR.
- Add a tag named
BCD-Extension
to the corresponding commit.
Irrespective of the exact extension you did, the tag name should beBCD-Extension
.
Discuss with your team members to ensure that each member picks a different extension.
You may want to pick an extension that is potentially relevant to your tP so that the code can be reused in the tP later, if possible.