Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Multi-repository source code management command-line tool.
JavaScript

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
conf
examples
lib
test
.bob.json
.gitignore
.npmignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
avatar.jpg
package.json

README.md

Repoman Build Status Dependencies Status

Avatar

Multi-repository management command-line tool.

This is handy when you're working on multiple SCM repositories and/or on multiple computers. E.g. rather than updating each repository one by one, it's easier to just run repoman get and update all of them in one go. Rather than checking for uncommitted local changes one by one, it's easier to just run repoman changes and check all in one go. And if you often switch between multiple computers, simply use the same .repoman.json file on those computers and easily manage the same set of repositories.

If you are a GitHub user, you can use Repoman to clone all of your repositories on GitHub in just two simple commands.

Installation

npm install -g repoman

Usage

Create sample .repoman.json configuration file:

repoman config

Create .repoman.json containing GitHub projects of a user:

repoman --github-user cliffano config

Create .repoman.json containing GitHub projects of an organisation:

repoman --github-org jenkinsci config

Create .repoman.json containing GitHub projects of multiple users and organisations:

repoman --github-user cliffano --github-org jenkinsci,github config

Initialise local repositories:

repoman init

Update local repositories with changes from remote repositories:

repoman get

Display the changes in local repositories:

repoman changes

Update remote repositories with changes from local repositories:

repoman save

Delete local repositories:

repoman delete

Delete non-Repoman local repositories:

repoman clean

Remove uncommitted changes from local repositories:

repoman undo

Execute custom command against local repositories:

repoman exec 'touch .gitignore; echo "Created {workspace}/{name}/.gitignore file;"'

Override default .repoman.json configuration file:

repoman -c somerepoman.json init|get|changes|save|delete|clean|exec

Repoman uses the following SCM command mapping, it currently only supports Git and Subversion:

Repoman Git Subversion
repoman init git clone {url} svn checkout {url}
repoman get git pull svn up
repoman changes git status svn stat
repoman save git push origin master svn commit -m "Commited by Repoman"
repoman undo git stash + git stash clear svn revert -R .

.

Configuration

Repositories can be configured in .repoman.json file:

{
  "couchdb": {
    "type": "git",
    "url": "http://git-wip-us.apache.org/repos/asf/couchdb.git"
  },
  "httpd": {
    "type": "svn",
    "url": "http://svn.apache.org/repos/asf/httpd/httpd/trunk/"
  },
  "node": {
    "type": "git",
    "url": "http://github.com/joyent/node"
  }
}

Type property is optional. If not provided, Repoman will try to determine the type from the URL by checking the existence of keywords: git, svn, subversion. If type can't be determined from the URL, it defaults to git.

Repoman will choose which configuration file to use in this order:

  1. Any file specified in -c/--config-file flag
  2. .repoman.json file in the current directory
  3. .repoman.json file in home directory (process.env.USERPROFILE on Windows, process.env.HOME on *nix)

Colophon

Something went wrong with that request. Please try again.