2

jgitの代替dfsバックエンドを実装する方法を学びたいと思っており、 https://github.com/eclipse/jgit/blob/master/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfsを見ています例として/InMemoryRepository.java

これをスタンドアロンのgitデーモンとして設定する方法を理解するのに苦労しています。基本的に、単一の (空の) メモリ内 git リポジトリの git サーバーである Java プロセスを開始できるようにしたいと考えています。次に、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 に答える