Daniel Kahn Gillmor dkg@fifthhorseman.net writes:
git does have submodule support -- so you can have one repository reference another at a given commit.
I don't have any first-hand experience with git submodules, but I've heard some stories saying that it's not yet very usable.
Is there a reason that lsh would need to be tightly-coupled with any of these libraries instead of using their exported API?
The main reason is that lsh is the main testcase. So when introducing new features one of those those libraries, I usually first hack lsh to use it, to iron out both interface and implementation bugs. Those intermediate versions may never be in the API of any released library.
git submodules (assuming that they work well) would probably be the right tool to keep these libraries in subdirectories of the lsh work tree.
Ah, and then it's the release procedure. I'd still like to bundle the libraries with lsh, and having the libraries in subdirectories makes that easier. And as long as the versions bundled with nettle are configured for static linking, I see no problem of bundling lsh with unreleased versions of the libraries.
How often do these files actually change? Is it critical that they be kept in sync?
It's not critical, it's just for convenience. It's nice to have a single version, which is used (and tested) with all the projects.
I guess it's possible to start with migrating nettle from cvs, and leave the rest of the tree for later. But I'm not sure that's a good way to do it.
I actually don't think that's an unreasonable approach. If we just migrate one component (nettle), we can make sure the migrated setup is OK and that your workflow feels sensible before going through the work of the other subprojects.
If we do that, I guess we'd need the following steps:
1. migrate the nettle cvs directory to a git repository.
2. cvs rm all those files from the cvs tree (as usual, we can't cvs rm the directories themselves).
3. At some later time, migrate the lsh cvs repository to git. Should the old nettle subdirectory be excluded somehow? Perhaps not, if I want to be able to check out old lsh versions from git.
Regards, /Niels