# Second Assignment - Git and Java Basics Let's kick things off by solving three basic problems to refresh your knowledge of *Java* and *Git*. ## Getting Started Follow these steps to set up your project: ### 0. Watch the introductory video We have recorded a special video, explaining the exact steps that needs to be taken to complete this assignment. Here is the [link](https://drive.meshcomp.ir/d/c9138977a329485585ae/) **Make sure to watch the video before starting the assignment.** ### 1. Fork and Clone the Repository First, fork the repository on GitHub or Gitea (click the Fork button on the top-right). Then clone your forked repository: ``` git clone https://git.meshcomp.ir/YOUR_USERNAME/repository-name.git ``` or ``` git clone https://github.com/YOUR_USERNAME/repository-name.git ```
then ``` cd repository-name ``` ### 2. Share with Your Mentor **Add mentor as collaborator:** 1. Go to your forked repository on GitHub or Gitea 2. Click Settings → Collaborators → Add people 3. Enter your mentor's GitHub or Gitea username or email ### 3. Set up Mirrors if You Have Restricted Internet Connection If you're behind a firewall or have restricted internet access, configure Maven to use mirror repositories. **For Windows:** - Location: `C:\Users\YourUsername\.m2\settings.xml` **For macOS/Linux:** - Location: `~/.m2/settings.xml` (the `.m2` folder is in your home directory) **Place this configuration in `settings.xml`:** ```xml devneeds-maven DevNeeds Maven Mirror https://maven.devneeds.ir/ central ``` **Reload Maven configuration:** Click on the Maven tool window → Click "Reload All Maven Projects" button (circular arrows) **If mirrors still don't work:** Contact your mentor with details about your network setup (proxy, firewall, region). They may provide institution-specific mirrors. ### 4. Unit Tests - In the test folders there are some unit tests using junit library that you and your mentors will use in order to test the correctness of your program. - You can run the file or individual functions to see the results of the test in IntelliJ IDEA. ### 5. Create a `develop` branch ```bash # Create and switch to the develop branch: git checkout -b develop # Verify you're on the develop branch: git branch # You should see "* develop" in the output ``` ### 6. Complete the Tasks **Task 1: Implement MainExercises.java** - Open `src/main/java/MainExercises.java` - Implement the following methods based on the comments: ```java // Method signature you'll find: public char[][] generateTriangle(int n); public int[] spiralTraversal(int[][] values, int rows, int cols); public int[][] intPartitions(int n); ``` **Task 2: Implement BonusExercises.java (Optional)** - Open `src/main/java/BonusExercises.java` - Implement bonus methods for extra credit **Task 3: Make all tests pass** - Run the tests frequently as you implement each method - Each test file under `test/java` should execute without failures **Project structure reference:** ``` src ├── main │ ├── java │ │ ├── MainExercises.java # REQUIRED: Implement all methods │ │ ├── BonusExercises.java # OPTIONAL: Extra credit │ └── resources └── test └── java ├── MainTestPartitions.java # MUST PASS ├── MainTestTriangle.java # MUST PASS ├── MainTestTraversal.java # MUST PASS ├── BonusTestDates.java # OPTIONAL ├── BonusTestEmail.java # OPTIONAL ├── BonusTestPalindromes.java # OPTIONAL └── BonusTestPasswords.java # OPTIONAL ``` ### 7. Commit Your Work Locally **Stage and commit files:** ```bash git status git add src/main/java/MainExercises.java git add . git commit -m "Implement intPartitions method" ``` ## 8. Push to Remote Repository ```bash # First, ensure you're on the develop branch: git branch # Should show "* develop" # Push to remote git push origin develop ``` ## 9. Create a Pull Request to YOUR Own Repository **Important:** Create the pull request in your OWN forked repository (not the original/main classroom repository). ### Step-by-Step Pull Request Process: **Step 1: Navigate to your forked repository on GitHub or Gitea** ``` https://git.meshcomp.ir/YOUR_USERNAME/repository-name ``` or ``` https://github.com/YOUR_USERNAME/repository-name ``` **Step 2: Create a new pull request** - Click on **"Pull requests"** tab (top navigation) - Click the **"New pull request"** button **Step 3: Configure the pull request branches** ``` base: main ←── compare: develop (your main branch) (your develop branch) ``` **Important settings:** - **base repository:** `YOUR_USERNAME/repository-name` (your fork) - **base branch:** `main` - **head repository:** `YOUR_USERNAME/repository-name` (same fork) - **compare branch:** `develop` **Step 4: Create the pull request** - Click **"Create pull request"** button - Add a title: `"Complete assignment - ready for grading"` - Add a description: ```markdown ## Assignment Submission ### Completed Tasks: - [x] All MainExercises implemented - [x] All unit tests passing - [x] Code follows Java conventions Ready for review and grading! ``` **Step 5: Final submission** - Click **"Create pull request"** - Share the pull request link with your mentor ## 10. Mentor Reviews and Grades Your Project ### What your mentor will do: 1. **Review the pull request** in your repository 2. **Run the unit tests** to verify your solutions 3. **Check code quality** (naming conventions, comments, efficiency) 4. **Merge the pull request** if everything is correct: - Click **"Merge pull request"** button - Confirm with **"Confirm merge"** ## Prerequisites Before starting, ensure you have: - **Basic knowledge of Java** (variables, loops, conditionals, arrays, methods) - **A good grasp of Git commands** (clone, add, commit, push, branch) ## Getting Help - **Mentor contact** - **Git documentation:** https://docs.meshcomp.ir/git --- Good luck, and happy coding!