Show More
@@ -0,0 +1,64 b'' | |||||
|
1 | #!/bin/sh | |||
|
2 | ||||
|
3 | "$TESTDIR/hghave" git || exit 80 | |||
|
4 | ||||
|
5 | echo "[extensions]" >> $HGRCPATH | |||
|
6 | echo "convert=" >> $HGRCPATH | |||
|
7 | echo 'hgext.graphlog =' >> $HGRCPATH | |||
|
8 | echo '[convert]' >> $HGRCPATH | |||
|
9 | echo 'hg.usebranchnames = True' >> $HGRCPATH | |||
|
10 | echo 'hg.tagsbranch = tags-update' >> $HGRCPATH | |||
|
11 | ||||
|
12 | GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME | |||
|
13 | GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL | |||
|
14 | GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE | |||
|
15 | GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME | |||
|
16 | GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL | |||
|
17 | GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE | |||
|
18 | ||||
|
19 | count=10 | |||
|
20 | action() | |||
|
21 | { | |||
|
22 | GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000" | |||
|
23 | GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" | |||
|
24 | git "$@" >/dev/null 2>/dev/null || echo "git command error" | |||
|
25 | count=`expr $count + 1` | |||
|
26 | } | |||
|
27 | ||||
|
28 | glog() | |||
|
29 | { | |||
|
30 | hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@" | |||
|
31 | } | |||
|
32 | ||||
|
33 | convertrepo() | |||
|
34 | { | |||
|
35 | hg convert --datesort git-repo hg-repo | |||
|
36 | } | |||
|
37 | ||||
|
38 | # Build a GIT repo with at least 1 tag | |||
|
39 | mkdir git-repo | |||
|
40 | cd git-repo | |||
|
41 | git init >/dev/null 2>&1 | |||
|
42 | echo a > a | |||
|
43 | git add a | |||
|
44 | action commit -m "rev1" | |||
|
45 | action tag -m "tag1" tag1 | |||
|
46 | cd .. | |||
|
47 | ||||
|
48 | # Do a first conversion | |||
|
49 | convertrepo | |||
|
50 | ||||
|
51 | # Simulate upstream updates after first conversion | |||
|
52 | cd git-repo | |||
|
53 | echo b > a | |||
|
54 | git add a | |||
|
55 | action commit -m "rev2" | |||
|
56 | action tag -m "tag2" tag2 | |||
|
57 | cd .. | |||
|
58 | ||||
|
59 | # Perform an incremental conversion | |||
|
60 | convertrepo | |||
|
61 | ||||
|
62 | # Print the log | |||
|
63 | cd hg-repo | |||
|
64 | glog |
@@ -0,0 +1,19 b'' | |||||
|
1 | initializing destination hg-repo repository | |||
|
2 | scanning source... | |||
|
3 | sorting... | |||
|
4 | converting... | |||
|
5 | 0 rev1 | |||
|
6 | updating tags | |||
|
7 | scanning source... | |||
|
8 | sorting... | |||
|
9 | converting... | |||
|
10 | 0 rev2 | |||
|
11 | updating tags | |||
|
12 | o 3 "update tags" files: .hgtags | |||
|
13 | | | |||
|
14 | | o 2 "rev2" files: a | |||
|
15 | | | | |||
|
16 | o | 1 "update tags" files: .hgtags | |||
|
17 | / | |||
|
18 | o 0 "rev1" files: a | |||
|
19 |
@@ -203,6 +203,8 b' class converter_sink(object):' | |||||
203 | """Put tags into sink. |
|
203 | """Put tags into sink. | |
204 |
|
204 | |||
205 | tags: {tagname: sink_rev_id, ...} where tagname is an UTF-8 string. |
|
205 | tags: {tagname: sink_rev_id, ...} where tagname is an UTF-8 string. | |
|
206 | Return a pair (tag_revision, tag_parent_revision), or (None, None) | |||
|
207 | if nothing was changed. | |||
206 | """ |
|
208 | """ | |
207 | raise NotImplementedError() |
|
209 | raise NotImplementedError() | |
208 |
|
210 |
@@ -336,11 +336,14 b' class converter(object):' | |||||
336 | ctags[k] = self.map[v] |
|
336 | ctags[k] = self.map[v] | |
337 |
|
337 | |||
338 | if c and ctags: |
|
338 | if c and ctags: | |
339 | nrev = self.dest.puttags(ctags) |
|
339 | nrev, tagsparent = self.dest.puttags(ctags) | |
340 | # write another hash correspondence to override the previous |
|
340 | if nrev and tagsparent: | |
341 | # one so we don't end up with extra tag heads |
|
341 | # write another hash correspondence to override the previous | |
342 | if nrev: |
|
342 | # one so we don't end up with extra tag heads | |
343 | self.map[c] = nrev |
|
343 | tagsparents = [e for e in self.map.iteritems() | |
|
344 | if e[1] == tagsparent] | |||
|
345 | if tagsparents: | |||
|
346 | self.map[tagsparents[0][0]] = nrev | |||
344 |
|
347 | |||
345 | self.writeauthormap() |
|
348 | self.writeauthormap() | |
346 | finally: |
|
349 | finally: |
@@ -189,7 +189,7 b' class mercurial_sink(converter_sink):' | |||||
189 |
|
189 | |||
190 | newlines = sorted([("%s %s\n" % (tags[tag], tag)) for tag in tags]) |
|
190 | newlines = sorted([("%s %s\n" % (tags[tag], tag)) for tag in tags]) | |
191 | if newlines == oldlines: |
|
191 | if newlines == oldlines: | |
192 | return None |
|
192 | return None, None | |
193 | data = "".join(newlines) |
|
193 | data = "".join(newlines) | |
194 | def getfilectx(repo, memctx, f): |
|
194 | def getfilectx(repo, memctx, f): | |
195 | return context.memfilectx(f, data, False, False, None) |
|
195 | return context.memfilectx(f, data, False, False, None) | |
@@ -201,7 +201,7 b' class mercurial_sink(converter_sink):' | |||||
201 | [".hgtags"], getfilectx, "convert-repo", date, |
|
201 | [".hgtags"], getfilectx, "convert-repo", date, | |
202 | extra) |
|
202 | extra) | |
203 | self.repo.commitctx(ctx) |
|
203 | self.repo.commitctx(ctx) | |
204 | return hex(self.repo.changelog.tip()) |
|
204 | return hex(self.repo.changelog.tip()), hex(tagparent) | |
205 |
|
205 | |||
206 | def setfilemapmode(self, active): |
|
206 | def setfilemapmode(self, active): | |
207 | self.filemapmode = active |
|
207 | self.filemapmode = active |
@@ -18,12 +18,12 b' marked working directory as branch branc' | |||||
18 | % incremental conversion |
|
18 | % incremental conversion | |
19 | 2 c1 |
|
19 | 2 c1 | |
20 | pulling from branch0 into branch1 |
|
20 | pulling from branch0 into branch1 | |
21 |
|
|
21 | 4 changesets found | |
22 | 1 c2 |
|
22 | 1 c2 | |
23 | pulling from branch0 into branch2 |
|
23 | pulling from branch0 into branch2 | |
24 |
|
|
24 | 4 changesets found | |
25 | 0 c3 |
|
25 | 0 c3 | |
26 | pulling from branch2 into branch3 |
|
26 | pulling from branch2 into branch3 | |
27 |
|
|
27 | 5 changesets found | |
28 | pulling from branch1 into branch3 |
|
28 | pulling from branch1 into branch3 | |
29 | 1 changesets found |
|
29 | 1 changesets found |
General Comments 0
You need to be logged in to leave comments.
Login now