Announcing virtualenv-multiver for Python Development

If you’ve worked with virtualenvs for Python before for development/testing, then you may have hit cases where you really wanted multiple versions of Python installed in your virtualenv. Which, you may actually have working, because virtualenv, in theory, supports this. In fact, you’re supposed to be able to do:

$ virtualenv -p python2.6 my-env
$ virtualenv -p python2.7 my-env

That’d be great, if it always worked. It doesn’t. When your virtualenv gets built, bin/python may end up being a link to bin/python2.7 (or what have you), or it may be the contents instead of a link. Subsequent installs may end up overwriting binaries, producing a python2.6 and python2.7that are both Python 2.7.

Oh and it gets worse. On Mac, with a standard Python install, these binaries actually end up invoking ../.Python, a symlink pointing to the system Python. This link is not versioned. So much for multiple Python versions in one virtualenv on the Mac.

A solution!

We fixed this. Now you can run a single command to get a working environment going, without messing with things or running into problems on the Mac. This is virtualenv-multiver.

Now, setting up an environment is as simple as:

$ pip install virtualenv-multiver
$ virtualenv-multiver my-env 2.6 2.7

Couldn’t be easier. This works both for new environments and existing ones.

This is a beta, so there may be some issues here or there. If this is useful to you, give it a try and let us know!

Read More

RBTools 0.7.5 is here!

RBTools 0.7.5 is now out and ready to install.

This is largely a bug fix release, focusing in part on improved compatibility with Windows, Git, Subversion, Mercurial, Perforce, and Team Foundation Server.

On Windows, RBTools will now first look in %HOME% to find any custom .reviewboardrc files, instead of only looking in the Application Data directory, which will be quite helpful with many system configurations. There are also fixes for using Mercurial on Windows.

Non-Git user? You’ve probably seen that annoying but harmless command not found: git error when posting a change. That’s gone now!

For Perforce users, posting submitted changes or files outside of the client view now work. This had regressed in an earlier release, but you should be in good shape now.

Subversion has seen some more Unicode fixes, plus fixes for rbt post --svn-show-copies-as-adds.

Along with all this, we’ve added a new feature for setting a custom search path for .reviewboardrc. You can set your $RBTOOLS_CONFIG_PATH to a list of paths to search, allowing you to make your version in $HOME take precedence over what’s in your repository, and allowing you to work with centralized collections of aliases in your organization.

See the release notes for the complete list of changes.

One more thing: We’ve simplified installation for those of you using pip to install. Our builds are now directly hosted on PyPI, meaning all you now need to do to upgrade is run pip install -U RBTools.

Read More

Introducing new special user permissions

As a team grows, it often becomes the case that more developers need to assume more specialized roles in the code review process. Not just that of developer and reviewer, but also that of a manager of sorts, helping to keep the review process going and to keep the process tidy.

We’re introducing a few new special user permissions, designed to give users a subset of an administrator’s abilities. These can all be set in the Team Administration page by clicking the pencil icon next to team member.



The first permission, “Can close or reopen review requests from other users,” enables a user to help keep the list of review requests tidy by toggling whether a review request is currently open. If you’re not auto-closing review requests, if you have review requests open from former team members, or if you’re managing an open source project on RBCommons, this can be quite handy.

The second permission, “Can edit review requests from other users,” allows a user to modify a review request on someone else’s behalf. They can upload diffs, edit fields, and so on. The changes currently appear as if they’re from the owner of the review request.

The final permission, “Can post review requests as other users,” is most useful for scripts. In cooperation with RBTools (using rbt post –submit-as), a script can post a review request on another user’s behalf, perhaps when a change is committed to a special branch, or after a sandbox operation passes.

We’ve been piloting these permissions with some projects for a while now. Please let us know how they work for you, and if you have any questions or problems.

Read More

A new stopwatch extension for Review Board

In any business setting, it’s nice to measure as many data points as possible in order to optimize processes. One common request we’ve had over the years has been the ability to know how much time people are spending on code reviews. This can be used to identify problems on both ends of the spectrum. If people are knocking out reviews in just a few seconds, they’re probably not giving the code the attention it needs to find the defects. Likewise, if code reviews are eating up too much time, it can point to problems of accumulated technical debt or the need for training or mentoring.

Stopwatch Extension

We’re working on a new extension that adds a “stopwatch” to the bottom-right of a review request. This can be toggled on and off, and the total time will be recorded in the review. This data is also available in the API for use by external tools, and we’ll be adding some nice reporting of this data to Power Pack.

Stopwatch Extension - Review header

Read More

RBTools 0.7.3 is out, with Unicode fixes and more

Have you been plagued by Unicode errors when posting changes? Subversion 1.7.x compatibility problems? SSL errors with self-signed certs on Python 2.7.9+? Well then, today’s release of RBTools 0.7.3 is for you! … and, well, everyone, really. There’s a lot in here you’re going to want.

First off, the Unicode fixes. We had some Unicode-related breakages in past releases, which have been almost entirely eliminated in this release. If you’ve hit any such error before, give 0.7.3 a try.

There are lots of compatibility and behavioral improvements for Bazaar, ClearCase, CVS, Subversion, Perforce, Plastic, and TFS. Patching, for instance, works a lot more reliably across the board. Subversion 1.7.x and lower should start working again as well.

It’s not all bug fixes, though. We have some new features and command line options:

  • rbt post --stamp will auto-stamp commits with the review request URL.
  • rbt patch -R can be used to revert a patch from a review request.
  • rbt land and rbt stamp now work with Perforce.
  • Perforce supports changesets with imported files from remote depots.
  • API caching behavior and cookie storage can now be disabled/changed for any command. Useful for hooks and other scripts.
  • SSL certificate verification can be disabled on Python 2.7.9+ by using --disable-ssl-verification.

Those are the highlights! For the complete list of changes, see the release notes.

But wait, we have a couple more announcements concerning our releases:

Better installation through pip and Wheels

We’re now officially releasing Python Wheel packages for RBTools, supporting the latest versions of pip. To install RBTools, simply type:

$ pip install --allow-all-external RBTools

(In the future, we’re hoping to eliminate the need for --allow-all-external.)

Signed releases

As of this release, we’re now signing all builds with our official PGP key. Using gpg, you can verify a build was produced by us by importing our public key and then verifying it against the .asc signature files from our downloads.

For example, to verify RBTools-0.7.3.exe was produced by us, download it along with RBTools-0.7.3.exe.asc and run:

$ gpg2 --recv-key 4ED1F993
$ gpg2 --verify RBTools-0.7.3.exe.asc

(Note that if it complains about the key not being certified with a trusted signature, it’s just because you haven’t signed our key. If you see that message, and the primary key fingerprint is 09D5 06DA BB62 A09E 891D A9F3 2852 91B3 4ED1 F993, it’s good!)

We’ll have documentation covering this in more detail soon.

Thanks everyone, and as always, feel free to reach out with any questions.

Read More

RBTools 0.7.2 is here!

It’s been just over a month since RBTools 0.7.1 arrived at stores near you (or probably not). That’s a whole month spent not upgrading RBTools, and we can’t have that. Plus, there were some good bug fixes and new commands we thought we’d send your way. So let’s not waste any more time. Here’s what’s in today’s release of RBTools 0.7.2.

We’ve fixed some issues working with Bitbucket/Beanstalk/Unfuddle. We’ve heard reports from users that posting changes against their Git repositories hosted on these services that just resulted in failure, so we’ve gone ahead and fixed that all up.

There are also two new RBTools commands for you to play with:

  • rbt login will log into RBCommons and store the cookie. rbt post and other commands will still do that, but it’s sometimes handy to have new users log in once in order to ensure they’re all set up properly.
  • rbt logout will log you out of your API session on RBCommons, and delete the cookie.

For the full list of changes, see our release notes.

Read More

RBTools 0.7.1 is released

Today’s release of RBTools 0.7.1 fixes up several issues found in this month’s big 0.7 release, and helps to increase performance when posting changes for review. There are also compatibility fixes for Windows, and improvements to the new Windows installer.

Some of the highlights include:

  • Unicode compatibility fixes when running on Windows.
  • CVS/Subversion diffs are once again generated from the current directory and not the root of the checkout.
  • Several fixes for the Windows Installer.
  • Support for invoking RBTools in a Bash shell on Windows.
  • Fewer API requests are needed to post changes for review.

For the full list of changes, see the release notes.

Read More

RBTools 0.7 is here!

RBTools 0.7 is packed with new tools and improvements for your workflow, making it faster to install, post changes to RBCommons, and land your changes.

There’s a lot here, so we’ll go into the major new additions.

Easy installation for Windows and MacOS X

We’ve improved the installation experience. If you’re on Windows or MacOS X, you can simply download the RBTools installer for your platform. In seconds, you’ll be ready to use the latest RBTools.

Land reviewed changes with one command

The all-new rbt land is the fastest way to take a change (in a local branch or a review request), validate that it’s been reviewed, and land it in your repository. It will format the commit message to include the review request’s description and testing information, and can even handle pushing the change upstream and deleting the local branch in one go.

(This is currently only available for Git repositories. Support for other repositories will come soon.)

Exclude files from review

Sometimes you’ll have modified files that you just don’t want up for review. Auto-generated code, for instance. You can now exclude these when posting changes for review by using the new -X option to rbt post, or by setting EXCLUDE_PATTERNS in .reviewboardrc.

Make your own commands with aliases

Ever find yourself repeating a group of options? rbt post -g yes -u HEAD, for instance? In 0.7, you can create an alias — a new RBTools command, basically — for those options.

You can even go a step further and make an alias that runs non-RBTools commands. Want to always run unit tests before posting code? Make an alias. How about merging the latest upstream changes into your branch before posting? There’s another alias!

See the documentation on aliases for more information.

Faster communication with RBCommons

We’ve sped up RBTools by caching results from RBCommons. This means lots of operations, such as posting changes, is faster than ever.

If you’re using the RBTools Python API to write your own integrations, you’ll benefit from this with no additional work on your end.

And lots more!

We haven’t even talked about rbt stamp, support for API tokens, or all the bug fixes and other feature improvements.

Check out the release notes for the whole list of changes.

Read More

A new batch of feature and performance improvements

Tonight, we’ve released a huge set of bug fixes and feature improvements for RBCommons that should improve your code review experience.

Faster performance

We’ve fine-tuned many parts of RBCommons to give you a faster experience.

Editing Markdown text should now feel as fast as editing plain text. The lag that would sometimes appear has been fixed.

The dashboard now loads a lot faster when using the People, Groups, or To Me columns.

We’ve also improved performance in our API. RBTools and various operations on the site should be much faster now.

Markdown improvements

Markdown is now completely optional. By default, all text fields on review requests and comments on reviews will be in Markdown mode, as before. However, you’ll now be able to turn off Markdown while editing, saving as plain text.

You can also choose to disable Markdown by default for all fields in your My Account page. Simply uncheck “Always use Markdown for text fields.”

Note that if Markdown is enabled by default, then all fields will start off editing in Markdown mode. Any plain text will be escaped first.

Along with this, we’ve fixed a number of escaping and rendering problems with Markdown text, particularly for text coming from a commit.

Better clipboard support in the diff viewer

The diff viewer now supports selecting and copying the text within either column in the diff viewer, without that selection covering code from the other column.

Previously, selecting worked like it did for any table in a web page, in that the selection would span both columns, making it impossible to get the text out cleanly. With this new support, you can safely copy a block of text from the original or modified file and paste it into your editor.

Better e-mail control

We’ve reduced how much e-mail you’ll receive in certain cases. For instance, if a review request is updated to add new reviewers, without altering any other fields or introducing a new diff, only the new reviewers will be notified of the update.

We’ve also introduced an option to let you opt out of any e-mails triggered by your own actions. To opt out, head over to the My Account page and uncheck “Get e-mail notifications for my own activity.”

Numerous bug fixes

We’ve fixed nearly 40 bugs across the site, covering issues with repository compatibility, diff generation, usability, e-mail notifications, and more.


Read More