Skip to content
forked from pvinoda/GITS

GITS repository of SE23_Team71. New features being added as part of Phase 2 submission.

License

Notifications You must be signed in to change notification settings

kruthik-jt/GITS

 
 

Repository files navigation

GITS

GIT Simplified

GitHub

Build Status codecov YouTube Video Views

DOI

GitHub issues GitHub closed issues

Lines of code

The What??

About GITS

GITS simplifies the often cumbersome and confusing commands of git to provide a user friendly experience to beginners in version control, as well as making it time efficient for proficient users. GITS also adds multiple features on top of git functionalities to provide a richer experience.

The Why ??

Motivation

Git is the most popular version control system used by developers all around the world. Given its ubiquity, most newbies find it daunting to understand some of the commands in Git. We aim to simplify some commands by make them more powerful by combining related commands into one intuitive command. We also alleviate confusion in some commands by making them more intuitive. We hope that these features will help amateurs as well as experienced developers to use git.

Key features

  1. Interactive GUI

    We provide a simple yet effective GUI which takes in commands as input and then executes them. This makes it easy for users unfamiliar with the terminal.

  2. Advanced Commit Functionality

    We provide a functionality to automatically add most used commit messages. Simplifying the usage of git commit command

  3. Squash Command

    We introduce the gits squash command that combines changes of last N commits and squash them into one. The number N can be provided using the -N argument, and the combined message for the commit is provided using the -M argument

  4. Advanced Visualisation Capabilities

    We introduce gits viz command that provides the git log functionality along with the feature that allows users to download a Directed Acyclic Graph Representation of the hierarchy of tags and branches

Potential Ideas for Phase 3

  1. Enhancing the GUI to include advanced functionality

    Contributors can think of enhancing the GUI implemented here to include branch information & commit history. They can also eschew the use of commands by introducing GUI elements to perform the functionality.

  2. Suggestive command line interaction

    A good addition to the project would be to provide suggestive messages to the user when they enter a wrong or unintended command. This functionality can be extended to the oft misinterpreted/confusing commands.

  3. Make the project more accessible by making GITS commands accessible to the local system.

    The lacunae that exists currently is that we need to clone the repository for each project to utilise GITS functionality. A feature that can be added is to make this global to the system where the repo is cloned.

Installation for Linux

  1. Clone GITS Repo

  2. From the root directory run the following command

    pip install -r requirements.txt
    
  3. Go to configurations directory and run the following command

    If you are working on Linux system with a bash terminal or a Windows system using Windows subsystem for linux:

    bash project_init.sh
    

    If you are working on Linux system with a fish terminal:

    fish project_init.fish
    
  4. Source the bashrc file

    source ~/.bashrc
    

    Note: Open the .bashrc file in User home directory to make sure that the alias command does not have any white spaces in the path. If so, rename the directory to remove the white spaces and re-run the setup.

Installation for Windows

  1. Clone GITS Repo

  2. From the root directory run the following command

    pip install -r requirements.txt
    
  3. Currently, this project cannot be run on Windows. You need to make use of WSL to work on this project in Windows although this fix would only work for systems running Windows 10. If you are using another version of Windows, using a virtual machine might be preferred.

    Please refer this link to enable WSL : https://docs.microsoft.com/en-us/windows/wsl/install-win10

Documentation

Functionalities Implemented

These are the functionalities that we have implemented. The links are updated to point to the individual documentation.

  1. gits profile
  2. gits rebase
  3. gits stash
  4. gits squash
  5. gits viz
  6. gits reset
  7. gits upstream
  8. gits super reset
  9. gits commit
  10. gits create_branch
  11. gits logging
  12. gits undo
  13. gits untrack
  14. gits track
  15. gits delete
  16. gits sync
  17. gits switch
  18. gits status
  19. gits branch
  20. gits diff
  21. gits init
  22. gits merge
  23. gits push
  24. gits pull

Pydoc implementation

For easier access of Documentation use pydoc, run the following command, it will take you to a browser where you can view the documentation for all the files and directories.

cd code
python3 -m pydoc -b

This repository is made for CSC 510 Software Engineering Course at NC State University.

Use these Commands to harness the power of GITS

Use these commands to test GITS

  • Create a test repo to test all the functionalities.
  • Set the git profile name and email to "dummy_name" and "dummy@name.com" respectively. Once they are done,switch it back to the original ones.
  • Create two branches with name: branch1 and branch2.
  • Add some dummy text files to branch1. Commit these changes with an appropriate commit message.
  • Switch to branch2 and add some text files to this branch.
  • Use gits viz command without any arguments to visualize the commit history on the terminal
  • Compare and contrast the output with gits viz command with arguments. Understand how the image depicts commit history and branch hierarchy.
  • Make multiple changes to the file and use gits commit to understand the power of advanced commit functionalities of gits.
  • Use gits GUI tool to execute the above commands.
  • Make multiple commits and use gits squash to squash all the commits into one single commit.

How to judge GITS??

  1. Does this improve the way you work with git??
  2. Did the process of creating a branch, committing, pushing changes and visualising the branch felt easier ??.
  3. Has the GUI made it easier for you to interact with your repo.??
  4. Has advanced commit functionality helped you in committing efficiently?? Does this functionality make your commit history more intuitive and understanding

About

GITS repository of SE23_Team71. New features being added as part of Phase 2 submission.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 98.6%
  • Shell 1.3%
  • Dockerfile 0.1%