1#!tailor
2'''
3[DEFAULT]
4verbose = False
5target-module = None
6projects = project2
7
8[project1]
9root-directory = /tmp/tailor-tests
10source = svn:project1repo
11target = darcs:
12refill-changelogs = Yes
13state-file = project1.state
14before-commit = (maybe_skip, refill, p1_remap_authors)
15after-commit = checkpoint
16
17[svn:project1repo]
18repository = svn://some.server/svn
19module = project1
20use-propset = Yes
21
22[darcs:project1]
23repository = ~/darcs/project1
24
25[monotone:project1repo]
26repository = /tmp/db
27passphrase = simba
28
29[project2]
30root-directory = /tmp/tailor-tests
31source = darcs:project1
32target = svn:project2repo
33refill-changelogs = Yes
34state-file = project2.state
35before-commit = refill
36
37[svn:project2repo]
38
39[project3]
40root-directory = /tmp/tailor-tests
41source = svn:project3repo
42target = darcs:project3repo
43state-file = hidden
44
45[svn:project3repo]
46repository = svn://sample.org/svn
47module = /trunk
48subdir = plain
49
50[project4]
51state-file = ~/tailorize/project4.state
52source = svn:project3repo
53target = darcs:project4repo
54
55[darcs:project4repo]
56subdir = darcs
57look-for-adds = True
58
59[project5]
60source = cvs:project5srepo
61target = cvs:project5trepo
62
63[cvs:project5srepo]
64repository = /tmp/tailor-tests
65
66[cvs:project5trepo]
67repository = /tmp/tailor-tests
68tag-entries = False
69
70[project6]
71root-directory = ~/tailorizedp
72state-file = hidden
73source = darcs:
74target = hg:
75
76[hg:project6]
77subdir = project6
78
79[darcs:project6]
80repository = ~/WiP/tailor
81replace-badchars = { 'a': 'b' }
82'''
83
84def maybe_skip(context, changeset):
85    for e in changeset.entries:
86        if not context.darcs.isBoringFile(e):
87            return True
88    # What a bunch of boring entries! Skip the patch
89    return False
90
91def refill(context, changeset):
92    changeset.refillChangelog()
93    return True
94
95p1_authors_map = {
96    'lele': 'Lele Gaifax <lele@example.com>',
97    'x123': 'A man ... with a name to come',
98}
99
100def p1_remap_authors(context, changeset):
101    if changeset.author in p1_authors_map:
102        changeset.author = p1_authors_map[changeset.author]
103    return True
104
105def checkpoint(context, changeset):
106    if changeset.log.startswith('Release '):
107        context.target.tagWithCheckpoint(changeset.log)
108    return True
109