Difference between revisions of "Bitbucket"

From Archiveteam
Jump to navigation Jump to search
(bitbucket-mercurial project stub)
m (→‎Repo cloning: use hg-stable for all protocol info links)
Line 38: Line 38:
* [https://www.mercurial-scm.org/repo/hg-stable/file/tip/mercurial/streamclone.py streamclone.py]
* [https://www.mercurial-scm.org/repo/hg-stable/file/tip/mercurial/streamclone.py streamclone.py]
* [https://www.mercurial-scm.org/repo/hg-stable/file/tip/mercurial/statichttprepo.py statichttprepo.py]
* [https://www.mercurial-scm.org/repo/hg-stable/file/tip/mercurial/statichttprepo.py statichttprepo.py]
* [https://www.mercurial-scm.org/repo/hg/file/tip/mercurial/helptext/internals/wireprotocol.txt wireprotocol.txt]
* [https://www.mercurial-scm.org/repo/hg-stable/file/tip/mercurial/helptext/internals/wireprotocol.txt wireprotocol.txt]
Requests over HTTP can be WARCed.
Requests over HTTP can be WARCed.

Revision as of 02:40, 15 April 2020

Bitbucket logo
URL https://bitbucket.org/
Status Special case
Archiving status Upcoming...
Archiving type Unknown
IRC channel #archiveteam-bs (on hackint)

Bitbucket is a version control repository hosting service, marketed mostly towards proprietary and enterprise software but with a substantial FLOSS presence.

It announced on 20 August 2019 that it would be ending Mercurial support to focus exclusively on Git.[1] Creating new Mercurial repositories was disabled on 1 February 2020, and all Mercurial repositories and API will be removed on 1 June 2020.

Mercurial archiving

There is existing tooling to deal with the repositories themselves, but these do not include issues, wikis, and other metadata. (What is the status of PRs?) This will have to be separately scraped from Bitbucket's website and/or API.

We have an enumeration of existing Mercurial repositories (scraped from Bitbucket's search API after the February lockdown). These repositories will be writable up to the June deletion. The discovery has an updated-on field, but it's not clear whether this is the repository or its metadata.


  • Total repos online: 245,068
  • Total reported size (fairly accurate): 5.23 TiB (does this include hg compression?)
  • Mean reported size: 22.4 MiB
  • Median reported size: 205 KiB
  • Maximum reported size: 14.4 GiB

Repo cloning

From the hg docs:

In normal clone mode, the remote normalizes repository data into a common exchange format and the receiving end translates this data into its local storage format. --stream activates a different clone mode that essentially copies repository files from the remote with minimal data processing. This significantly reduces the CPU cost of a clone both remotely and locally. However, it often increases the transferred data size by 30-40%. This can result in substantially faster clones where I/O throughput is plentiful, especially for larger repositories. A side-effect of --stream clones is that storage settings and requirements on the remote are applied locally: a modern client may inherit legacy or inefficient storage used by the remote or a legacy Mercurial client may not be able to clone from a modern Mercurial remote.

hg clone produces a directory with a working copy, plus the .hg directory containing version control data. However, this is internally sent as a bundle, which if captured can be unbundled normally.

hg network protocols:

Requests over HTTP can be WARCed.

Existing discussion and tooling

Site structure

Some API requires auth, some does not. Rate limits are documented here.