Coder Social home page Coder Social logo

scooba's Introduction

Scooba

Scooba lets you explore the history of a new codebase starting with the earliest available commit and navigating forward at your own pace. It is meant to be used for educational purposes or for onboarding onto a new project, giving you the smallest possible incremental changes to go through one chunk at a time, along with the related technical decisions that were made.

You can start from the oldest commit by default, or specify a target commit as the starting point. From there, you can move forward or backward in history. At every step, the changes introduced since the last visited commit appear in git's index, which makes them git diff-able, and allows them to be piped into visual diff tools or other code visualization tools.

Installation

You will need to have Docker and make on your host.

To run the tests, you will also need to pull the mock repository in fixtures/origin. Git ignores .git subdirs, so the fixtures have been defined as a submodule available at https://github.com/alexyans/scooba-test-fixtures.git . To clone the fixtures along with the parent repository, you need to use the --recurse-submodules flag as follows:

$ git clone --recurse-submodules [GITHUB URL]

Running make will set up the Docker environment and produce the scooba binary.

Running

Scooba depends on a couple of shared libaries that are produced during the make build step for easier development. To force the linker to use the version in the lib/ directory, you need to call the binary like so:

LD_LIBRARY_PATH=/path/to/lib/:$LD_LIBRARY_PATH scooba

Command reference

scooba [dive | d] [-c <commit_hash>] - Checks out the oldest historical commit and sets the stage for everything else

  • -c, --commit <commit_hash> : Start from a target commit instead of the chronologically oldest

scooba [forward | f] - Visit the next commit in topological order (children of the current commit)

scooba [backward | b] - Visit the previous commit in topological order (parent of the current commit)

Roadmap

  • Associate commit range to PR and Issue threads
  • Extend navigation
  • Handle repository migration
  • Make default step-through smarter (for instance, skip over commits that fix typos or edit the readme)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.