Mercurial > hg-git
annotate hggit/git2hg.py @ 1115:8ed6c0cae9b8
cleanup: add some blank lines
author | Sean Farley <sean@farley.io> |
---|---|
date | Mon, 27 Nov 2017 18:46:07 -0500 |
parents | f1c4e2ba8ff9 |
children | bd1a01f98154 |
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 |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
10 git_object_store is a dulwich object store. |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
11 git_map is a map with keys being Git commits that have already been imported |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
12 refs is a map of refs to SHAs that we're interested in.''' |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
13 |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
14 done = set() |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
15 commit_cache = {} |
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 # sort by commit date |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
18 def commitdate(sha): |
e734d71cc558
git_handler: move get_git_incoming to a separate module
Siddharth Agarwal <sid0@fb.com>
parents:
diff
changeset
|
19 obj = git_object_store[sha] |
1111
f1c4e2ba8ff9
cleanup: fix whitespace around operators
Sean Farley <sean@farley.io>
parents:
1007
diff
changeset
|
20 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
|
21 |
793
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
22 # 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
|
23 def get_heads(refs): |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
24 todo = [] |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
25 seenheads = set() |
1007
2cd253b6c8ab
git2hg: protect incoming from looking up HEAD
Sean Farley <sean@farley.io>
parents:
845
diff
changeset
|
26 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
|
27 # 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
|
28 # 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
|
29 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
|
30 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
|
31 while isinstance(obj, Tag): |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
32 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
|
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 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
|
35 seenheads.add(sha) |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
36 todo.append(sha) |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
37 |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
38 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
|
39 return todo |
388944fca782
git2hg.find_incoming: move head-finding code into a function
Siddharth Agarwal <sid0@fb.com>
parents:
792
diff
changeset
|
40 |
794
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
41 def get_unseen_commits(todo): |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
42 '''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
|
43 |
794
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
44 '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
|
45 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
|
46 commits = [] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
47 while todo: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
48 sha = todo[-1] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
49 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
|
50 todo.pop() |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
51 continue |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
52 assert isinstance(sha, str) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
53 if sha in commit_cache: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
54 obj = commit_cache[sha] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
55 else: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
56 obj = git_object_store[sha] |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
57 commit_cache[sha] = obj |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
58 assert isinstance(obj, Commit) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
59 for p in obj.parents: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
60 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
|
61 todo.append(p) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
62 # 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
|
63 # 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
|
64 break |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
65 else: |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
66 commits.append(sha) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
67 done.add(sha) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
68 todo.pop() |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
69 |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
70 return commits |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
71 |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
72 todo = get_heads(refs) |
1350e43e662f
git2hg.find_incoming: move graph traversal into a function
Siddharth Agarwal <sid0@fb.com>
parents:
793
diff
changeset
|
73 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
|
74 |
789
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
75 return GitIncomingResult(commits, commit_cache) |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
76 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1111
diff
changeset
|
77 |
789
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
78 class GitIncomingResult(object): |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
79 '''struct to store result from find_incoming''' |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
80 def __init__(self, commits, commit_cache): |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
81 self.commits = commits |
77416ddca136
git2hg: return a struct from find_incoming
Siddharth Agarwal <sid0@fb.com>
parents:
788
diff
changeset
|
82 self.commit_cache = commit_cache |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
83 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1111
diff
changeset
|
84 |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
85 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
|
86 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
|
87 # 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
|
88 # 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
|
89 # 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
|
90 # Mercurial we'd like to disable this. How do we tell whether the commit |
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
|
91 # originated in Mercurial or in Git? We rely on the presence of extra hg-git |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
92 # fields in the Git commit. |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
93 # - Commits exported by hg-git versions past 0.7.0 always store at least one |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
94 # hg-git field. |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
95 # - For commits exported by hg-git versions before 0.7.0, this becomes 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
|
96 # heuristic: if the commit has any extra hg fields, it definitely originated |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
97 # in Mercurial. If the commit doesn't, we aren't really sure. |
4f0b86da5e72
git2hg: update comment now that presence of hg fields is no longer a heuristic
Siddharth Agarwal <sid0@fb.com>
parents:
835
diff
changeset
|
98 # 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
|
99 # 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
|
100 # 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
|
101 renames = None |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
102 extra = {} |
799
7ff4913e72df
git2hg.extract_hg_metadata: use None as default branch value
Siddharth Agarwal <sid0@fb.com>
parents:
795
diff
changeset
|
103 branch = None |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
104 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
|
105 renames = {} |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
106 message, meta = split |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
107 lines = meta.split("\n") |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
108 for line in lines: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
109 if line == '': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
110 continue |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
111 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
112 if ' : ' not in line: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
113 break |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
114 command, data = line.split(" : ", 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
115 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
116 if command == 'rename': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
117 before, after = data.split(" => ", 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
118 renames[after] = before |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
119 if command == 'branch': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
120 branch = data |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
121 if command == 'extra': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
122 k, v = data.split(" : ", 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
123 extra[k] = urllib.unquote(v) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
124 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
125 git_fn = 0 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
126 for field, data in git_extra: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
127 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
|
128 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
|
129 renames = {} |
795
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
130 command = field[3:] |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
131 if command == 'rename': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
132 before, after = data.split(':', 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
133 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
|
134 elif command == 'extra': |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
135 k, v = data.split(':', 1) |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
136 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
|
137 else: |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
138 # 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
|
139 # 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
|
140 # of pairs. |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
141 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
|
142 git_fn += 1 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
143 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
|
144 |
c19835c3c60d
git_handler: move extract_hg_metadata into git2hg
Siddharth Agarwal <sid0@fb.com>
parents:
794
diff
changeset
|
145 return (message, renames, branch, extra) |