On Jul 20, 2006, at 4:01 PM, Jason Dillon wrote:

It is not just how we use the m2-style repo inside of G, but also how we build G using m2 that will cause problems for windows peeps.

The later is going to be more trouble to resolve I think.

I'm still thinking it would be a good idea to have some sort of file-system abstraction for our m2-style repo... in the same way that SVN has an abstraction... that could use BDB or a regular file system (ie. FSFS) for actual storage. WIth something like this, we could have the default distro use a BDB-ish filesystem and completely resolve the windows file name limitations. With a set of cli tools we can easily allow the BDB-ish to be converted to a FSFS.

The repo is an interface. Well it is really three interfaces depending how much you want to implement:

public interface Repository {
    boolean contains(Artifact artifact);
    File getLocation(Artifact artifact);
    LinkedHashSet getDependencies(Artifact artifact);
}

public interface WriteableRepository extends Repository {
void copyToRepository(File source, Artifact destination, FileWriteMonitor monitor) throws IOException; void copyToRepository(InputStream source, int size, Artifact destination, FileWriteMonitor monitor) throws IOException;
}

public interface ListableRepository extends Repository {
    SortedSet list();
    SortedSet list(Artifact query);
}

We have an M1 and M2 implementation of these, so if you want another one you have some good base code to start with.

-dain

Reply via email to