Reading all 3 sections before starting your work will make life a lot easier for the next few weeks!
- Jump here for the easiest Phase 2 start-up guide
- Jump here to get information on how this project works
- Jump here if you want installation instructions
GITS, or Git Simplified, is a tool designed to help make git commands easier and more intuitive to use for beginners and advanced users alike. This first section should help you familiarize yourself with this project, so you can spend more time improving/adding features instead of trying to learn how our code works.
The structure of our repo is as follows:
codecontains all of our working code. The structure is as follows:gits.pyis where it all starts. For each feature we support, we have a few lines that call the correspondinggits_<commandname>.py.gits_<commandname.>pyis a file describing in detail what each supported command should do. E.g.gits_clone.pyto clone, andgits_add.pyto add.
configurationscontains the files required to install/set-up GITS on your system. Further instructions can be found below.docshas all other supporting documentation.testcontains all of our test cases.
GITS has support for many commonly used git commands such as add, commit, and push. The main way of making progress in this project is to expand the range of commands we support.
- To modify how a command is called, you need to edit
gits.py. To change what a command does, you need to editgits_<commandname.>py. - To add a new command, you need to add corresponding calls and imports to
gits.py, and additionally create agits_<commandname.>pyto go with it. - Update or add new test files depending on what changes you made.
After forking this repository onto your own account, here are some tasks that you can start off with.
-
Organizational tasks
- Create your own version of Phase 2 project board.
- Copy issues from this repo to your fork. (Forking doesn't carry over issues and projects, so do them manually)
- Create your own account for third party services (Zenodo, Codecov, etc) and also update their badges in the readme.
-
Development tasks
- Check the
good first issuelabel for easy settling-in tasks. - Add more basic commands to GITS.
- Add more simplified functionalities to GITS.
- Add more test cases for each command / funcionality.
- Convert existing functionalities into interactive ones (similar to
gits_rebase.py).
- Check the
Please note that this will run directly on Linux/MacOS. If you are running it on Windows, you will need to install some bash terminal for executing it. We recommend git bash, that comes bundled with git during installation. This works best as having git installed is a prerequisite for running this tool anyway.
Once you have git installed, follow these steps:
-
Clone the GITS repository
-
Navigate inside GITS folder and enter the following command:
pip install -r requirements.txt -
Navigate inside the configurations folder and run the folllowing commands:
-
If your main method of running
.pyfiles ispython3 ..., then run the following command:
chmod +x python3_project_init.sh
./python3_project_init.sh
If you just usepython ...then run the following command:
chmod +x project_init.sh
./project_init.sh -
Update the bashrc file:
source ~/.bashrc -
Run
gits hello_worldfrom any directory. If you end up getting a welcome message you're good to go!
If you wish to reset the project, perform the following actions.
- Go to your home directory (default is
users/name/) - Delete
.gitsfolder - Open
.bashrcand delete the lines pertaining to GITS. - Now you can repeat the installation guidelines to get a fresh version of GITS.
This section describes all the features of this project that you would want to be aware of.
We hope for GITS to be used as a complete alternative to git (for most day-to-day use cases). This means two things:
- We need to simplify complex actions that require multiple git commands in a sequence.
- We also need to support basic git commands, so you won't have to remember whether to use GITS or git everytime you're programming.
A full list and explanation on everything we support can be found in supported_commands.md.
We heavily rely on the argparse module, and the documentation for add_argument() method will be extremely helpful.
This repository has many features that make the development process easy and fun. Here's a quick overview:
Contrary to the popular Travis CI, We've set up the repository architecture to use GitHub actions. If you need any more automation on running test files during pushes or pull requests, we've got you covered! Editing this is easy, and you have the added support of the GitHub marketplace for many extensions you can add in few simple steps.
We have tried to write as much documentation as possible. You can use pydoc to go through the documentation. For example if you want to go through all the documentation for all files in code/ directory, do the following:
- Switch to the code directory by using
cd code - Run the pydoc browser-based server
python3 -m pydoc -b
This will open up a browser window and you can see all the files. You can click on a particular file to access the documentation associated with that file.
We are using flake8 / pep8 as our style checker and code analyzer. While contributing to this project, make sure you conform to norms dictated by flake8. While our GitHub actions automatically run flake8 tests, you may also run it locally to check for inconsistencies before pushing your code.
- Install flake8
python -m pip install flake8to install flake8 for your default python installation.- Or,
python<version> -m pip install flake8to install it to a specific version.
- Using Flake8
- To start using Flake8, open an interactive shell and run one of the following,
flake8 path/to/code/to/check.pyflake8 path/to/code/
This repository is made for CSC 510 Software Engineering Course at NC State University.
- Rohan Prabhune | [email protected]
- Swetha Gavini | [email protected]
- Arjun Madhusudan | [email protected]
- Ramya Sai Mullapudi | [email protected]
- Krishna Saurabh | [email protected]
The same 5 names consist of development, as well as continuous support. Feel free to reach out to any of us if you ever find yourself in a deep dark hole leading nowhere.

