[Trac] Re: [darcs-users] Trac + Darcs error

Toni Timonen ttimonen at movial.fi
Thu Jul 13 08:53:16 UTC 2006


On Tue, Jul 11, 2006 at 10:23:01AM -0400, Matthew Good wrote:

> > Also, if you are brave enough, you might want to try another
> > trac+darcs implementation in scratchbox.org[1]. It is somewhat
> > experimental and depends on python-4suite, postgresql and
> > python-psycopg (and darcs 1.0.7 when used with mod_python).
> > 
> > It has also support for wiki formating in all fields and dependency
> > support in tickets.
> 
> Interesting.  My experience with Darcs has been pretty limited, but from
> the small repository I have it seems quite nice.
> 
> What are your future plans with your Trac+Darcs implementation?  It
> looks like it's currently based on 0.9.2, so it's a bit out of date.
Actually 0.9.3 (r2807)

The project has been on hold for a while because of other things,
but there should be some time soon to get back to working with it.

> Have you looked into extracting the Darcs VC implementation as a plugin
> so it can be used with the Trac mainline?

Yes. 
There are some reasons for it not being as a plugin (yet).
Firstly, I started working with this a while before there was a
vc-refactoring branch that brought pluging based approach to version
control, so having an own repository have been easier.
Secondly, there are some other minor things that have been done to to get the
thing working happily with postgres (eg. own fix for #2437).

Why would you not want to have this trac+darcs into mainline?

- It supports only postgres
This can probably be fixed, but I haven't got time for doing it.
Some queries like pg special functions and db creation code should be
more generic (and I probably should drop the schemas).

- It has new dependencies 
Especially python-4suite xml-library. Python has an xml library
implementation called minidom built-in, but it has some performance
and resource problems. A regular darcs changelog[1] for a regular
project, 800kB in size, takes 40MB of memory with minidom, 5 with
4suite. The memory consumption explodes when having multiple
repositories. 

[1] darcs changes -s --xml-output


- There are some api changes
Especially get_diff function in vc-api. Darcs stores data internally
as changesets, but the old trac api wants the the old&new
file and builds the diff by itself. This leads to insanity with darcs,
because it has to go the repository through twice to build the two
versions to just have the diff, which is already there.
  It would be easy to make a fallback implementation of get_diff that
fetches two versions of the file and returns the differences, but it
is not done.

What are the main differences with the other trac+darcs implementation?

-Support for multiple darcs repositories

This one supports multiple physical darcs repositories in one
trac+darcs virtual repository. That is, you can have just have a
directory containing darcs repositories and use this as your virtual
repository. This is practical and very needed with darcs, because it
doesn't support branches inside the repository, but has a copy of the
repository instead.

-Support for numbered patches across branches

Darcs does't have numbers for the changesets, so indexing of
changesets is done in a database level. The same changeset that lives
in multiple branches (darcs repositories) is referred with one
changeset id. 

-Support for removal of changesets

This implementation doesn't depend on the ordering of patches in the
individual darcs repository, so patches can be unpulled or optimized.

-Support for move/delete/add of files and directories.

-Doesn't have support for file caching
 This is mostly not needed because of the get_diff solution. Granted,
it is somewhat slow in some situation, so file cache wouldn't be a bad thing.


-- 
Toni Timonen
040-5111863,GPG 0x7984A4FD




More information about the darcs-users mailing list