2

我想了解如何为 jgit 实现替代 dfs 后端,我正在查看 https://github.com/eclipse/jgit/blob/master/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs /InMemoryRepository.java 为例。

我很难弄清楚如何将其设置为独立的 git 守护进程。基本上,我希望能够启动一个 java 进程,它是单个(空)内存中 git 存储库的 git 服务器,然后我希望能够使用 git 客户端从该存储库守护进程中推/拉。

4

1 回答 1

2

你需要做这样的事情:

private static final class RepositoryResolverImplementation implements
        RepositoryResolver<DaemonClient> {
    @Override
    public Repository open(DaemonClient client, String name)
            throws RepositoryNotFoundException,
            ServiceNotAuthorizedException, ServiceNotEnabledException,
            ServiceMayNotContinueException {
        InMemoryRepository repo = repositories.get(name);
        if (repo == null) {
            repo = new InMemoryRepository(
                    new DfsRepositoryDescription(name));
            repositories.put(name, repo);
        }
        return repo;
    }
}

private static Map<String, InMemoryRepository> repositories = new HashMap<String, InMemoryRepository>();

public static void main(String[] args) throws IOException {
    Daemon server = new Daemon(new InetSocketAddress(9418));
    boolean uploadsEnabled = true;
    server.getService("git-receive-pack").setEnabled(uploadsEnabled);
    server.setRepositoryResolver(new RepositoryResolverImplementation());
    server.start();
}

然后您应该能够运行git clone git://localhost/repo.git并且将创建一个新的内存中的“repo.git”存储库。如果要上传,请确保将 uploadsEnabled 设置为“true” - 默认情况下,它设置为“false”。

于 2013-01-30T23:15:08.183 回答