35
return subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
37
def svncmd_uuid(repo):
38
cmd = "%s uuid %s" % (SVNLOOK, repo)
40
return p.stdout.read().strip()
42
def svncmd_info(repo, revision):
43
cmd = "%s info -r %s %s" % (SVNLOOK, revision, repo)
45
data = p.stdout.read().split("\n")
35
def svnlook(cmd, **kwargs):
36
args = [SVNLOOK] + cmd
37
return svnpubsub.util.check_output(args, **kwargs)
39
def svnlook_uuid(repo):
40
cmd = ["uuid", "--", repo]
41
return svnlook(cmd).strip()
43
def svnlook_info(repo, revision):
44
cmd = ["info", "-r", revision, "--", repo]
45
data = svnlook(cmd, universal_newlines=True).split("\n")
47
47
return {'author': data[0].strip(),
48
48
'date': data[1].strip(),
49
49
'log': "\n".join(data[3:]).strip()}
51
def svncmd_changed(repo, revision):
52
cmd = "%s changed -r %s %s" % (SVNLOOK, revision, repo)
51
def svnlook_changed(repo, revision):
52
cmd = ["changed", "-r", revision, "--", repo]
53
lines = svnlook(cmd, universal_newlines=True).split("\n")
56
line = p.stdout.readline()
60
59
(flags, filename) = (line[0:3], line[4:])
61
60
changed[filename] = {'flags': flags}
72
71
def main(repo, revision):
73
72
revision = revision.lstrip('r')
74
i = svncmd_info(repo, revision)
73
i = svnlook_info(repo, revision)
75
74
data = {'type': 'svn',
77
76
'id': int(revision),
79
'repository': svncmd_uuid(repo),
78
'repository': svnlook_uuid(repo),
80
79
'committer': i['author'],
84
data['changed'].update(svncmd_changed(repo, revision))
83
data['changed'].update(svnlook_changed(repo, revision))
85
84
body = json.dumps(data)
88
87
if __name__ == "__main__":
89
88
if len(sys.argv) not in (3, 4):
90
89
sys.stderr.write("invalid args\n")
93
92
main(*sys.argv[1:3])