setting up for upload-pack functionality

This commit is contained in:
Scott Chacon 2009-04-26 17:56:16 -07:00
parent 92c8b368cd
commit 8992ea23c4
2 changed files with 20 additions and 10 deletions

View File

@ -44,9 +44,9 @@ def gclone(ui, git_url, hg_repo_path=None):
node = git.remote_head('origin')
hg.update(dest_repo, node)
def gpush(ui, repo, remote_name):
# determine new repo name
dest_repo.ui.status(_("pushing to git url\n"))
def gpush(ui, repo, remote_name='origin'):
git = GitHandler(repo, ui)
git.push(remote_name)
def gpull(ui, repo):
dest_repo.ui.status(_("pulling from git url\n"))
@ -60,9 +60,9 @@ cmdtable = {
'Clone a git repository into an hg repository.',
),
"gpush":
(gpush,
[('m', 'merge', None, _('merge automatically'))],
_('hg gpush remote')),
(gpush, [], _('hg gpush remote')),
"gpull":
(gpull, [], _('hg gpull [--merge] remote')),
(gpull,
[('m', 'merge', None, _('merge automatically'))],
_('hg gpull [--merge] remote')),
}

View File

@ -18,11 +18,12 @@ class GitHandler(object):
self.load_map()
self.load_config()
# make the git data directory
def init_if_missing(self):
# make the git data directory
git_hg_path = os.path.join(self.repo.path, 'git')
os.mkdir(git_hg_path)
dulwich.repo.Repo.init_bare(git_hg_path)
if not os.path.exists(git_hg_path):
os.mkdir(git_hg_path)
dulwich.repo.Repo.init_bare(git_hg_path)
def load_git(self):
git_dir = os.path.join(self.repo.path, 'git')
@ -66,6 +67,12 @@ class GitHandler(object):
self.import_git_objects(remote_name)
self.save_map()
def push(self, remote_name):
self.ui.status(_("pushing to : " + remote_name + "\n"))
self.export_git_objects()
self.upload_pack(remote_name)
self.save_map()
# TODO: make these actually save and recall
def remote_add(self, remote_name, git_url):
self._config['remote.' + remote_name + '.url'] = git_url
@ -79,6 +86,9 @@ class GitHandler(object):
if head == 'HEAD':
return self._map[sha]
return None
def upload_pack(self, remote_name):
self.ui.status(_("upload pack\n"))
def fetch_pack(self, remote_name):
git_url = self.remote_name_to_url(remote_name)