Mercurial > hg-git
annotate hggit/git2hg.py @ 1116:bd1a01f98154
cleanup: wrap to 80 chars
author | Sean Farley <sean@farley.io> |
---|---|
date | Mon, 27 Nov 2017 19:05:08 -0500 |
parents | 8ed6c0cae9b8 |
children |
rev | line source |
---|---|
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
1 # git2hg.py - convert Git repositories and commits to Mercurial ones |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
2 |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
3 import urllib |
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
4 from dulwich.objects import Commit, Tag |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
5 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1111
diff
changeset
|
6 |
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
7 def find_incoming(git_object_store, git_map, refs): |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
8 '''find what commits need to be imported |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
9 |
1116 | 10 git_object_store: is a dulwich object store. |
11 git_map: is a map with keys being Git commits that have already been | |
12 imported | |
13 refs: is a map of refs to SHAs that we're interested in. | |
14 | |
15 ''' | |
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
16 |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
17 done = set() |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
18 commit_cache = {} |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
19 |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
20 # sort by commit date |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
21 def commitdate(sha): |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
22 obj = git_object_store[sha] |
1111
f1c4e2ba8ff9
cleanup: fix whitespace around operators
Sean Farley <sean@farley.io>
parents:
1007
diff
changeset
|
23 return obj.commit_time - obj.commit_timezone |
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
24 |
793
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
25 # get a list of all the head shas |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
26 def get_heads(refs): |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
27 todo = [] |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
28 seenheads = set() |
1007
2cd253b6c8ab
git2hg: protect incoming from looking up HEAD
Sean Farley <sean@farley.io>
parents:
845
diff
changeset
|
29 for ref, sha in refs.iteritems(): |
793
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
30 # refs could contain refs on the server that we haven't pulled down |
1007
2cd253b6c8ab
git2hg: protect incoming from looking up HEAD
Sean Farley <sean@farley.io>
parents:
845
diff
changeset
|
31 # the objects for; also make sure it's a sha and not a symref |
2cd253b6c8ab
git2hg: protect incoming from looking up HEAD
Sean Farley <sean@farley.io>
parents:
845
diff
changeset
|
32 if ref != 'HEAD' and sha in git_object_store: |
793
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
33 obj = git_object_store[sha] |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
34 while isinstance(obj, Tag): |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
35 obj_type, sha = obj.object |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
36 obj = git_object_store[sha] |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
37 if isinstance(obj, Commit) and sha not in seenheads: |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
38 seenheads.add(sha) |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
39 todo.append(sha) |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
40 |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
41 todo.sort(key=commitdate, reverse=True) |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
42 return todo |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
43 |
794
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
44 def get_unseen_commits(todo): |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
45 '''get all unseen commits reachable from todo in topological order |
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
46 |
794
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
47 'unseen' means not reachable from the done set and not in the git map. |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
48 Mutates todo and the done set in the process.''' |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
49 commits = [] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
50 while todo: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
51 sha = todo[-1] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
52 if sha in done or sha in git_map: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
53 todo.pop() |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
54 continue |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
55 assert isinstance(sha, str) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
56 if sha in commit_cache: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
57 obj = commit_cache[sha] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
58 else: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
59 obj = git_object_store[sha] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
60 commit_cache[sha] = obj |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
61 assert isinstance(obj, Commit) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
62 for p in obj.parents: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
63 if p not in done and p not in git_map: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
64 todo.append(p) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
65 # process parents of a commit before processing the |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
66 # commit itself, and come back to this commit later |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
67 break |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
68 else: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
69 commits.append(sha) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
70 done.add(sha) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
71 todo.pop() |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
72 |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
73 return commits |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
74 |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
75 todo = get_heads(refs) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
76 commits = get_unseen_commits(todo) |
788
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
77 |
789
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
78 return GitIncomingResult(commits, commit_cache) |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
79 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1111
diff
changeset
|
80 |
789
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
81 class GitIncomingResult(object): |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
82 '''struct to store result from find_incoming''' |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
83 def __init__(self, commits, commit_cache): |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
84 self.commits = commits |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
85 self.commit_cache = commit_cache |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
86 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1111
diff
changeset
|
87 |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
88 def extract_hg_metadata(message, git_extra): |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
89 split = message.split("\n--HG--\n", 1) |
835
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
90 # Renames are explicitly stored in Mercurial but inferred in Git. For |
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
91 # commits that originated in Git we'd like to optionally infer rename |
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
92 # information to store in Mercurial, but for commits that originated in |
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
93 # Mercurial we'd like to disable this. How do we tell whether the commit |
1116 | 94 # originated in Mercurial or in Git? We rely on the presence of extra |
95 # hg-git fields in the Git commit. | |
96 # | |
97 # - Commits exported by hg-git versions past 0.7.0 always store at least | |
98 # one hg-git field. | |
99 # | |
845
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
100 # - For commits exported by hg-git versions before 0.7.0, this becomes a |
1116 | 101 # heuristic: if the commit has any extra hg fields, it definitely |
102 # originated in Mercurial. If the commit doesn't, we aren't really sure. | |
103 # | |
845
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
104 # If we think the commit originated in Mercurial, we set renames to a |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
105 # dict. If we don't, we set renames to None. Callers can then determine |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
106 # whether to infer rename information. |
835
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
107 renames = None |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
108 extra = {} |
799
7ff4913e72df
git2hg.extract_hg_metadata: use None as default branch value
Siddharth Agarwal <sid0@fb.com>
parents:
795
diff
changeset
|
109 branch = None |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
110 if len(split) == 2: |
835
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
111 renames = {} |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
112 message, meta = split |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
113 lines = meta.split("\n") |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
114 for line in lines: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
115 if line == '': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
116 continue |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
117 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
118 if ' : ' not in line: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
119 break |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
120 command, data = line.split(" : ", 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
121 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
122 if command == 'rename': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
123 before, after = data.split(" => ", 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
124 renames[after] = before |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
125 if command == 'branch': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
126 branch = data |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
127 if command == 'extra': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
128 k, v = data.split(" : ", 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
129 extra[k] = urllib.unquote(v) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
130 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
131 git_fn = 0 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
132 for field, data in git_extra: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
133 if field.startswith('HG:'): |
835
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
134 if renames is None: |
6c9c40d9e9c1
git2hg: while extracting metadata, detect which VCS commits were made in
Siddharth Agarwal <sid0@fb.com>
parents:
799
diff
changeset
|
135 renames = {} |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
136 command = field[3:] |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
137 if command == 'rename': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
138 before, after = data.split(':', 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
139 renames[urllib.unquote(after)] = urllib.unquote(before) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
140 elif command == 'extra': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
141 k, v = data.split(':', 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
142 extra[urllib.unquote(k)] = urllib.unquote(v) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
143 else: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
144 # preserve ordering in Git by using an incrementing integer for |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
145 # each field. Note that extra metadata in Git is an ordered list |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
146 # of pairs. |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
147 hg_field = 'GIT%d-%s' % (git_fn, field) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
148 git_fn += 1 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
149 extra[urllib.quote(hg_field)] = urllib.quote(data) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
150 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
151 return (message, renames, branch, extra) |