Csc3412 assignment - a basic description of git and how it


Assignment -

Instructions - This assignment consists of 3 questions each of equal value. They consist of common tasks required of a system administrator-tasks I have had to do at some time in the past. Be aware that some questions require that you use the Virtual Machine supplied for the course. The question will clearly state that the course Virtual Machine must be used, if it doesn't then you are free to use your favourite flavour of UNIX.

Question 1 -

A research group at your institution wants to incorporate revision control into their project so they can track the user changes made to their research code.

The main software package they use is "rebound"5, a high precision integrator for studying the long-term stability of planetary systems, the orbital evolution of comets, asteroids or meteoroids, and simulating planetary accretion.

The revision control system they wish to use is Git6, as it is employed by their collaborators (and is used by the software developer). They have come to you to write a Git HOWTO using the Linux Git command-line interface and with explicit examples using the Rebound code base. All work on the code will be done on the institution's Linux HPC, so all user repositories will be local to that machine. The "master" repository for the local version of the rebound code will be on the HPC in the directory /home/Planets/rebound7. This directory is readable and writeable by the Unix group "rebound". All researchers using the code are in that group.

The HOWTO needs to cover the following topics:

  • A basic description of Git and how it differs from other revision control systems, such as Mercurial, SVN, rcs, darcs, etc.
  • A short description of the user's basic work-flow when using a Git repository.
  • How to initialise a Git repository for an existing code base. In this case the master code in the directory /home/Planets/rebound.
  • How to clone an existing master Git repository to a local user Git repository.
  • How to add new files and modified files to the local user Git repository.
  • How to recover a particular version of a file from the local user Git repository.
  • How to check the status of the local user Git repository.
  • How to view the change history of the local user Git repository.
  • How to push local user Git repository changes back to the master Git repository.
  • How to pull changes from the master Git repository into the local user Git repository.
  • What to do if a pull or a push fail because Git cannot merge your changes with the master Git repository.
  • Permissions that must be set on the master Git repository so that it can be cloned by users in the research group.

Notes:

a. The purpose of every Git command used must be explained.

b. The options used for every Git command must be explained.

c. Every Git command mentioned must show an example of the command using the Rebound code base.

d. Every Git command example must include the command output.

e. The code in the directory /home/Planets/rebound is the Master and all users are pushing their local changes to the master, and pulling other peoples changes from the master to their local copy.

f. The Rebound code is used by the USQ Astronomy group to model the dynamics of exo-planetary systems. A typical modelling sequence requires running the code a million times with each run integrating the system forward in time a million years and log if the system is stable or unstable (a planetary collision or ejection).

g. The "git" packages are not installed on the virtual machine, they will need to be installed if you plan to use it to do this question. To install any packages the guest NAT network which connects the guest OS to the Internet through the host's Internet connection must be brought up. To "bring-up" the NAT interface see the manpages ifup(8) and interfaces(5).

Question 2 -

Authentication under modern Unix systems is handled by the Pluggable Authentication Module (PAM) system. In about a page and in your own words explain the PAM system as it is implemented on a Linux distribution and why it was introduced.

Using the login service file found in the course virtual machine (see /etc/pam.d/login) as an example, explain how a service is configured and discuss the implications of each configuration line. Your explanation should include discussions on the following:

  • what is the module-type parameter,
  • what is the control flag,
  • what does it mean that the service file is a stack,
  • what is a PAM module.

Notes:

a. Be aware that there are subtle differences between different Unix distributions-the question explicitly states discuss the Linux version only!

b. The topics above are linked to each other and the question, they are not independent of each other. They are provided as a minimal guide only. Do not simply write an unconnected paragraph on each without linking the concepts together. Marks will be lost if your answer appears to be cut and pasted from the Internet.

c. List all resources used in answering this question.

d. Please do not fall into the trap of answering the question by using unexplained technical terms-you must explain all technical terms used especially if they have not been used anywhere else in the course. Assume you a writing for someone who knows nothing about PAM.

Question 3 -

Your users require standardised syncing software, but due to security constraints and possible intellectual property rights, syncing to off-site private servers is not an option. The software must also be supported under Windows, macOS, Linux, Android and iOS.

The software being mooted is "syncthing". You have been asked to test the latest version of syncthing (version 0.4.44 or 0.4.45) and write an evaluation report.

The report must contain the following:

  • A discussion of the syncthing application: how it is different from other syncing software, how it is configured, what information is required for configuration, how it actually synchronises data, what data is synchronised.
  • Included with your discussion of syncthing you must include examples of syncthing being installed, configured and used.
  • The environment used for the examples must be the course virtual machine and its host. This is important, as the guest machine does not have a windowing environment and the host will. So your discussion must include how to install, configure and use syncthing in a non-windowing environment (such as a server).
  • Discuss, with examples, the system and user systemd configuration required on the virtual machine, so that the user's instance of syncthing will start running when the user logs in (or the system boots) and continue running after the user has logged out.
  • The report with examples should be approximately two pages.

Notes:

a. Do not use any package manager, but download the compiled binaries from the syncthing Web site. You have been asked to test the latest version - different distributions will have older and different versions. For stability you want to run the same version across all systems.

b. For this question syncthing must be installed on the course virtual machine and its host.

c. To "bring-up" the host-only interface (the network that links the guests to the host) see the man-pages ifup(8) and interfaces(5)

d. It is important to understand how "syncthing" can use port 8384 for both configuration and data transfer. You need to understand which interface handles configuration and which handles data transfer.

Once you understand how "syncthing" communicates for configuration and for data transfer, manually changing the "syncthing" configuration file so that the "virtual" machine syncthing can be configured via a web client on the host, is straight forward. In the syncthing configuration file only the tag need be modified by hand.

Attachment:- Assignment File.rar

Request for Solution File

Ask an Expert for Answer!!
Operating System: Csc3412 assignment - a basic description of git and how it
Reference No:- TGS02683568

Expected delivery within 24 Hours