Skip to content

estebanpuyanas/FVT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS3520 Class Proect: File Versioning Tracker

For our Programming in C++ class proect we decided to build a simplified of a Version Control System (VCS). Inspired from famous VCSs like Git and RCS. Our VCS works entierly through the command line interface (CLI) and is 100% written in C++!

Like other VCSs, ours allows the user to do anything from creating new directories/files, comitting updated versions of files, logging and revising a repository's history, destroying files/repositories, and managing all repositories. In fact, most of the commands for our VCS are dierect mirrors of their Git equivalent. Here is a table comparing them:

Our Command Git Equivalent Description
create git init Initializes a new repository.
destroy N/A Deletes the repository (Git doesn’t have a direct equivalent).
commit git commit Records changes to the repository.
log git log Displays commit history.
checkout git checkout Switches to a specific commit or branch.
quit N/A Exits the program (Git doesn’t require this).
clear N/A Clears the terminal screen (not a Git command).
invalid N/A Represents an invalid command.

One major difference between Git and us is that while Git does not require flags to specify whether the given command should be executed on a file or directory specifically (i.e. create a file or destroy a directory), here is the table of flags and their explenation:

Our VCS works in a more localized manner than git, following the workflow of RCS which simply creates a commits folder inside the directory the program is initialized at with the create command. This commits contains compressed (.zip) files which when expanded creates a folder containing the snapshots of the files at the moment the commit was made, alongside a .txt file outlining the changes made at that commit relative to the one before it.

Flag Description
-repo Specifies an operation on a repository.
-file Specifies an operation on a file.
-dir Specifies an operation on a directory.
-none No flag is used.
-invalid Represents an invalid flag.

continue expanding as necessary.

Instructions

Will Usher's SDL 2.0 Tutorial can be found here: https://www.willusher.io/pages/sdl2/.

This starter code has done Lesson 0.

The Makefile is set up to build all .cpp files in the src folder and create executables in bin/main.

General structure:

  • src: for source (.cpp) files, everything here will get compiled/linked (src/main.cpp provided)
  • test: for test source code (using CxxText, expected to be in extern/cxxtest-4.4)
  • include: for header (.hpp) files, looked in for #include
  • res: for resources (e.g. images)
  • build: where created intermediate (e.g. object) files go
  • bin: where created executables go
  • doc: where generated documentation (Doxygen) goes

Configurations:

  • rel: for speed
  • deb: for debugging
  • cov: for code coverage (with gcov)
  • prf: for performance analysis (with gprof)

About

The File Versioning Tracker (FVT) is the smaller and simpler version of Git and RCS. FVT supports basic repository/file commands like creation, deletion, branching, and committing.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors