Skip to content

Codebase Outline

Michael Hutchison edited this page Mar 18, 2019 · 11 revisions

Directory Structure:

  • .github/ GitHub configuration files
  • .vscode/ Visual Studio Code configuration files
  • media/ Transpiled TypeScript output of the web folder, and stylesheets
  • node_modules/ Required node modules installed by running npm install
  • out/ Transpiled TypeScript output of src folder
  • resources/ Media resources (e.g. icon and readme animations)
  • src/ Extension back end TypeScript files
  • web/ Webview front end TypeScript files

Extension back end

  • config.ts
    • Abstracts the Visual Studio Code workspace settings, providing default values for unset configuration variables.
  • dataSource.ts
    • Executes Git commands and parses output into the corresponding output objects
  • diffDocProvider.ts
    • Provides documents at specific commits, in order to view the commit file diff.
  • extension.ts
    • Registers the git-graph.view command, and triggers webview creation
    • Registers the text document content document provider for commit diff viewing
    • Manages status bar icon
  • repoFileWatcher.ts
    • Watches the current repository for file changes, triggering the view to refresh when needed.
    • Debounces file system events so that if multiple files change at once, only a single refresh is triggered.
    • Provides a mute/unmute mechanism so that git commands don't trigger an unnecessary view refresh.
  • repoFolderWatcher.ts
    • Watches the current workspace folders to detect when repositories are added or removed, triggering the view to refresh when needed.
  • statusBarItem.ts
    • Handles the creation of the Git Graph status bar item
    • Shows/hides the status bar item depending on the configuration setting and whether the active workspace contains any git repositories.
  • gitGraphView.ts
    • Manages the creation of the webview
    • Responsible for communication with the front end

Webview front end

  • main.ts
    • Renders the front end (e.g. controls, commits, context menus, dialogs, ...)
    • Responsible for communication with the back end
    • Manages event listeners
  • graph.ts
    • Graph generation and rendering
  • dropdown.ts
    • Custom dropdown element respecting the Visual Studio Code colour scheme

General Information:

Release Information:

Contributing Information:

If you have any questions about Git Graph, please chat with us on Discord!

Clone this wiki locally