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.
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.
-
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.
-
We provide a functionality to automatically add most used commit messages. Simplifying the usage of git commit 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
-
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
-
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.
-
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.
-
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.
-
Clone GITS Repo
-
From the root directory run the following command
pip install -r requirements.txt
-
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
-
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.
-
Clone GITS Repo
-
From the root directory run the following command
pip install -r requirements.txt
-
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
These are the functionalities that we have implemented. The links are updated to point to the individual documentation.
- gits profile
- gits rebase
- gits stash
- gits squash
- gits viz
- gits reset
- gits upstream
- gits super reset
- gits commit
- gits create_branch
- gits logging
- gits undo
- gits untrack
- gits track
- gits delete
- gits sync
- gits switch
- gits status
- gits branch
- gits diff
- gits init
- gits merge
- gits push
- gits pull
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 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.
- Does this improve the way you work with git??
- Did the process of creating a branch, committing, pushing changes and visualising the branch felt easier ??.
- Has the GUI made it easier for you to interact with your repo.??
- Has advanced commit functionality helped you in committing efficiently?? Does this functionality make your commit history more intuitive and understanding