Mercurial vs. Bazaar speedtest clone and log - update: hg 1.1 vs. bzr 1.10
Arne Babenhauserheide
arne_bab at web.de
Mon Dec 15 04:40:24 CST 2008
Am Montag 15 Dezember 2008 01:14:17 schrieb Alexander Belchenko:
> I'm curious why you have this warning message in your test.sh output:
>
> No handlers could be found for logger "bzr"
>
> It seems like your system lacks something. Is it intended?
> Or you just don't have desire to get bzr working right?
I just don't use bzr in production, so i simply use what my installation
provides me.
But I now did a quick check and found this bzr bug:
- https://bugs.launchpad.net/pqm/+bug/191393
> Also, it will be nice to know does you run pre-packaged version of bzr
> (actually I'd like to make sure that you run bzr with compiled
> C-extensions) and what version of python you're using. AFAIK bzr is not
> completelly ported to Python 2.6 (but I could be wrong here).
What I use:
###############################################################
### Bazaar ###
# eix dev-util/bzr$
[I] dev-util/bzr
Available versions: 1.5 1.6.1 ~1.6.1[1] ~1.7.1 ~1.8 ~1.8-r1 ~1.9 (~)1.10
{bash-completion curl doc emacs sftp test}
Installed versions: 1.10(10:51:42 13.12.2008)(bash-completion curl emacs
-doc -sftp -test)
License: GPL-2
Homepage: http://bazaar-vcs.org/
Find open bugs: http://bugs.gentoo.org/buglist.cgi?quicksearch=dev-
util%2Fbzr
Description: Bazaar is a next generation distributed version
control system.
[1] "zugaina" /usr/portage/local/layman/zugaina
#############################
### Python ###
# eix dev-lang/python$
[I] dev-lang/python
Available versions:
(2.4) 2.4.4-r5 2.4.4-r6 2.4.4-r14 ~2.4.4-r15
(2.5) 2.5.2-r7 (~)2.5.2-r8
(2.6) [M]~2.6-r5
{berkdb bootstrap build cxx doc elibc_uclibc examples expat gdbm ipv6
ncurses nocxx nothreads readline sqlite ssl threads tk ucs2 wininst}
Installed versions: 2.5.2-r8(2.5)(04:14:48 12.12.2008)(berkdb doc
examples expat gdbm ipv6 ncurses readline sqlite ssl threads tk -build -
elibc_uclibc -ucs2 -wininst)
License: PSF-2.2
Homepage: http://www.python.org/
Find open bugs: http://bugs.gentoo.org/buglist.cgi?quicksearch=dev-
lang%2Fpython
Description: Python is an interpreted, interactive, object-
oriented programming language.
#############################
### How Bazaar gets installed ###
# cat /usr/portage/dev-util/bzr/bzr-1.10.ebuild
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-util/bzr/bzr-1.10.ebuild,v 1.1
2008/12/08 14:50:56 pva Exp $
NEED_PYTHON=2.4
inherit distutils bash-completion elisp-common eutils versionator
MY_PV=${PV/_rc/rc}
MY_P=${PN}-${MY_PV}
SERIES=$(get_version_component_range 1-2)
DESCRIPTION="Bazaar is a next generation distributed version control system."
HOMEPAGE="http://bazaar-vcs.org/"
#SRC_URI="http://bazaar-vcs.org/releases/src/${MY_P}.tar.gz"
SRC_URI="http://launchpad.net/bzr/${SERIES}/${MY_PV}/+download/${MY_P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ia64 ~ppc ~sparc ~x86 ~x86-fbsd"
IUSE="curl doc emacs sftp test"
RDEPEND="|| ( dev-python/celementtree >=dev-lang/python-2.5 )
curl? ( dev-python/pycurl )
sftp? ( dev-python/paramiko )"
DEPEND="emacs? ( virtual/emacs )
test? (
$RDEPEND
dev-python/medusa
)"
S="${WORKDIR}/${MY_P}"
PYTHON_MODNAME="bzrlib"
SITEFILE=71bzr-gentoo.el
DOCS="doc/*.txt"
src_unpack() {
distutils_src_unpack
# Don't regenerate .c files from .pyx when pyrex is found.
epatch "${FILESDIR}/${PN}-1.8-no-pyrex.patch"
# Don't run lock permission tests when running as root
epatch "${FILESDIR}/${PN}-0.90-tests-fix_root.patch"
# Fix permission errors when run under directories with setgid set.
epatch "${FILESDIR}/${PN}-0.90-tests-sgid.patch"
}
src_compile() {
distutils_src_compile
if use emacs; then
elisp-compile contrib/emacs/bzr-mode.el || die "Emacs modules
failed!"
fi
}
src_install() {
distutils_src_install --install-data /usr/share
if use doc; then
docinto developers
dodoc doc/developers/* || die "dodoc failed"
for doc in mini-tutorial tutorials user-{guide,reference}; do
docinto $doc
dodoc doc/en/$doc/* || die "dodoc failed"
done
fi
if use emacs; then
elisp-install ${PN} contrib/emacs/*.el* || die "elisp-install
failed"
elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die
"elisp-site-file-install failed"
# don't add automatically to the load-path, so the sitefile
# can do a conditional loading
touch "${D}${SITELISP}/${PN}/.nosearch"
fi
insinto /usr/share/zsh/site-functions
doins contrib/zsh/_bzr
dobashcompletion contrib/bash/bzr
}
pkg_postinst() {
distutils_pkg_postinst
bash-completion_pkg_postinst
if use emacs; then
elisp-site-regen
elog "If you are using a GNU Emacs version greater than 22.1,
bzr support"
elog "is already included. This ebuild does not automatically
activate bzr support"
elog "in versions below, but prepares it in a way you can load
it from your ~/.emacs"
elog "file by adding"
elog " (load \"bzr-mode\")"
fi
}
pkg_postrm() {
distutils_pkg_postrm
use emacs && elisp-site-regen
}
src_test() {
export LC_ALL=C
# Some tests expect the usual pyc compiling behaviour.
python_enable_pyc
"${python}" bzr --no-plugins selftest || die "bzr selftest failed"
# Just to make sure we don't hit any errors on later stages.
python_disable_pyc
}
###############################################################
Since Portage by default builds C extensions (it just uses distutils), they
should be included.
(I like Gentoo for being able to do this damn extensive reply with ease ;)
> To make local cloning of of bzr much faster you'd need to use shared
> repositories. So you can change your steps for bzr as following.
>
> 1) Initial cloning:
>
> time bzr init-repo .
> time bzr branch http://code.python.org/python/trunk python-bzr-trunk
Can I also do
time bzr init-repo bzr
time bzr branch http://code.python.org/python/trunk bzr/python-bzr-trunk
That would better blend in with the workflow of my test.
> 2) Repo size
> bzr pack
> 3) Local clone will be faster if you do it in shared repo (that have been
> created in step 1):
> time bzr branch python-bzr-trunk python-bzr-trunk2 --hardlink
> I understand that your intent is to show that hg is much faster,
> but even with my hints it still will be faster than bzr, but I guess
> difference will be much smaller (not 6x-7x times).
My desire is to do a good test.
The current tests are just standard operations with the default installation
and without any optimizations, but I'll gladly add a test with the operations
optimized for bzr.
I much prefer Mercurial to Bazaar, and my desire is to see Mercurial as DVCS
for Python, but I have no intention of violating my values of what constitutes
a good test because of that.
But I don't intend to do much debugging of the tools for that since debugging
shouldn't be part of the regular workflow (and newcomers in a project won't
want to do debugging of the VCS tool).
For example I don't want to debug this:
$ bzr init-repo bzr
$ cd bzr
$ bzr branch http://code.python.org/python/trunk python-bzr-trunk
No handlers could be found for logger "bzr"
bzr: ERROR:
KnitPackRepository('file:///home/arne/Dokumente/eigenes/Programme/Mercurial/tests/hg-
vs-bazaar-speedtest/bzr/.bzr/repository/')
is not compatible with
KnitPackRepository('http://code.python.org/python/.bzr/repository/')
different rich-root support
You can now see a shared repo test in the file test.sh at
- http://freehg.org/u/ArneBab/hg-vs-bzr-unscientific/
Currently it is commented out because it doesn't work.
Tell me how to get this running (or just send me a patch or bundle - or clone
and share a hg repository with improved tests) and I'll include it.
Best wishes,
Arne
--
-- My stuff: http://draketo.de - stories, songs, poems, programs and stuff :)
-- Infinite Hands: http://infinite-hands.draketo.de - singing a part of the
history of free software.
-- Ein Würfel System: http://1w6.org - einfach saubere (Rollenspiel-) Regeln.
-- PGP/GnuPG: http://draketo.de/inhalt/ich/pubkey.txt
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://selenic.com/pipermail/mercurial/attachments/20081215/ec5af49a/attachment.pgp
More information about the Mercurial
mailing list