Esempio n. 1
0
def remote(input=None, output=None):
    if not input: input = os.fdopen(0, 'r', 0)
    if not output: output = os.fdopen(1, 'w', 0)
    remote_root = pickle.load(input)
    os.chdir(remote_root)
    remote_root = os.getcwd()
    pickle.dump(discover_repos(), output)
    while True:
        repo = pickle.load(input)
        if not repo:
            break
        os.chdir(remote_root)
        os.chdir(repo)
        revs = filter_existing_revs(list_reachable_revs())
        fetchrev.receiver(input, output)
        output.write('F')
        fetchrev.sender(input, output, revs, is_local=False)
Esempio n. 2
0
def local(input, output, args):
    local_root, remote_root = args
    pickle.dump(remote_root, output)
    os.chdir(local_root)
    local_root = os.getcwd()
    local_repos = set(discover_repos())
    remote_repos = set(pickle.load(input))

    for item in (local_repos - remote_repos):
        sys.stderr.write('WARNING: {} is only on local side\n'.format(item))
    for item in (remote_repos - local_repos):
        sys.stderr.write('WARNING: {} is only on remote side\n'.format(item))

    for repo in (local_repos & remote_repos):
        sys.stderr.write('------- local->remote {} --------\n'.format(repo))
        pickle.dump(repo, output)
        os.chdir(repo)
        revs = filter_existing_revs(list_reachable_revs())
        fetchrev.sender(input, output, revs, is_local=True)
        input.read(1)
        sys.stderr.write('------- remote->local {} --------\n'.format(repo))
        fetchrev.receiver(input, output)
        os.chdir(local_root)
    pickle.dump(None, output)