[Patch] Mercurial support
Vlad Skvortsov
vss at 73rus.com
Wed May 7 23:39:49 PDT 2008
Hi Mildred,
it's pleasure to know that you found our project useful! See my comments
below.
Mildred wrote:
> Hi,
>
> I just discovered your project, and I find it very interesting. It's
> exactly what I need, that is a way to manage bugs and issues simply,
> locally.
>
> But because i don't want to set up a complicated subversion repository
> (if I like this project it's because I don't have to create an issue
> tracker server, it's not to create a subversion server) I quickly
> hacked support for mercurial, which is decentralized, and quick to set
> up.
>
I understand that if you have the rest of your code in Hg repository,
creating a separate SVN repo for issues makes no sense, but as a
comment, I want to note that you don't necessarily need a "server". SVN
can as well create local repositories accessible through file:// schema.
>
> The patch for the version 0.7 is available here:
> http://aur.archlinux.org/packages/ditrack/ditrack/hg.patch
>
I recognize the work you've done -- that's really impressive! though
there are a few issues preventing us to adopt the patch (at least right
away).
First, none of us core developers is familiar (even marginally) with Hg.
We want to make releases as stable as it's reasonably possible, so we
just can't accept a patch if none of us if comfortable with the changes.
This leads to another issue: we heavily use unit testing to ensure no
regression is introduced; and our test suite is tailored to the use of
SVN. Ideally we want to test DITrack code against all available
backends, but the current machinery is not suitable for this task; it
needs to be improved. Another issue is that currently we are "almost"
hitting the 0.8 alpha stage, so the code got changed since 0.7 quite a bit.
Though probably the main issue is related to the design of the system.
Although DITrack is "distributed", it relies on the central server to
serialize modifications to the database. Basically, if a change being
committed to the server creates a conflict, it will be rejected by the
server (and should be reapplied by the client -- which is not
implemented in the current version yet).
However, we *do* want to support Hg (and other backends) in the future
so certainly your help is appreciated. For now I suggest that you
maintain the patch on your own (and I've opened i#200 so it won't get
forgotten) and we will gradually modify our code so that Mercurial
support fits more organically. If you could help us with your expertise
in Hg, it'd speed things up; though I don't want to set any time
expectations as currently the development pace is very slow (due to lack
of our time).
> It seems to work, but I only tested few commands (remember I just
> discovered the project few hours ago, I don't have issues yet). If you
> want to test, you can just do:
>
> $ hg init
> $ dt-createdb --hg issues
> $ cd issues
> edit the files in etc/ as you want
> $ hg ci -m "added issue tracker"
> work on issues :)
>
Ok, once you have enough confidence, let us know and we can link to your
patch from ditrack.org.
>
> When the issue database is created, it add a file '.filesystem' that
> contains either 'svn' or 'hg'. That way the filesystem is
> automatically detected.
>
> You can also set the environment variable DITRACK_FILESYSTEM or specify
> the --fs command line option.
>
> Something still missing: because mercurial don't have properties like
> subversion, I couldn't implement ditrack:format subversion property
> that check the database format. Perhaps this could be moved to a file.
>
Yeah, that has been fixed for 0.8 specifically to be backend-agnostic.
> And remember, this is completely untested. But perhaps in the days to
> come I'll use it and fix bugs that could be there.
>
Thanks!
--
Vlad Skvortsov, vss at 73rus.com, http://vss.73rus.com
More information about the Dev
mailing list