Fetching contributors…
Cannot retrieve contributors at this time
87 lines (61 sloc) 3.06 KB

RVM 2.0 work announcement

Work on RVM 2.0 has started, check the plan here:

To be able to do the RVM 2.0 work we need to stop working on RVM 1.x - this means no more feature requests will be accepted. Development on RVM 1.x will continue to provide bugfixes and support for new ruby versions as long as RVM 2.0 will not become stable. RVM is an open source project so any contributions are welcome - including new features pull requests - as long as they keep compatibility and do not break anything.

Common workflows

Adding support for new version of Ruby

Following files needs to be updated to add support for a new version of already supported Ruby interpreter. Please follow patterns used in those files and add entries in appropriate location. #3805 contains good example of the required changes.

  • config/known
    • update existing entry when minor version released
    • add new entry when major version released
  • config/known_strings - same rules as above
  • config/db - update only for stable releases
  • config/md5 - add new line with md5 hash of the interpreter source
  • config/sha512 - add new line with sha512 hash of the interpreter source

When listing interpreter source make sure that you link to the smallest archive variant (usually .bz2).

When release package does not include md5 or sha512 hashes you should download the source package and calculate it yourself. One of the ways to do that would be to use openssl command:

openssl dgst -sha512 FILE
openssl dgst -md5 FILE

Running RVM in local development environment

To test a local copy of RVM for development purposes simply enter the folder with the source and install it:

./install && rvm reload

If you don't want to destroy your working environment, you can select a different destination folder and easily switch between them:

./install --path ~/.rvm-dev
rvm switch ~/.rvm-dev           # development version
rvm switch ~/.rvm               # production version


Subtree is a a merge of another repository, it allows us to use external code, track it and simplify it's maintenance.

Configuration for subtrees:

git remote add bash_zsh_support
git remote add java_read_properties

Updating subtrees:

git pull --no-commit --no-ff --strategy=subtree bash_zsh_support     master
git pull --no-commit --no-ff --strategy=subtree java_read_properties master

It will leave code uncommitted so we can update

Adding new subtrees

Follow instructions in official git docs With the exception of <2> needing extra flag --allow-unrelated-histories:

git merge -s ours --no-commit --allow-unrelated-histories ...

Coding guidelines