-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvert-scripts
executable file
·119 lines (115 loc) · 4.01 KB
/
convert-scripts
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/sh
set -eu
usage="Usage: $0 REPO OUT OUT_LOCKER"
repo="${1:?$usage}"
out="${2:?$usage}"
out_locker="${3:?$usage}"
here="$(readlink -f "$(dirname "$0")")"
tmp="$(mktemp -dt git-conversion.XXXXXX)"
trap 'rm -rf "$tmp"' EXIT
(cd "$repo"; "$here/reposurgeon/repotool" export) > "$tmp/scripts.svn"
patch -f -r - "$tmp/scripts.svn" < "$here/scripts.svn.patch" || {
mv "$tmp/scripts.svn.orig" "$tmp/scripts.svn"
patch -f -r - "$tmp/scripts.svn" < "$here/scripts.svn.patch.alt"
}
perl -0 -pe '
s/^(Node-(?:copyfrom-)?path: )(?!trunk|branches|tags)/$1root\//gm;
s/^(Node-(?:copyfrom-)?path: root)\/$/$1/gm;
s/^(Revision-number: 1)$/Node-path: root\nNode-kind: dir\nNode-action: add\nProp-content-length: 10\nContent-length: 10\n\nPROPS-END\n\n\1/m;
' "$tmp/scripts.svn" \
| svndumpfilter exclude --skip-missing-merge-sources --pattern 'trunk/locker*' 'branches/*/locker*' 'tags/*/locker*' 'root/locker*' 'branches/locker-dev*' \
> "$tmp/scripts.renamed.svn"
"$here/reposurgeon/reposurgeon" \
"verbose 1" \
"branchify trunk tags/* branches/* root" \
"read <$tmp/scripts.renamed.svn" \
"authors read <$here/scripts.map" \
"sourcetype svn" \
"prefer git" \
"blob </dev/null" \
"<923> add M 644 :1 server/common/oursrc/scripts-base/.keep" \
"<950> add M 644 :1 server/common/oursrc/nss-ldapd/.keep" \
"<1119> remove .gitignore" \
"<1119> delete --tagback" \
"<1120> delete" \
"<1294> add D server/common/oursrc/nss-ldapd/.keep" \
"<1178>|<1179> merge" \
"<1195>|<1198> merge" \
"<1209>|<1210> merge" \
"<1219>|<1220> merge" \
"<1503> add M 644 :1 server/common/oursrc/scripts-wizard/.keep" \
"<1684> unmerge" \
"<1673>,<1674> squash" \
"<1693> unmerge" \
"<1682>|<1693> merge" \
"<2495> unmerge" \
"write --legacy >$tmp/scripts.fi"
rm -fr "$out"
"$here/reposurgeon/reposurgeon" \
"read <$tmp/scripts.fi" \
"prefer git" \
"rebuild $out"
(
cd "$out"
git tag --points-at emptycommit-127^0 | xargs git tag -d
git tag -d emptycommit-1791 emptycommit-2287 emptycommit-2370 emptycommit-2381
git branch -d root
)
perl -0 -pe '
s/^(Node-(?:copyfrom-)?path: )(?!trunk|branches|tags)/$1root\//gm;
s/^(Node-(?:copyfrom-)?path: root)\/$/$1/gm;
s/^(Revision-number: 1)$/Node-path: root\nNode-kind: dir\nNode-action: add\nProp-content-length: 10\nContent-length: 10\n\nPROPS-END\n\n\1/m;
' "$tmp/scripts.svn" \
| svndumpfilter include --skip-missing-merge-sources --pattern 'trunk' 'trunk/locker*' 'branches/locker-dev' 'branches/locker-dev/locker*' 'root' 'root/locker*' \
> "$tmp/scripts-locker.renamed.svn"
"$here/reposurgeon/reposurgeon" \
"verbose 1" \
"branchify trunk tags/* branches/* root" \
"read <$tmp/scripts-locker.renamed.svn" \
"authors read <$here/scripts.map" \
"sourcetype svn" \
"prefer git" \
"paths sup locker" \
"blob <$here/ignore-all" \
"<359> add M 644 :1 cron/servers/.gitignore" \
"<359> add M 644 :1 cron/server-crontabs/.gitignore" \
"<359> add M 644 :1 cron/lock/.gitignore" \
"<359> add M 644 :1 cron/crontabs/.gitignore" \
"<1119> remove .gitignore" \
"<1119> delete --tagback" \
"<1120> delete" \
"<1259> delete" \
"<1262> unmerge" \
"<1404> unmerge" \
"<1415> squash --pushback" \
"<1547> unmerge" \
"<1548> unmerge" \
"<1550> unmerge" \
"<1693> delete" \
"<1697> delete" \
"<1698> delete" \
"<1724> unmerge" \
"<1730> unmerge" \
"<1791> unmerge" \
"<2066> delete" \
"<2246> delete" \
"<2591> delete" \
"<2253> remove etc/known_hosts" \
"<2253> delete" \
"<2286> unmerge" \
"<2309>|<2310> merge" \
"<2311>|<2312> merge" \
"<2314>|<2319> merge" \
"<2369>|<2370> merge" \
"<2380>|<2381> merge" \
"write --legacy >$tmp/scripts-locker.fi"
rm -fr "$out_locker"
"$here/reposurgeon/reposurgeon" \
"read <$tmp/scripts-locker.fi" \
"prefer git" \
"rebuild $out_locker"
(
cd "$out_locker"
git branch -d root
git branch -D locker-dev
)