What's the difference between Crucible and Bitbucket Server? Do I need both?
Bitbucket Server's pull request (i.e. code review) feature is structured in a way that supports workflows used by distributed source control systems, like Git. Requests are created when a developer asks to merge their working branch or fork back into the main code line (typically known as master). All the changes/commits residing in that working copy can then be reviewed by other developers on the same team. Once the review is complete, the code can then be merged.
This type of review differs from the Crucible code review model in that all changes in a particular branch are reviewed at one time. Instead of comparing one branch to another, Crucible allows the user to select only 1 branch and pick the changes/commits they would like to include in the review. This is the biggest difference between Crucible reviews and Bitbucket Server's pull requests.
If the pull request model doesn't meet your requirements for code review, then it is an option to continue to run Crucible on a local server. You can then point Crucible to your Git repositories stored in Bitbucket Server.
Code Review (Crucible) vs Pull Requests (Bitbucket)
|Pull Requests||Code Review (Crucible)|
|Allows you to merge code directly||Is "Read only." Merge has to be done manually|
|Review branches at ease||Review patches, branches, commits, individual files or other remote repositories|
|Simpler to use||Has more granular review features (Example: Due date, comment categories, time logging)|
|Review every commit or a single commit in a branch at once||Select a range of commits to filter the review|
|Integration into Jira updates with code changes||Integration with JIRA for time logging|
|Works with Git||Works with git and other version control, such as subversion and P4 for example|
|Easy built-in ability to enforce workflows and policies||Is read only / indexes. It is possible to add webhooks into bitbucket to enforce review checks.|
When to use Crucible over Pull Requests?
You can consider using Crucible if you meet any of the following:
- Need to review multiple repos on one review
- Not all code you're reviewing is on Git
- Your reviews are very large, and you need to break down commits to separate reviews
- Your teams do not use a feature branch workflow
For all other requirements other than the above, Pull Requests are the best option.
More details on how the Crucible workflow works can be found at The Crucible workflow
More details on how the Pull Request workflow works can be found at: Review and discuss a pull request
You can also find a video at Code Reviews vs. Pull Requests that explores these differences.