Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

multi-repository monitoring and shell helper tool to ease development across multiple dependent repositories

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 play
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 Guardfile
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 TODO
Octocat-spinner-32 space.gemspec
README.md

Space Build Status

Space is a multi-repository monitoring and shell helper tool to ease development across multiple dependent repositories.

Here's a screenshot of my setup (iterm, tmux, vim, space) for working on travis.

tmux based travis workspace

The thing on the right side is an iterm split pane running space. The main screen is take by a tmux session that has a vim and a zsh pane. (I use an iterm pane for space so that I can switch between tmux windows but keep the space view.)

The space view gives an overview of:

  • current branch
  • current commit
  • bundler local flag
  • git status (clean, dirty, ahead)
  • bundle status (bundle check)
  • dependencies

E.g. one can easily see that:

  • repos 1-5 are using the bundler local flag, while 6-7 are using remote references
  • repos 4, 6, 7 have dirty working directories
  • repo 6 is 1 commit ahead of origin
  • the bundle in repo 7 is not installed

Space checks for each dependency listed in a repo's Gemfile if the bundle is locked to the hash that is currently checked out locally and display that status information.

Also note that the repo numbers are referring to the tmux windows where possible.

This screencast is from a very early version but still mostly valid. It also demonstrates how screen can be used to run commands on multiple repositories at once:

screencast

Installation

gem install space

Add a space config file. This is what the ~/.space/travis.yml file for the setup above looks like:

base_dir: ~/Development/projects/travis
repositories:
  - travis-ci
  - travis-hub
  - travis-listener
  - travis-core
  - travis-support
  - travis-worker
  - travis-build

Then run:

space [project]

e.g. space travis.

Usage

Commands are always run for a given scope of repos. If no scope is specified then commands are run for all repos in the project.

Scoping/unscoping

One can set a scope like so:

> [name|number]  # scope to the given repo and all of its deps, can scope to multiple repos
> -              # unscope

Builtin commands

> [refresh|!]    # refresh
> r[emote]       # use remote repos
> l[ocal]        # use local repos

Running shell commands across all repos

> git co -b foo  # run this in all repos

Scoping a single command

You can specify a scope for a single command. The command is then run within the specified repos.

> 1 2 3 bundle update # run the command in the repos 1, 2, 3
Something went wrong with that request. Please try again.