git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
8a3cee617524a42aed553616a0b9551e5d7310c8 blob 2047 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
#!/usr/bin/env python
"""
Simulates svnrdump by replaying an existing dump from a file, taking care
of the specified revision range.
To simulate incremental imports the environment variable SVNRMAX can be set
to the highest revision that should be available.
"""
import sys
import os

if sys.hexversion < 0x02040000:
    # The limiter is the ValueError() calls. This may be too conservative
    sys.stderr.write("svnrdump-sim.py: requires Python 2.4 or later.\n")
    sys.exit(1)


def getrevlimit():
    var = 'SVNRMAX'
    if var in os.environ:
        return os.environ[var]
    return None


def writedump(url, lower, upper):
    if url.startswith('sim://'):
        filename = url[6:]
        if filename[-1] == '/':
            filename = filename[:-1]  # remove terminating slash
    else:
        raise ValueError('sim:// url required')
    f = open(filename, 'r')
    state = 'header'
    wroterev = False
    while(True):
        l = f.readline()
        if l == '':
            break
        if state == 'header' and l.startswith('Revision-number: '):
            state = 'prefix'
        if state == 'prefix' and l == 'Revision-number: %s\n' % lower:
            state = 'selection'
        if not upper == 'HEAD' and state == 'selection' and \
                l == 'Revision-number: %s\n' % upper:
            break

        if state == 'header' or state == 'selection':
            if state == 'selection':
                wroterev = True
            sys.stdout.write(l)
    return wroterev

if __name__ == "__main__":
    if not (len(sys.argv) in (3, 4, 5)):
        print("usage: %s dump URL -rLOWER:UPPER")
        sys.exit(1)
    if not sys.argv[1] == 'dump':
        raise NotImplementedError('only "dump" is supported.')
    url = sys.argv[2]
    r = ('0', 'HEAD')
    if len(sys.argv) == 4 and sys.argv[3][0:2] == '-r':
        r = sys.argv[3][2:].lstrip().split(':')
    if not getrevlimit() is None:
        r[1] = getrevlimit()
    if writedump(url, r[0], r[1]):
        ret = 0
    else:
        ret = 1
    sys.exit(ret)
debug log:

solving 8a3cee6175 ...
found 8a3cee6175 in git.git.git

Code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).