Project

stg

0.0
The project is in a healthy, maintained state
Stg is a version control system built on an architecture inspired by git's but in the great language of ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

~> 1.1
 Project Readme

Stolen Git

Have you ever wanted to use Git but it's too good?

What is stolen git? \ Why?

Stolen git is well... you get it. I'm building a mini git clone to learn version control and get comfortable with ruby.

Honorable mention: @penguinencounter (most hostile-constructive comment)

Note

Stolen-git runs on unix systems (mac, linux) or WSL on windows only. Native windows support is non-existent in the ruby world

Usage

Run stg init once in a project before using the other commands. Stolen Git stores its data in .stolen-git/ and tracks files through its own index.

Command Description Options
init Initialize .stolen-git/ in the current directory. N/A
stage <file...> Add files or directories to the Stolen Git index. Directories are staged recursively. N/A
commit Save the current indexed state as a commit. -n, --name NAME
-d, --description DESCRIPTION
diff Show differences between the working directory and the last commit. N/A
log [limit] Print commit history. Pass a limit to show only the latest entries. N/A
reset [commit_id] With no id, restore working files from the index. With an id, restore that commit and move the current branch pointer. N/A
checkout <name> Check out a branch by name. N/A
checkout -c <commit_id> Check out a commit without moving the current branch pointer. -c, --commit
branch [name] List all branches, or create a branch when a name is provided. N/A
help Print the command list. N/A

For more detail on staging, committing, and reset behavior, see COMMANDS.md.

Installation

  1. Make sure you have Ruby installed on your system. You can check by running:

    ruby -v
    

    (If you don't have Ruby, visit ruby-lang installation to get set up. For windows visit ruby windows installer)

  2. Install the Gem
    Run the following command in your terminal:

    gem install stg
    
    # you may need administrative permission, in this case
    sudo gem install stg
    

Run stg to verify your installation

Examples

Note

You have to initialize with stg init for any of the other commands to work

Start a new project

stg init
stg stage .
stg commit -n "Initial commit"

Save a file change

stg stage lib/stg/actions.rb
stg commit -n "Improve reset validation"

Inspect history

stg log # Show 5 logs and waits for user confirmation to continue
stg log 3 # Shows last 3 commits in the branch and closes

Discard unstaged working changes

stg stage README.md
# edit README.md again
stg reset

README.md is restored to the version stored in the index (a.k.a last version of the file you staged).

Reset to a previous commit

Warning

stg reset <commit_id> is destructive. It moves the branch pointer back and can make later Stolen Git commits unreachable. Use stg checkout -c <commit_id> if you only want to inspect an older commit.

stg log # shows all commits with commit_id next to the word commit in green
stg reset <commit_id>

Help

stg
stg help