Gitkraken Bitbucket



GitKraken allows you to authenticate with Bitbucket Server, which will help you find repos on Bitbucket Server when cloning or adding your remotes. Git subtree lets you nest one repository inside another as a sub-directory. It is one of several ways Git projects can manage project dependencies.

If you boil it down to the most basic difference between GitHub and Bitbucket, it is that GitHub is focused around public code and Bitbucket is for private. GitHub has a huge open-source community and Bitbucket tends to have mostly enterprise and business users.

Bitbucket vs Github: Two of the largest source code management services for development projects, offering a variety of deployment models from fully cloud-based to on-premise. Historically, they have taken different approaches to private vs. public repositories that affected the ease of collaboration and the risk of data exposure.

A Github account is the calling card of the software developer. Just as any writer would be asked to show their blog, every developer is expected to produce examples of their code on GitHub. But that does not necessarily make GitHub the best choice for software development teams. GitHub thrives on making code easy to share, and in that regard is indispensable for the open-source backbone of the internet as we know it. At the same time, that means organizations must take greater care to manage their users and access control settings to ensure they are not compromising their cyber resilience. The pricing models of the two products likewise reflects their differing approaches to how to best manage version control.

What is Bitbucket?

Bitbucket supports Git, but the situation has changed when it comes to other repository types. Bitbucket’s advantage over GitHub used to be that both Git and Mercurial repository hosting were available with Bitbucket. There was never support for SVN, however, Bitbucket’s modernisation has come at the expense of support for Mercurial. Bitbucket is written in Python and uses the Django web framework.

Bitbucket was launched in 2008, in Australia, and was originally an independent startup offering hosting only for Mercurial projects. It was acquired in 2010 by fellow Australian company Atlassian, and about a year later added support for Git repos.

Many users who are worried about keeping code private have migrated over to Bitbucket from GitHub following Microsoft’s recent acquisition of the platform for $7.5bn.

Note: Mercurial support will be removed from Bitbucket on June 1, 2020. Read more about Atlassian's decision to focus on Git.

What are Bitbucket's features?

Bitbucket integrates very well with JIRA, originally built as a bug tracker, but is so flexible now it can be used for: bug tracking, issue tracking, service desks and project management. This is no surprise given that JIRA is also an Atlassian product. Other features are:

  • Pull requests and code reviews
  • Unlimited private repos
  • Branch comparison and commit history
  • Bitbucket Mac and Windows client called SourceTree; Android app called BitBeaker
  • Bitbucket for Enterprises, called Stash
  • Integration with tools like Jira, Crucible, Bamboo, Jenkins, HipChat
  • Deep integration with Trello, via their Bitbucket Cloud capability which offers seamless integration of branches, commits and pull requests into Trello boards.
  • Branch permissions. Rather than give developers access to every branch in a repo, Bitbucket lets you restrict access to a single branch. This prevents nightmare situations such as an accidental master push, and is a key differentiator for Bitbucket.
  • Built-in continuous delivery, issue tracking and wikis.
  • Easy integration with Bamboo and Confluence in addition to Atlassian's own Jira Software Cloud for additional setup customization and hosting.
  • Bitbucket Snippets allow you to create and manage multi-file snippets of all kinds.
  • Third-party integrations allow you to integrate Bitbucket into several facets of your existing workflow, making the complete development process much more efficient.
  • Bitbucket supports Git Large File Storage (LFS) which means shorter clone and fetch times for those working with large files.

What is Bitbucket's pricing?

The pricing structure differs from Git’s in that Bitbucket charges per user whereas Git charges per repository. Bitbucket allows unlimited public repos for all, but also an unlimited number of private repositories for free for up to 5 users. Beyond that, pricing is tiered as per the table below:

Cloud Edition

FreeStandardPremium
Price per user$0$3 / user / month starting price$6 / user / month starting price
User limitUp to five usersUnlimitedUnlimited
Build minutes sponsored by AWS500 min / mo3,500 min / mo10,000 min / mo
Error monitoring by Sentry$50 credit$100 credit
Security scanning by Snyk
Git Large File Storage1 GB5 GB10 GB
Unlimited private repositories
Jira Software integration
Trello integration
CI/CD
Merge checks
Enforced merge checks
Deployment permissions
IP Whitelisting
Required two-step authentication
Smart Mirroring

Self-Hosted Editions

Max number of usersBitbucket Server Edition (one-time)Bitbucket Data Center Edition (yearly)
10$10N/A
25$2,900$1,980
50$5,200$3,630
100$9,500$6,600
250$19,000$13,200
500$25,300$17,600
1,000$35,000$26,400
2,000$69,800$52,800
3,000N/A$79,200

The Bitbucket Data Center Edition goes up to 30,000 users for $792,000 per year. If you are interested in extensive pricing, click here.

As the name of the plan implies, the server plan is hosted on a company’s own server and requires a one-time payment.

What is GitHub?

First of all, GitHub only hosts projects that use the Git version control system (VCS). That’s it. Nothing else. But Git is far and away the most commonly used VCS, so GitHub is still the largest code host of them all, with now over 100 million repositories of code.

What are GitHub's features?

GitHub.com was originally started in 2008, with the platform written in both Ruby and Erlang. GitHub is designed to encourage close communication and collaboration within development teams. To this end it includes features like highlighted code comments and collaborative code review. Other notable features are listed below.

  • An integrated issue tracker right within your project
  • Milestones and labels within projects
  • Branch comparison views
  • Native applications for Windows and Mac desktops, and also an Android app
  • Support for over 200 programming languages and data formats
  • GitHub pages, a feature for publishing and hosting within GitHub
  • Security such as use of SSL, SSH and/or https for all data transmission, and two-factor authentication for login
  • API integration for easy integration of 3rd-party tools, and integration with a large number of other tools and platforms. Some examples are Asana and Zendesk for issue/ bug tracking; CloudBees, Travis and CodeClimate for Continuous Integration (CI); AWS, Windows Azure, Google Cloud, and Heroku cloud hosting.
  • The GitHub guys also recognize that SVN is also a widely used alternative to Git, so they provide a tool to import SVN repos into Git and host them on GitHub, although reports are that it’s at best a clunky, somewhat awkward solution. And they shrewdly made sure that GitHub repos are fully accessible on the SVN client.
  • Syntax highlighting. GitHub users will be used to this as a standard, indispensable feature, but Bitbucket notably continues to lack it.
  • High level of usage in open source projects. Given that GitHub has a large number of public repositories, this is hardly surprising. Supporting trending repos and showcasing popular topics has helped GitHub become the defacto choice for the open-source community. Major open-source projects like Linux, jQuery are hosted on GitHub.

What is GitHub's pricing?

GitHub pricing is free for public repos and as of January 2019, like Bitbucket, offers free unlimited private repositories. For private repositories, GitHub allows unlimited numbers of collaborators grouped into the following paid plans. The Team plans allow a central administrator who manages teams and can set varying levels of permissions. There is also GitHub Enterprise, a version tailored for large organizations which offers cloud-based and on-premise deployment options.

PlanFreeTeamEnterpriseGitHub One
Price$0 / mo$4 / user / mo$21 / user / moContact sales
Unlimited repositories
Collaborators/private repositories3UnlimitedUnlimitedUnlimited
Action minutes2,000 / mo3,000 / mo50,000 / mo50,000 / mo
GitHub Packages storage500 MB2 GB50 GB50 GB
Automated security updates
Code owners
Team access controls
GitHub Security Advisories
Advanced auditing
Community-powered security
Actionable metrics
Continuous learning
24/7 support

As an aside, in early 2014 GitHub was the setting of an ugly case of employee harassment. A female software engineer called Julie Ann Horvath came forward with revelations of a discriminatory and generally female-unfriendly environment at GitHub. She also reported being harassed and intimidated by an at-first unnamed wife of a GitHub founder, made worse by the tacit approval and support of the wife’s bullying antics by the founder himself. These individuals were later revealed to be GitHub founder Tom Preston-Werner and his wife Theresa. The negative publicity that ensued resulted in Preston-Werner first being suspended then resigning from his role in GitHub’s management team, and his wife no longer allowed into the company’s offices. CEO Chris Wanstrath offered a public apology to Horvath for what she went through at the company; GitHub also launched an investigation which rejected Horvath’s accusations of “gender-based discrimination, harassment, retaliation, or abuse.” This history bears mentioning in part because hostile workplaces not only drive away talent, they increasecybersecurity risk– risk for lost time, legal penalties, reputational damage, and data exposure. Read more about the whole sordid saga here, here and here.

BitBucket vs GitHub: UX and Ease of Use

The widespread use of GitHub by small developers for hosting their code has resulted in a well-tested platform that has one of the best user experience in the open-source community. Bitbucket, which did not start out with such a heavy focus on open source, and saw lower usage, has struggled at times with an interface that was seen as more complex to navigate than what GitHub offers. In recent times, though, this has changed. Bitbucket now draws rave reviews for its user experience. Its online editor is among the best for editing code directly online without checking it out onto your machine first. While not being the simplest platform to use, it’s powerful and versatile, with plenty of features to support the needs of small businesses and enterprises who have long been heavy users of the platform. The Bitbucket interface is centered around the “Your Work Dashboard,” which gives you easy access to your repositories and pull requests. Bitbucket offers a fully-fledged Git interface and supports everything from filtering pull requests to issue tracking, management of SSH keys, and other features.

GitHub has a simple interface that is friendly even for beginners to Git and online source code hosting. The platform has long been open-source friendly and packs a UI that provides access to Git’s underlying features as well as providing some of its own. That said, there are scenarios where you will still need to know how to use Git at the command line, especially if you are managing large open source projects with complex merging requirements.

GitHub lets you easily see and review commits by collaborators, with online diff features, so you can manage code at a granular level. The interface also offers excellent support for collaborative code review, highly useful for working in teams, tracking, and management of tasks, as well as DevOps features like CI/CD. Through its other tools such as GitHub Desktop, GitHub lets you expand the range of features you can use for managing your Git code collaboration still further.

Bitbucket vs GitHub: Developer Adoption

Developer adoption and community reach is one area where Bitbucket and GitHub have experienced diverging fortunes. Lacking the dominant position in open source that GitHub has long enjoyed, Bitbucket continues to play second fiddle to GitHub in terms of the number of users. However, its community has recorded impressive growth over the last several years.

Bitbucket now boasts more than 10 million registered users, which, while not enough to supplant GitHub, which has been growing for its part as well, makes Bitbucket firmly one of the leaders in the online Git code hosting marketplace. Since the company’s founding in 2008, its commitment to help companies write code, test software, and collaborate, has seen it grow to a level where it can claim that 60 of the Fortune 100 corporations use Bitbucket every single day. While it might have a smaller community than GitHub, Bitbucket is also notable for its plethora of integrations, which means its community can access tools like Slack, AWS, Datadog, and JFrog just as well as those developers using GitHub.

GitHub’s community is far more impressive, especially when it comes to its reputation in the open-source community. To be a credible open source project or open-source developer, it’s almost a de facto standard that your code must be hosted and publicly available on GitHub. GitHub’s user base now consists of over 40 million registered users, with over 100 million Git repositories hosted on the platform. GitHub’s community is active in 200 countries and is a significant driver in the platform’s preeminence in the tech world. This sizable community also drives business value and might have been a factor in Microsoft’s acquisition of GitHub for $7.5 billion back in 2018. While Microsoft and the open-source world had long been at odds, the partnership between GitHub and Microsoft does give GitHub new-found credibility with enterprise customers, and Microsoft new-found credibility with open source developers and software users. Needless to say, the GitHub community, which already counts a good share of Fortune 50 and Fortune 100 companies, could continue to grow by leaps and bounds in the years ahead.

GitHub vs Bitbucket: Wikis and Collaboration

In addition to working with source code, both Bitbucket and GitHub serve as collaboration and knowledge sharing platforms. Wikis and other tools for collaboration, built right into the platforms, help teams work collaboratively on ideas that form part of the intellectual space of the code. In Bitbucket, you get a wiki when you create a code repository. Bitbucket wikis can be edited and version controlled, and many projects also use them as project home pages.

Bitbucket offers plenty of other features that facilitate team collaboration, including side by side diffs, IDE integrations, and the ability to organize repositories into projects.

GitHub also offers a plethora of collaboration features, with its history of facilitating very large open-source projects bearing testimony to the robustness of tools supporting collaboration on the platform. To name a few, some of the projects with the most influential collaborator networks and highest numbers of contributors include:

The GitHub workflow, with simple cloning, repository forking, branching, pull requests, merging, diffs, and more, makes this one of the best platforms for teams looking to work on code together, whether open source or not. GitHub also comes with support for wikis to document your project and share information with your team. Wikis are available for GitHub Free, GitHub Enterprise Cloud, and GitHub Enterprise Server. Wikis can be written in Markdown or other supported formats. Just as with source code, wikis are visible publicly for public repos, and limited to team members for private projects.

Integrations With Tools Commonly Used by Developers

One of the chief selling points for Atlassian’s Bitbucket is that it integrates extremely well with the Atlassian suite of developer tools, and these tools have considerable usage and are popular among developers. This is certainly true, and should be a factor in your consideration, however, note that GitHub has been making moves to buttress its products with similar features, and also integrates well with the Atlassian suite of developer tools.

Bitbucket integrates well with Jira, Atlassian’s issue tracker software, and Trello, the project management tool that’s popular among many software and business teams. In addition, there are more than 50 integrations with other commonly used developer tools available for developers and teams hosting their repositories on Bitbucket. These include:

  • Amazon Web Services
  • Microsoft Azure
  • Docker Hub
  • NPM
  • Sonar
  • And many more

With integrations, you are able to view metrics from these services and tools right inside Bitbucket, as well as managing aspects of your software or DevOps infrastructure right alongside the code.

Gitkraken Bitbucket

If you do end up going with GitHub, you’ll be happy to know that the integrations available for both Trello and Jira are very capable. In 2018, GitHub announced it had been working with Jira to create an integration allowing enhanced features for connecting your GitHub code to Jira Software Cloud. Trello also has a GitHub Power Up integration that allows you to attach GitHub pull requests to Trello cards. Managing your GitHub work in Trello should be a breeze thanks to this integration. However, GitHub has been making moves to enhance its own product with Trello-like features. Back in 2016, for example, GitHub launched “Projects,” a feature allowing Trello-like cards to manage tasks and code projects.

GitHub also has integrations available for a wide range of popular developer tools and software products. A Slack integration is available for team chat, for example, as well as integrations with Codefresh and Semaphore for continuous integration. Monitoring integrations available include LogRocket and Waydev. In the project management category, integrations with GitKraken Glo Boards and DeepAffects are available, among plenty more useful integrations in multiple categories.

Given that both Bitbucket and GitHub are among the giants in the Git repository hosting space, it’s likely they will continue to offer the widest sets of integrations with other popular code tools. A notable exception here is the 2020 dropping of Mercurial from Bitbucket’s source code hosting services. GitHub never supported this VCS, but Bitbucket, for many years, did. However, due to the low numbers of Mercurial users, it has met a final demise on Bitbucket’s platform and will not be supported in the future.

Alternatives to Bitbucket and GitHub

They may be the most visible and reputable Git hosting platforms available to developers today, but the popularity of Bitbucket and GitHub does not mean they are the only viable platforms available to you. Some low key longtime players have always been chugging along in the background and may receive more attention now that Microsoft’s acquisition of GitHub, and other changes, have at least a small number of open-source developers asking questions.

Gitlab

Since its appearance on the scene in 2011, GitLab has become a notable competitor to both GitHub and Bitbucket. Over the years, it has gone from offering source code management to a full DevOps lifecycle product. To quote the company’s own web page, “From project planning and source code management to CI/CD and monitoring, GitLab is a complete DevOps platform, delivered as a single application.”

LaunchPad

LaunchPad is the software collaboration management platform used by Canonical, makers of the Ubuntu Linux distro and related software. Canonical is one of the big names in the open-source movement and its software management platform, with support for both Git and Bazaar, will be a great solution if you are working on open source code.

SourceForge

Another notable platform in the open-source world, SourceForge allows open source developers to host their code and distribute their software and downloads through the platform. It also has tools to import GitHub repositories along with related data such as wikis.

Others

There are many other Git source code management and collaboration platforms that your team can use to develop software. Some notable ones to look at are Google Cloud Source Repositories and AWS CodeCommit. These tools also integrate well into cloud computing resources offered by their respective providers, Google and Amazon.

Final thoughts

Bitbucket and GitHub are very closely matched in terms of features and either will be sufficient code repository hosting services if you need to use Git and or need a simple personal account. Both now have unlimited free private repositories. And if your version control system (VCS) is Mercurial, then it’s only Bitbucket for you. Unfortunately, neither supports SVN, which remains popular. Each has some useful features not found in the other, such as GitHub pages for small web-hosting projects, or Bitbucket’s JIRA integration.

The choice may come down to the structures of your projects. If you have many private projects and small numbers of users per project, Bitbucket may be a cheaper option because of its per-repo pricing. If you have large teams collaborating on just a few projects, GitHub may be the better option. The free plan offered by Bitbucket and GitHub is aimed at solo developers and small teams.

See how UpGuard can help secure GitHub repositories and prevent dangerous data exposures.

Apart from pricing, the summary comparison table below may also help you in your decision:

FeatureBitbucketGitHub
Supported VCSMercurcial, GitGit
Public reposFree, unlimitedFree, unlimited
Private reposFree up to 5 usersFree up to three collaborators
IntegrationsJira, Crucible, Jenkins, BambooAsana, Zendesk, CloudBees, Travis, CodeClimate, AWS, Windows Azure, Google Cloud, and Heroku
Popular projects hostedAdium, Mailchimp, Opera, Python, DjangoBootstrap, Node.js, jQuery, Rails, Homebrew
Notable extra featuresSpoon, Jira integration, external authentication via GitHub, Twitter, Facebook, and GoogleTwo-factor authentication, GitHub Pages, and GitHub Gists

Is your business at risk of a security breach?

At UpGuard, we can protect your business from data breaches, identify all of your data leaks, and help you continuously monitor the security posture of all your vendors.

CLICK HERE to get your FREE security rating now!

Back to list

The Internet is full of articles on why you shouldn’t use Git submodules. While submodules are useful for a few use cases, they do have several drawbacks.

Server

Are there alternatives? The answer is: yes! There are (at least) two tools that can help track the history of software dependencies in your project while allowing you to keep using Git:

  • git subtree
  • Google repo

In this post we will look at git subtree and show why it is an improvement – albeit not perfect – over git submodule.

What is git subtree, and why should I use it?

git subtree lets you nest one repository inside another as a sub-directory. It is one of several ways Git projects can manage project dependencies.

Why you may want to consider git subtree

  • Management of a simple workflow is easy.
  • Older version of Git are supported (even older than v1.5.2).
  • The sub-project’s code is available right after the clone of the super project is done.
  • git subtree does not require users of your repository to learn anything new. They can ignore the fact that you are using git subtree to manage dependencies.
  • git subtree does not add new metadata files like git submodule does (i.e., .gitmodule).
  • Contents of the module can be modified without having a separate repository copy of the dependency somewhere else.

Drawbacks (but in our opinion they're largely acceptable):

  • You must learn about a new merge strategy (i.e.git subtree).
  • Contributing code back upstream for the sub-projects is slightly more complicated.
  • The responsibility of not mixing super and sub-project code in commits lies with you.

How to use git subtree

git subtree is available in stock version of Git since May 2012 – v1.7.11 and above. The version installed by homebrew on OSX already has subtree properly wired, but on some platforms you might need to follow the installation instructions.

Here is a canonical example of tracking a vim plug-in using git subtree.

The quick and dirty way without remote tracking

If you just want a couple of one-liners to cut and paste, read this paragraph. First add git subtree at a specified prefix folder:

(The common practice is to not store the entire history of the subproject in your main repository, but If you want to preserve it just omit the –squash flag.)

The above command produces this output:

As you can see this records a merge commit by squashing the whole history of the vim-surround repository into a single one:

If after a while you want to update the code of the plugin from the upstream repository you can just do a git subtree pull:

This is very quick and painless, but the commands are slightly lengthy and hard to remember. We can make the commands shorter by adding the sub-project as a remote.

Adding the sub-project as a remote

Adding the subtree as a remote allows us to refer to it in shorter form:

Now we can add the subtree (as before), but now we can refer to the remote in short form:

The command to update the sub-project at a later date becomes:

Contributing back upstream

We can freely commit our fixes to the sub-project in our local working directory now. When it’s time to contribute back to the upstream project, we need to fork the project and add it as another remote:

Now we can use the subtree push command like the following:

After this we’re ready and we can open a pull-request to the maintainer of the package.

Can I do this without using the git subtree command?

Yes! Yes you can. git subtree is different from the subtree merge strategy. You can still use the merge strategy even if for some reason git subtree is not available. Here is how you would go about it.

Gitkraken Bitbucket

Add the dependency as a simple git remote:

Before reading the contents of the dependency into the repository, it’s important to record a merge so that we can track the entire tree history of the plug-in up to this point:

Which outputs:

We then read the content of the latest tree-object into the plugin repository into our working directory ready to be committed:

Now we can commit (and it will be a merge commit that will preserve the history of the tree we read):

When we want to update the project we can now pull using the git subtree merge strategy:

Git subtree is a great alternative

After having used git submodules for a while, you'll see git subtree solves lots of the problems with git submodule. As usual, with all things Git, there is a learning curve to make the most of the feature.

Gitkraken Bitbucket Captcha

Follow me on Twitter @durdn for more things and stuff about Git. And check out Atlassian Bitbucket if you’re looking for a good tool to manage your Git repos.

Gitkraken Multiple Bitbucket Accounts

Update: After publishing this piece, I also wrote an article on the power of Git subtree.