Skip to content

2. Project management

This week I was worked on defining my final project idea and started to getting used to the documentation process. These are the main links which help me during the git lab creation and website development. Link to the tutorial that I have to follow is to learn Git Basics

Tutorial followed

I am starting from nothing, so I decided to start with Basics. Git is an open source distributed version control system. In details, control system, version control system and distributed version control system. Git is a content tracker; it can be used to store content. While version control system defined as, code which is stored in Git, it keeps the change when more code is added. More developer can add code parallel. It provides features like branches and merges. Distributed version control system defines that, Git has a remote repository which is stored in a server and local repository which is stored in the computer of each developer, that means code is not just stored in the central server. Then I have a question what is it needed? I found that in real life any projects have multiple developers working in parallel. Hence, it is important to avoid conflicting code written by different developers. Version control allows the developer to revert and go back to an older version of the code. One more point is that several projects running parallel involve the same codebase. In such a case, the concept of branching in Git is very important.

My studies update

I have zero knowledge of web development and coding. Hence, I decided to use the website template already shared in my account. I am learning little by little. I am still in the beginner’s trouble. Not able to follow the many things at a time. However, I have confidence and interest to learn new things. In the beginning, I have installed software such as Git, Mkdocs and Python 3.7. After that, I learn about workspace, local repository and remote repository. I have created my workspace in my office computer drive d/JOBIN PAPER/Fab Lab 2019/jobin-varghese and followed by learned how to develop public and private key and uploaded in gitlab.

Major problems during the learning process

  • Problem: In the beginning, I faced several problems such as acess my working directory in Git bash window.

  • Solutions: Properly place the command to git bash.

Examples are shown in the figure below,

SSH key generation and its updating to gitlab

The public and private key generated by using the commands in git bash command window

ssh-keygen -t rsa -C "jobin.var@gmail.com" -b 4096

The pair of the public and private key stored in my personal drive. Figure is shown below,

See the above screenshot of my public SSH Key and the keys are stored to the computer. The public key was copied from id_rsa_pub file that is previously generated. The URL paste to Gitlab Site in the preferences the SSH keys has the place were copied (Open https://gitlab.fabcloud.org/profile/keys) and the SSH Git address was copied from repository page Link. The SSH git address was copied to the Git bash with command git clone git@gitlab.fabcloud.org:academany/fabacademy/2019/labs/oulu/students/jobin-varghese.git I copy and paste the public part of SSH key to my profile-SSH keys a place where add the key and press add key button.

See the figures below,

See the Git file structure to the used computer

clone, pull, add, commit, status, push

The clone-pull—add—commit—push-status are the basic GIT commands to interact with local and remote repositories. I have edited the different files in the working directory (assignments, home page, projects etc) one by one using notepad++ and saved. After that I used the following git commands to store those changes in my local and remote repository: add, commit and push. The detailed addressing of each command follows, The basic git flow chart is given below for further understanding,

  • Clone: The command git clone url It is a Git command line utility which is used to target an existing repository and create a clone, or copy of the target repository.

  • pull: The command git pull origin master is used to pull the changes from the remote repository, ie, jobin-varghese to the local and working directory in my system /d/JOBIN PAPER/Fab Lab 2019/jobin-varghese.

  • add: The command git add . groups changes in a temporary storagecalled index (or staging) area. All files in the index, are commited together to the local repository.

  • commit: The command git commit –m “mark the changes added” commit move changes from the working directory to the local repository. Commit any files that I have added with “git add .”, git commit just stores the changes in the stage area to the local repository.

  • push: The command push PUSH moves the changes from local repository to remote repository. The command git push origin master synchronizes your local master branch with the remote master branch.

  • status: The command git status is used to list the files that I have changed and those still need to add or commit.

The usage of the above commands are evident in the screenshot below,

Website creation and upload to the remote repository

Mkdocs is a static site generator used in python. I am using the files provided by fabacademy as starting point for my website design. The provided project is using the mkdocs-material template. Documentation files are written in Markdown and configured with a yml configuration file. I had to edit the configuration mkdocs.yml file. You can check the changes done in the yml configuration file in the following picture. Basically, I changed the properties site_name, site_description and site_author.

Docs folder contains subfolder about, assignments, files, images, projects and one index.md file. See the below figure in my personal website files.

My website name is JOBIN’S FAB. I have modified all “MD” files inside docs folder using Notepad++ editor to modify my website. Subfolder about contains agreement and index file. Index file represents about me page on the website. Assignments contain weekly assignment md files. Files contain my design files used in the each assignment. Subfolder images contain screenshots and figures used for the assignments and projects. Project details are described in the project files, final-project.md and sample-project.md. The index file present in the docs describes the homepages my Fablab 2019. I also copied and signed the student agreement in About -page.

Next, I started to update week01.md and week02.md pages to document the assignments. I am using GitLab editor for the text changes and the pictures I am adding via file explorer directly in my local repository.

After adding new pictures, I am doing git add, git commit and git push commands to make changes effective in the web site.

I used power point to reduce the image size from 1-5MB to 100-300Kb. Open an image in powerpoint and save as picture jpg in the images folder. Re-Insert the same image in powerpoint and save and replace it, which reduce the image size considerably without changing the clarity of the picture. See the figures below,

See my website screenshot below

Summary

This week we learn about web designing preliminary studies with our local instructor Ivan. I have to go through the previous year documentation to understand all workflow in the fab academy courses. Most part, I learned is to how to edit the mkdocs and how to organize a website for my fab academy course.