git-remote-hg: improve sanitation of local repo urls
[git] / git_remote_helpers / hg / importer.py
1 import os.path
2 import sys
3
4 from git_remote_helpers.hg import hgimport
5 from git_remote_helpers.fastimport import processor, parser
6
7
8 class GitImporter(object):
9     def __init__(self, repo):
10         self.repo = repo
11
12     def handle_line(self):
13         # returns '' on EOF, '\n' on empty line
14         line = sys.stdin.readline()
15
16         if not line:
17             return False
18
19         self.outfile.write(line)
20
21         return True
22
23     def old_do_import(self, base):
24         self.outfile = open(os.path.join('.git', "export.log"), "wa")
25
26         more = True
27
28         while more:
29             more = self.handle_line()
30
31         self.outfile.close()
32
33     def do_import(self, base):
34         sources = ["-"]
35
36         dirname = self.repo.get_base_path(base)
37
38         if not os.path.exists(dirname):
39             os.makedirs(dirname)
40
41         marks_file = os.path.abspath(os.path.join(dirname, 'hg.marks'))
42
43         procc = hgimport.HgImportProcessor(self.repo.ui, self.repo)
44
45         if os.path.exists(marks_file):
46             procc.load_marksfile(marks_file)
47
48         processor.parseMany(sources, parser.ImportParser, procc)
49
50         procc.write_marksfile(marks_file)